求助一个两头加长直线的lsp。详见帖子内容。
有时候不规则的地下室轴线会有很多小角度的斜交,肉眼看起来会是感觉一条直线的,我希望有个命令能够框选所选的轴线,使他能两端都加长如1000mm,已经知道cad的 len的命令。 但是他只能一端一端的点,效率太低,希望那位高手能在len的命令上再优化一下,做成能够框选直线的。谢谢大家。
(defun c:test()
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(if (= (getvar "userr1") 0) (setvar "userr1" 1000))
(if (= (setq jcjl (getreal (strcat "\n加长距离<" (rtos (getvar "userr1")) ">:"))) nil)
(setq jcjl (getvar "userr1"))
(setvar "userr1" jcjl)
)
(while (setq p1 (getpoint "\n左上角点<回车结束程序>:"))
(if (setq p2 (getcorner p1 "\n右下角点:"))
(if (setq ssa (ssget "w" p1 p2 '((0 . "LINE"))))
(progn
(setq i 0n (sslength ssa))
(repeat n
(setq ent (ssname ssa i)
i (1+ i)
dxf (entget ent)
pt1 (cdr (assoc 10 dxf))
pt2 (cdr (assoc 11 dxf))
)
(command "_lengthen" "de" jcjl (list ent pt1) (list ent pt2) "")
)
)
)
)
)
(command "_undo" "e")
(setvar "cmdecho" cm)
(princ)
)
本帖最后由 zxjing 于 2011-3-5 09:57 编辑
试试吧,本人lisp超菜
(defun c:tt()
(vl-load-com)
(setvar "osmode" 0)
(setq ss (ssget))
(setq chang (getreal "\n请输入增量"))
(setq n 0)
(repeat (sslength ss)
(setq name (ssname ss n))
(setq pta (vlax-curve-getStartPoint name))
(setq ptb (vlax-curve-getendPoint name))
(command "lengthen" "de" chang (list name pta)"")
(command "lengthen" "de" chang (list name ptb)"")
(setq n (1+ n))
)
)
稍微修改了一下楼上的帖子,使之通杀 line 与pline
(defun c:tt()
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(if (= (getvar "userr1") 0) (setvar "userr1" 1000))
(if (= (setq jcjl (getreal (strcat "\n加长距离<" (rtos (getvar "userr1")) ">:"))) nil)
(setq jcjl (getvar "userr1"))
(setvar "userr1" jcjl)
)
(while (setq p1 (getpoint "\n左上角点<回车结束程序>:"))
(if (setq p2 (getcorner p1 "\n右下角点:"))
(if (setq ssa (ssget "w" p1 p2 '((0 . "*LINE"))))
(progn
(setq i 0n (sslength ssa))
(repeat n
(setq ent (ssname ssa i)i (1+ i))
(setq pt1 (vlax-curve-getStartPoint ent))
(setq pt2 (vlax-curve-getendPoint ent))
(command "_lengthen" "de" jcjl (list ent pt1) (list ent pt2) "")
)
)
)
)
)
(command "_undo" "e")
(setvar "cmdecho" cm)
(princ)
)
回复 zxjing 的帖子
谢谢楼主的分享
收藏,学习了新东西 回复 zxjing 的帖子
如果能用鼠标所点取的两点来代替输入值那就更完美了! 回复 669423907 的帖子
不太清楚楼上具体啥意思?
大概是(getdist "\n请输入增量") 回复 zxjing 的帖子
用鼠标左键单击的第一点与第二点的距离代替输入(也可输入)
;; e派工具箱之:qxss
页:
[1]