john_ 发表于 2022-7-6 12:22:59

lisp在同一角度上画线

大家好,
有人有lisp吗?或者可以帮我做一个lisp,它可以根据所选直线的角度绘制直线?
 
示例:我有一条45度的直线
我在这行的末尾有文字
我想选择一条线,并有一条预定的线
根据图形比例在文本后绘制
 
请参阅所附图片以获得更好的说明。
 
非常感谢。

john_ 发表于 2022-7-6 12:31:42

有人能帮忙吗?

Raggi_Thor 发表于 2022-7-6 12:33:18

打开OSNAP扩展怎么样?
或者在这个(特殊?)外壳极角45?

LauKwokFai 发表于 2022-7-6 12:38:44

试试“斯纳邦”吧。。。
 
(setq draw_obj(entget(car(entsel)))
(命令“snapang”(cdr(assoc 10 draw\u obj))(cdr(assoc 11 draw\u obj)))

Raggi_Thor 发表于 2022-7-6 12:44:40

看这里,打开Extension和Parallel。
然后画出你的线,使用extension查找第一个点,将光标移动到第一条线上,然后移动到第二个点以获得平行Osnap。

dhl 发表于 2022-7-6 12:50:28

不确定这是不是你想要的,好好锻炼,但这一点也不差
 

(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)
)

 
这可能就是你们许多人所说的“笨拙”代码,作为一名学习者,我很想了解这段代码,以及如何改进它

Raggi_Thor 发表于 2022-7-6 12:56:11

我在Acad 2010中尝试了你的代码。
它似乎又开始变长了。
也许你需要一个额外的(命令)来取消一切?
 
否则效果很好。

SteveK 发表于 2022-7-6 12:58:59

 
我决不是一个专家,但我建议改进代码的两件事是entsel和PT的错误捕获,例如:
另一件事是,你很快就会注意到其他人的代码,你可以用setq分配多个变量,例如:
(setq a 1 b 2
   c 3)设置a=1、b=2和c=3
希望这有点帮助。

alanjt 发表于 2022-7-6 13:07:08

需要这个吗?
3
 
 
我在2009年试过,它对我有效。我认为我在2010年的最后一个命令中使用了太多的“”。

alanjt 发表于 2022-7-6 13:11:42

非常感谢dhl和alanjt。
两者几乎做了完全相同的事情,唯一不同的是alanjt所做的程序,当你为额外的线选择起点时,你选择的点可以是任何地方,甚至可以不是原始线。
dhl制作的程序正是我想要的。
再次感谢大家的帮助和时间。
页: [1] 2
查看完整版本: lisp在同一角度上画线