求各点总距离
依次选中各点,求总距离,想法是先画pl线,统计pl线长度,然后删除,但是不能正确执行,请帮忙看看是什么问题;;求各点总距离(defun C:tt ()
(setq gp1 (getpoint))
(command "pline" gp1)
(while (> (getvar "cmdactive") 0) (command pause))
(vl-load-com)
(setq ent (entlast))
(setq curve-obj (vlax-ename->vla-object (car ent)))
(setq leng (vlax-curve-getDistAtParam
curve-obj
(vlax-curve-getEndParam curve-obj)
)
)
(command "ERASE" ent "")
(princ leng)
)
(defun C:tt ()
(setq gp1 (getpoint))
(command "pline" gp1)
(while (> (getvar "cmdactive") 0) (command pause))
(setq ent (entlast))
(command "lengthen" ent "")
(setq leng (getvar "perimeter"))
(command "ERASE" ent "")
(print leng)
(princ)
) 谢谢楼上,也多谢ljpnb给了另一个方法 分享下另一个方法嘛 ljpnb的,再次谢谢
(defun c:dtt ()
(setq p1 (getpoint "\n选择起点:")dis 0)
(while (setq p2 (getpoint p1 "\n选择起点:"))
(setq dis (+ (distance p1 p2) dis))
(setq p1 p2)
)
(princ (strcat "各点的总长= " (rtos dis)))
(princ)
) 本帖最后由 mandala 于 2011-7-5 22:25 编辑
你的lsp问题在这里:
(defun C:tt ()
(setq gp1 (getpoint))
(command "pline" gp1)
(while (> (getvar "cmdactive") 0) (command pause))
(vl-load-com)
(setq ent (entlast))
(setq curve-obj (vlax-ename->vla-object (car ent))) >>>>>>改成 (setq curve-obj (vlax-ename->vla-object ent))
(setq leng (vlax-curve-getDistAtParam
curve-obj
(vlax-curve-getEndParam curve-obj)
)
)
(command "ERASE" ent "")
(princ leng)
)
entlast跟entsel的结果是有区别滴……
如果单纯是为了完成主贴的任务,我倒觉得一楼、二楼的思路比5楼要更具实用性,因为更直观。虽然5楼的lsp不用连线,但带来的后果是结果的不可靠性——选点时,实际操作中我们可能会漏掉,或者多点了那么一个点。
在lisp编程时,往往是走了一点弯路的解决方案却偏偏是最实用的方案。 本帖最后由 chengx2000 于 2011-7-5 22:34 编辑
回复 mandala 的帖子
请问楼主系统变量“cmdactive”控制什么的,”(< (getvar "cmdactive") 0)“是否表示输入了“Esc”?
命令看考中这么写的:
1 激活普通命令
2 激活普通命令和透明命令
4 激活脚本
8 激活对话框
16 激活 DDE
32 激活 AutoLISP(仅对 ObjectARX 定义的命令可见)
64 激活 ObjectARX 命令
本帖最后由 mandala 于 2011-7-6 09:36 编辑
chengx2000 发表于 2011-7-5 22:32 http://bbs.mjtd.com/static/image/common/back.gif
回复 mandala 的帖子
请问楼主系统变量“cmdactive”控制什么的,”(< (getvar "cmdactive") 0)“是否表 ...
简单的说该变量就是判断cad命令是否还在进行中。如果还在进行,那么pause,等待下一步输入。具体可自己查一下cad系统变量大全。
另外我不是楼主,是楼上。
本帖最后由 adc 于 2011-7-6 11:33 编辑
回复 mandala 的帖子
看来细节的东西要遇到具体问题才更清楚,谢谢,如果要加一个执行过程中退出时,删除以前画的线要怎样处理?
页:
[1]
2