相对于上次复制位置的复制
大家好,您知道如何在“复制”命令上选择常规方向并保持相对于基点的复制吗?我想这样做,但希望复制距离是相对于最后一个复制点的。
如果不清楚,我将举一个例子:
在点0,0,0处创建一个圆。
我希望沿x轴每隔10英尺复制一次圆,复制距离为100英尺。而不是连续输入10,20,30,40,50等复制点。从基点0,0,0开始,我希望从0,0,0开始,但输入,对于距离,输入10,10,10,10,并使每个复制的圆从最后一个复制点向前移动10英尺或我需要的任何距离。
在现实生活中,这些点对我来说是不同的,所以它不会是一个恒定的10英尺,或者一个均匀的长度,它会有所不同。
看起来一个简单的LISP例程可以处理这个问题,但我想知道在我重新发明烤面包机烤箱之前,autocad中是否存在这个函数。。。
提前感谢! 既然复制步骤是恒定的,为什么不使用ARRAY命令呢? Psst MSasu。。。OP说,
烤面包机烤箱?我想你刚刚发明了它。。。 我会使用临时跟踪点,但这可能需要大量点击。 从未听说过烤面包机烤箱(不是烤面包机)?我现在开始觉得自己老了,我才30多岁。。。 听起来cad中并没有这个命令,所以我只起草一个lisp,应该很简单。
谢谢 下面是一个相对简单的程序:
(defun c:copyrel ( / b i l p q s )
(if
(and
(setq s (ssget "_:L"))
(setq p (getpoint "\nSpecify Base Point: "))
(setq b (vlax-3D-point (trans p 1 0)))
)
(progn
(repeat (setq i (sslength s))
(setq l (cons (vlax-ename->vla-object (ssname s (setq i (1- i)))) l))
)
(while (setq q (getpoint "\nSpecify Second Point: " p))
(foreach x l (vla-move (vla-copy x) b (vlax-3D-point (trans q 1 0))))
(setq p q)
)
)
)
(princ)
)
(vl-load-com)
(princ)
或者,如果您安装了Express Tools:
(defun c:copyrel ( / b i l o p q s )
(if
(and
(setq s (ssget "_:L"))
(setq p (getpoint "\nSpecify Base Point: "))
(setq b (vlax-3D-point (trans p 1 0)))
)
(progn
(repeat (setq i (sslength s))
(setq l (cons (vlax-ename->vla-object (ssname s (setq i (1- i)))) l))
)
(while (setq q (acet-ss-drag-move s p "\nSpecify Second Point: " 0 0))
(setq s (ssadd))
(foreach x l
(vla-move (setq o (vla-copy x)) b (vlax-3D-point (trans q 1 0)))
(ssadd (vlax-vla-object->ename o) s)
)
(setq p q)
)
)
)
(princ)
)
(vl-load-com)
(princ) 李,现在你已经去做了。。。我最近一直在尝试新的东西,也遇到过一些老帖子,在这些帖子中,你最慷慨地为他人提供帮助,而现在你却对我这样做了!
上帝保佑你, 很好,李。。。我还使用acet ss drag move和acet ss drag rotate来执行CopyRotate(CORO)命令。
页:
[1]
2