EntDraught 发表于 2022-7-5 15:51:57

相对于上次复制位置的复制

大家好,
 
您知道如何在“复制”命令上选择常规方向并保持相对于基点的复制吗?我想这样做,但希望复制距离是相对于最后一个复制点的。
 
如果不清楚,我将举一个例子:
 
在点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中是否存在这个函数。。。
 
提前感谢!

MSasu 发表于 2022-7-5 16:00:54

既然复制步骤是恒定的,为什么不使用ARRAY命令呢?

RobDraw 发表于 2022-7-5 16:03:44

Psst MSasu。。。OP说,
 

SAFeSTeR 发表于 2022-7-5 16:11:33

烤面包机烤箱?我想你刚刚发明了它。。。

RobDraw 发表于 2022-7-5 16:12:17

我会使用临时跟踪点,但这可能需要大量点击。

EntDraught 发表于 2022-7-5 16:18:31

从未听说过烤面包机烤箱(不是烤面包机)?我现在开始觉得自己老了,我才30多岁。。。

EntDraught 发表于 2022-7-5 16:26:06

听起来cad中并没有这个命令,所以我只起草一个lisp,应该很简单。
 
谢谢

Lee Mac 发表于 2022-7-5 16:30:36

下面是一个相对简单的程序:
 
(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)

EntDraught 发表于 2022-7-5 16:33:07

李,现在你已经去做了。。。我最近一直在尝试新的东西,也遇到过一些老帖子,在这些帖子中,你最慷慨地为他人提供帮助,而现在你却对我这样做了!
 
上帝保佑你,

BlackBox 发表于 2022-7-5 16:40:59

很好,李。。。我还使用acet ss drag move和acet ss drag rotate来执行CopyRotate(CORO)命令。
页: [1] 2
查看完整版本: 相对于上次复制位置的复制