lisp在同一角度上画线
大家好,有人有lisp吗?或者可以帮我做一个lisp,它可以根据所选直线的角度绘制直线?
示例:我有一条45度的直线
我在这行的末尾有文字
我想选择一条线,并有一条预定的线
根据图形比例在文本后绘制
请参阅所附图片以获得更好的说明。
非常感谢。
有人能帮忙吗? 打开OSNAP扩展怎么样?
或者在这个(特殊?)外壳极角45? 试试“斯纳邦”吧。。。
(setq draw_obj(entget(car(entsel)))
(命令“snapang”(cdr(assoc 10 draw\u obj))(cdr(assoc 11 draw\u obj))) 看这里,打开Extension和Parallel。
然后画出你的线,使用extension查找第一个点,将光标移动到第一条线上,然后移动到第二个点以获得平行Osnap。
不确定这是不是你想要的,好好锻炼,但这一点也不差
(defun c:angline (/ scale lne selpt pt1 pt2 dist1 dist2 bp bp2 rad)
(setq scale (getvar "cannoscalevalue"))
(setq lne (entsel "\nSelect line: "))
(setq selpt (cadr lne))
(setq pt1 (cdr (assoc 10 (entget (car lne)))))
(setq pt2 (cdr (assoc 11 (entget (car lne)))))
(setq dist1 (/ (distance pt1 pt2) 2))
(setq dist2 (distance pt1 selpt))
(if (< dist1 dist2)
(progn
(setq rad (angle pt1 pt2))
(setq bp (polar pt2 rad (* 1 (/ 1 scale))))
(setq bp2 (polar bp rad 1))
(command "_.line" bp bp2 "")
(command "_.lengthen" "dy" bp2pause)
)
(progn
(setq rad (angle pt2 pt1))
(setq bp (polar pt1 rad (* 1 (/ 1 scale))))
(setq bp2 (polar bp rad 1))
(command "_.line" bp bp2 "")
(command "_.lengthen" "dy" bp2 pause "" "")
)
)
(princ)
)
这可能就是你们许多人所说的“笨拙”代码,作为一名学习者,我很想了解这段代码,以及如何改进它 我在Acad 2010中尝试了你的代码。
它似乎又开始变长了。
也许你需要一个额外的(命令)来取消一切?
否则效果很好。
我决不是一个专家,但我建议改进代码的两件事是entsel和PT的错误捕获,例如:
另一件事是,你很快就会注意到其他人的代码,你可以用setq分配多个变量,例如:
(setq a 1 b 2
c 3)设置a=1、b=2和c=3
希望这有点帮助。 需要这个吗?
3
我在2009年试过,它对我有效。我认为我在2010年的最后一个命令中使用了太多的“”。 非常感谢dhl和alanjt。
两者几乎做了完全相同的事情,唯一不同的是alanjt所做的程序,当你为额外的线选择起点时,你选择的点可以是任何地方,甚至可以不是原始线。
dhl制作的程序正是我想要的。
再次感谢大家的帮助和时间。
页:
[1]
2