帮助-如何移动线条
我需要帮助。解决方案对专家来说很容易,但我有困难:我需要一个例程,允许简单的画线,然后激活移动命令,基线由线上的一个点定义,目标点由pick定义。这基本上是二合一。绘制并移动。我在这里。
;;draw a line and move
(defun c:linm (/ pt1 pt2)
(setq pt1 (getpoint "\nPick start:"))
(setq pt2 (getpoint "\nPick End:"))
(command "line" pt1 pt1)
(command "move")
(princ)
) 我确信这里有人会回答你,但这让我困惑,所以我要问:你需要这个做什么?最终结果是什么? 是的,这似乎太简单了。但基本上是为了抑制第二个命令的调用。 我和老虎在一起。为什么不从正确的位置开始画呢? 未经测试,请尝试。
(defun c:linm (/ pt1 pt2)
(setq pt1 (getpoint "\nPick start:"))
(setq pt2 (getpoint "\nPick End:"))
(command "line" pt1 pt1)
(command "move" (entlast) "" "_non" pt1 (getpoint "\n Specify the distination Point:"))
(princ)
)
我想你误解了我,你觉得这个解决方案能解决你日常绘画中的什么情况? 因为我打算沿着第二条线垂直移动这条线,其中移除的值通过键盘指定。也就是说,没有参考文献。在正常情况下,绘制线,然后可以选择偏移或移动,但始终称为第二个命令。正如我所说,我们的想法是一步到位。 所以你想画一条指定长度的线,在距离一个点指定的距离。
如果我理解正确,我会使用带有极轴追踪的扩展OSnap来获得从一条直线上的一个点的距离。在那之后,是一个以直角画新线的问题——我确信这里有一个解释,关于如何从一条线开始画一条垂直的线,但我找不到。
我解释这一点不是为了告诉你,你不应该使用Lisp程序。我想指出的是,Lisps并不总是解决问题的答案,您可以在autocad中使用命令完成很多事情。
无论如何,请返回您的代码 这比第一个好得多。。
(defun c:linm (/ pt1 pt2 pt3)
(if (and
(setq pt1 (getpoint "\nPick start:"))
(setq pt2 (getpoint pt1 "\nPick End:"))
(setq pt3 (getpoint "\n Specify distination Point:"))
)
(progn
(entmakex (list '(0 . "LINE")
(cons 10 (trans pt1 1 0))
(cons 11 (trans pt2 1 0))
)
)
(command "_.move"
(entlast)
""
"_non"
pt1
"_non"
pt3
)
)
(princ)
)
(princ)
)
由于entmakex返回实体名,因此不需要使用entlast
页:
[1]
2