chupj 发表于 2008-6-30 17:28:00

[求助]高手帮改下

<p>(defun c:mj()<br/>&nbsp;&nbsp; (setvar "cmdecho" 0)<br/>&nbsp;&nbsp; (setq pt (getpoint"\n"))<br/>&nbsp;&nbsp; (while pt<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "cecolor" "1")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "bpoly" pt "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq en (entlast))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (/= en nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "area" "o" en)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq aa (getvar "area"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (redraw en 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "" (rtos aa 2)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entdel en)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "cecolor" "bylayer")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt (getpoint "\n"))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (prinl)&nbsp; <br/>(vl-load-com)<br/>)&nbsp; <br/>(princ "\n使用命令:mj。")</p><p></p><p>这个是统计面积的,想改个统计线段长度的</p><p>很久没搞过,整了一下午,没弄出来,</p><p>帮改 下&nbsp;&nbsp; ,谢谢了</p>

byghbcx 发表于 2008-6-30 21:43:00

(vla-get-length (vlax-ename-&gt;vla-object en))

chupj 发表于 2008-7-1 09:54:00

<p>两年多没用过了</p><p>当年还是学点皮毛</p><p>楼上的看不懂啊。。。。。。。。。。。。。。。</p>

chupj 发表于 2008-7-1 10:54:00

(defun c:tt (/ ELST LINEOBJ LLST SEL)
(vl-load-com)
(if (setq sel (ssget '((0 . "LINE"))))
    (progn
      (defun sel->ent (sel / i lst)
    (setq i 0)
    (repeat    (sslength sel)
      (setq lst (cons (ssname sel i) lst))
      (setq i (1+ i))
    )
    lst
      )
      (setq elst (vl-sort (sel->ent sel)
            '(lambda (x y)
               (>    (cadr (assoc 10 (entget x)))
                (cadr (assoc 10 (entget y)))
               )
               )
         )
      )
      (foreach e elst
    (setq LineObj (vlax-ename->vla-object e))
    (setq llst (cons (RTOS (vla-get-Length LineObj) 2 4) llst))
      )
      (princ "线的长度表: ")
      (princ llst)
    )
)
(princ)
)

chupj 发表于 2008-7-1 10:56:00

本帖最后由 作者 于 2008-7-1 10:59:07 编辑 <br /><br /> <p>在以前的版面上找到的</p><p>但是我要输入EXCEL表上(竖排)</p><p>这个程序不是很方便啊</p><p></p><p>而且只能统计直线</p><p>多段线就不行了</p>

chupj 发表于 2008-7-1 11:14:00

本帖最后由 作者 于 2008-7-1 11:32:01 编辑


(defun c:mj ()
(vl-load-com)
(setq a (vla-get-length
(vlax-ename->vla-object (car (entsel)))) )
)
我了解2楼意思了
但怎么才加入循环语句?
有N多的线段要分开统计长度啊
在线等啊~~~~~~~~~

linhui12 发表于 2008-7-1 21:15:00

本帖最后由 作者 于 2008-7-1 22:00:12 编辑 <br /><br /> <p></p><p>以上工具也是论坛里下的,希望对你有所帮助.</p><p>命令:LOOKAT,</p><p>功能:显示被选线的种类和长度</p>
页: [1]
查看完整版本: [求助]高手帮改下