急求一个让直线等间距分布的程序!
有若干平行的直线长短不一,间距不等,能不能实现框选所有直线,然后两端的直线不动,程序自动移动中间的若干直线,最终实现各平行线之间间距相等?要求直线只在垂线方向移动,两端直线不动,在各种坐标系下均可完美运行,请高手出手相助!谢谢啦!(defun c:tt(/ a b ddy dy i lst n nptlst ptlst ss ssn ylst)
(if
(setq ss (ssget '((0 . "line"))))
(progn
(setq i -1
lst nil
)
(while (setq ssn (ssname ss (setq i (1+ i))))
(setq lst (cons ssn lst))
)
(setq lst(vl-sort lst '(lambda(x y)(>(caddr(assoc 10 (entget x)))(caddr(assoc 10 (entget y)))))))
(setq ptlst(mapcar '(lambda(x)(cdr(assoc 10 (entget x))))lst))
(setq dy(- (setq a(cadr(car ptlst)))(setq b(cadr(last ptlst)))))
(setq n(length lst)
ddy(/ dy (1- n)))
(setq ylst (list b))
(setq i 1)
(repeat (1- n)
(setq ylst(cons (+ b (* i ddy))ylst))
(setq i (1+ i))
)
(setq nptlst(mapcar '(lambda(x y) (list (car x)y))ptlst ylst))
(setq lst(mapcar 'list lst ptlst nptlst))
(foreach a lst(command "move" (car a)""(cadr a)(last a)))
)
)
(princ)
) 陈进佳 发表于 2016-3-27 10:54 static/image/common/back.gif
没反应呢,麻烦再看看,测试图已上传
你一开始能表示清楚点或者给个示意图?
测试对平行X轴的平行线有效 陈进佳 发表于 2016-3-27 11:14 static/image/common/back.gif
你一开始能表示清楚点或者给个示意图?
不好意思,测试图中只是世界坐标系的情况,请把其他坐标系的情况考虑进去,谢谢! cad2011 测试,DIV 命令可以 本帖最后由 Gray-wolf 于 2016-7-12 00:56 编辑
查看附件
cad2011 测试,DIV 命令可以 框选直线,等距分布。
页:
[1]
2