从点划分绘制一条线
我想选两点(距离),把他们的分数除以我选择的数字,
然后从这些分割点画一条线,
垂直于我选择的第三个点。
我认为这很容易,但似乎不是我所想的。我从这个开始。
(defun C:st (/ pd1 pd2 d2d sp m pd)
(setq pd1 (getpoint "\nSelect first btend: "))
(setq pd2 (getpoint "\nSelect second btend: "))
(setq d2d (distance (cdr (reverse pd1)) (cdr (reverse pd2))))
(setq sp(getreal "\nNumber of spaces between stends? "))
(setq m (/ (cvunit d2d "INCHES" "FEET") (cvunit sp "INCHES" "FEET")))
(setq pd (getpoint "\nSelect line to extend to:"))
(command "_.layer" "s" "s-frm-stend" "" "")
(command "line" m pd "")) 不知道你的意思。发布快照 对于前两点,OP似乎希望自动将DIVIDE命令应用于由两点规范和输入偶数创建的(entlast)行,得到类似的结果。第三点我输了。
需要更多信息。 如果我理解正确。。。尝试
(defun C:st (/ pd1 pd2 d2d sp step pd)
(vl-load-com)
(setq pd1 (trans (getpoint "\nSelect first btend: ") 1 0))
(setq pd2 (trans (getpoint "\nSelect second btend: ") 1 0))
(setq d2d (distance pd1 pd2))
(setq sp (getint "\nNumber of spaces between stends? "))
(setq pd (vlax-ename->vla-object (car (entsel "\nSelect line to extend to:"))))
(setq step (/ (distance pd1 pd2) sp))
(repeat (1- sp)
(setq pd1 (polar pd1 (angle pd1 pd2) step))
(entmake (list
(cons 0 "LINE")
(cons 8 "s-frm-stend")
(cons 10 pd1)
(cons 11 (vlax-curve-getClosestPointTo pd pd1 T))
) )
)
)
@总成
您可以使用以vlax curve-****开头的所有函数,而无需将实体转换为vla对象。 谢谢你,塔瓦:哎呀:
我经常忘记把它放在更复杂的lisp中,然后立即插入。。。 这就是我需要的。我知道我需要某种重复或循环,但不知道如何写作。你们都很棒。我试图自己学习这个程序,但我被难住了。我只是想让你们至少有四分之一的水平。谢谢大家的帮助。我希望将来我能帮助一些人来回报你们所有的帮助。
不客气。
好吧,一个蛋糕或冰淇淋。。。现在
代码清除了不必要的东西。
(defun C:st (/ pd1 pd2 sp step pd)
(setq pd1 (trans (getpoint "\nSelect first btend: ") 1 0))
(setq pd2 (trans (getpoint "\nSelect second btend: ") 1 0))
(setq sp (getint "\nNumber of spaces between stends? "))
(setq pd (car (entsel "\nSelect line to extend to:")))
(setq step (/ (distance pd1 pd2) sp))
(repeat (1- sp)
(setq pd1 (polar pd1 (angle pd1 pd2) step))
(entmake (list
(cons 0 "LINE")
(cons 8 "s-frm-stend")
(cons 10 pd1)
(cons 11 (vlax-curve-getClosestPointTo pd pd1 T))
) )
)
)
一定要注意以下事项:
(distance nil nil)
... 使用IF语句可能有助于减少潜在错误:眨眼:
页:
[1]