Minh Heaven 发表于 2022-7-6 08:35:30

Lisp绘制箭头

大家好。我不熟悉AutoCAD和Autolisp。现在,我想做一个lisp例程来绘制一个箭头,如下图所示

 
A和B是两个特定的点,m=A和B之间距离的1/3。有人知道如何制作这个lisp例程吗?
提前感谢
对不起我的英语

Tharwat 发表于 2022-7-6 08:41:48

可以使用这些特性制作单独的标注样式来绘制它,而不是绘制例程。

Quest for Peace 发表于 2022-7-6 08:45:03

我是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)
)

 
我通过创造最奇怪的解决方案来逗自己开心。事实上,别理我。很抱歉

MSasu 发表于 2022-7-6 08:47:31

@寻求和平:这是一个很好的解决方案;只有一个建议-可以将箭头作为一个实体,我的意思是将尾部添加为多段线的第二段,而不是单独的实体。
 
当做
米尔恰

pBe 发表于 2022-7-6 08:51:16

 

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


Minh Heaven 发表于 2022-7-6 08:52:29

谢谢大家

Lee Mac 发表于 2022-7-6 08:56:07

另一个:
 
pBe:为什么转换为VLA对象?

LibertyOne 发表于 2022-7-6 08:58:22

箭头是实心的吗?在这种情况下,我认为需要绘制两个不同的实体。哦,等等,我想李是用两段多段线做的。代码41是多段线末端宽度吗?

Quest for Peace 发表于 2022-7-6 09:02:42

我在想,他可以接受我所做的,并阻止或组合它。我忘了你可以像Lee那样做,因为我使用了顶部建议的简单箭头的尺寸样式。关于这个问题,我使用的一个复杂箭头(Lisp)是样条曲线尖端的一个头。我有一个例程,需要4个点,创建样条曲线,将头部作为块插入,然后将其分组。这是我几年前写的。有没有一种方法可以只用一个简单的实体,而不用插入块和分组?

Tharwat 发表于 2022-7-6 09:04:05

 
可以根据需要使用引线设置来调整设置。
页: [1] 2
查看完整版本: Lisp绘制箭头