Lisp绘制箭头
大家好。我不熟悉AutoCAD和Autolisp。现在,我想做一个lisp例程来绘制一个箭头,如下图所示A和B是两个特定的点,m=A和B之间距离的1/3。有人知道如何制作这个lisp例程吗?
提前感谢
对不起我的英语 可以使用这些特性制作单独的标注样式来绘制它,而不是绘制例程。 我是amatuer,也许应该置身事外。但我想回复一个请求只是为了体验一下。
(defun c:test ( / a b c wid)
(setq a (getpoint "Pick head of arrow...\n")
b (getpoint a "Pick tail of arrow...\n")
c (polar a (angle a b) (/ (distance a b) 3.0))
wid (/ (distance a b) 6.0)
)
(entmake
(list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(8 . "0")'(62 . 0)'(6 . "ByBlock")'(100 . "AcDbPolyline")'(90 . 2)'(70 . 0)'(38 . 0.0)'(39 . 0.0)(cons 10 a)
'(40 . 0.0)(cons 41 wid)'(42 . 0.0)(cons 10 c)'(40 . 0.0)'(41 . 0.0)'(42 . 0.0)'(210 0.0 0.0 1.0)))
(entmake
(list '(0 . "LINE")'(100 . "AcDbEntity")'(8 . "0")'(62 . 0)'(6 . "ByBlock")'(100 . "AcDbLine")(cons 10 c)(cons 11 b)'(210 0.0 0.0 1.0)))
(princ)
)
我通过创造最奇怪的解决方案来逗自己开心。事实上,别理我。很抱歉 @寻求和平:这是一个很好的解决方案;只有一个建议-可以将箭头作为一个实体,我的意思是将尾部添加为多段线的第二段,而不是单独的实体。
当做
米尔恰
(defunc:test (/ a b c wid)
(vl-load-com)
(setq
a (getpoint "Pick head of arrow...\n")
b (getpoint a "Pick tail of arrow...\n")
c (polar a (angle a b) (/ (distance a b) 3.0))
wid (/ (distance a b) 6.0)
)
(vla-setWidth
(vlax-ename->vla-object
(entmakex
(append
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 3)
)
(mapcar
(function (lambda (p) (cons 10 (trans p 1 0))))
(list a c b)
)
)
)
)
0
0.0
wid
)
(princ)
)
谢谢大家 另一个:
pBe:为什么转换为VLA对象? 箭头是实心的吗?在这种情况下,我认为需要绘制两个不同的实体。哦,等等,我想李是用两段多段线做的。代码41是多段线末端宽度吗? 我在想,他可以接受我所做的,并阻止或组合它。我忘了你可以像Lee那样做,因为我使用了顶部建议的简单箭头的尺寸样式。关于这个问题,我使用的一个复杂箭头(Lisp)是样条曲线尖端的一个头。我有一个例程,需要4个点,创建样条曲线,将头部作为块插入,然后将其分组。这是我几年前写的。有没有一种方法可以只用一个简单的实体,而不用插入块和分组?
可以根据需要使用引线设置来调整设置。
页:
[1]
2