datalife 发表于 2022-7-6 06:59:55

绘制箭头

大家好,
 
我有一个Lisp程序的箭头。我发现这是
麻烦,因为我需要点击头部和尾部
箭头的形状。
 
有没有简单的方法只需点击
线和形成箭头瞬间;按修改
单击lisp或单击新的lisp。
 
谢谢
箭lsp
箭图纸

Dadgad 发表于 2022-7-6 07:07:58

有没有理由不想为此使用QLEADER,其中包括箭头的定义?
这样,您只需指定箭头尖端的位置,然后定义所需位置
线路的另一端。为什么使用lisp?
任何箭头都将定义某种类型的向量,因此我希望必须指定第二个点来建立旋转,至少,如果不是长度的话。

datalife 发表于 2022-7-6 07:14:22

你好,爸爸。。。。。谢谢你的回复
 
但是,我的问题是。。。。我有数千条管道
需要绘制重力流方向。因此
这个案子我需要Lisp程序。
 
谢谢

Dadgad 发表于 2022-7-6 07:16:12

好吧,很公平。
也许你会发现李的标签lisp是有帮助的。
http://www.lee-mac.com/label.html
 
由于你画的箭头是多段线,在李的帮助下,看起来你会没事的。
对于那些不熟悉李网站的人来说,看看吧,这里绝对是一座金矿
李非常慷慨地向所有人提供了伟大的Lisp程序。
谢谢李!

Tharwat 发表于 2022-7-6 07:20:33

试试这个。。。。。
 

(defun c:LWarrow (/ p1 p2)
;;; Tharwat 30. Jan. 2013 ;;;
(if (and (setq p1 (getpoint "\n Specify first point :"))
          (setq p2 (getpoint "\n Specify next point :" p1))
   )
   (entmakex (list '(0 . "LWPOLYLINE")
                   '(100 . "AcDbEntity")
                   '(100 . "AcDbPolyline")
                   '(90 . 3)
                   '(70 . 0)
                   (cons 10 p1)
                   '(40 . 0.)
                   (cons 41 (/ (distance p1 p2) 4.2))
                   '(42 . 0.)
                   (cons 10 (polar p1 (angle p1 p2) (/ (distance p1 p2) 3.)))
                   '(40 . 0.)
                   '(41 . 0.)
                   '(42 . 0.)
                   (cons 10 p2)
                   (cons 40 0.)
                   (cons 41 (/ (distance p1 p2) 4.2))
                   '(42 . 0.)
             )
   )
)
(princ)
)

MSasu 发表于 2022-7-6 07:27:26

或者,也可以将所述箭头创建为块,并按您的例程插入;这样做的好处是,如果需要,可以立即修改样式(大小、形状)。

Tharwat 发表于 2022-7-6 07:32:52

 
同意。

BIGAL 发表于 2022-7-6 07:36:23

这是一个唇的开始,它将圆添加到线的末端需要两条额外的线来获得线角度,使用Assoc 11作为其他端点,只需将命令从“圆”更改为在端点pt处插入一个带有旋转和缩放的块。唯一的错误是将绘制箭头的方向线绘制进去。学习lisp的好时机?
 
; add a circle to end of lines for import into the DRAINS software
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(command "layer" "n" "PITS" "Color" 1 "PITS" "s" "PITS" "")
(setq ent (car (entsel "\nSelect drain layer: ")))
(setq l_name (cdr (assoc 8 (entget ent))))

(setq listlines (ssget "X" (list (cons 0 "line")(cons 8 l_name))))
(setq listlinesno (sslength listlines))
(setq y 0)
(repeat listlinesno
       (setq pt1 (cdr (assoc 10 (entget (ssname listlines y))))) ; add pt2 here assoc 11 and angle pt1 pt2
      (command "circle" pt1 1.0) ; change this to be insert arrowblock
      (setq y (+ y 1))
)   ;end repeat listlineno

(setvar "osmode" oldsnap)

datalife 发表于 2022-7-6 07:40:36

您好:)
 
哦,是的。。。。我搜索上一个线程
终于得到了我想要的箭头
只需单击行的末尾。
 
唯一的挫折是有时它看起来很小。。。。
lisp能否指示用户输入或更改比例。
 
有人请分享
 
谢谢你,伙计。。。。
啊。lsp

MSasu 发表于 2022-7-6 07:46:29

箭头的大小由SC变量控制-您可以向其添加比例因子:
(setq SC (* 1.5 (getvar "dimscale")))
...
(setq PT2 (polar EPT ANG1 (* SC 0.20)))
;set arrowhead length, based on current dimscale
(setq PW (* SC 0.08)) ;set arrowhead width
页: [1] 2
查看完整版本: 绘制箭头