革天明 发表于 2012-2-28 13:34:47

曾经想写的绘制箭头程序,现在很简单了

很简单的程序,可自己刚学习的时候却不会,现在两分钟就搞定了!
(defun c:jt ()
(setq sys (getvar "osmode"))
(setvar "osmode" 0)
(setq p0   (getpoint "\n请输入基准点:")
p1   (getpoint "\n请输入第二点:")
l0   (distance p0 p1)
ang(angle p0 p1)
l1   (* 0.18 l0);此系数可调,用于调整箭头区占整个箭头的长度,0.18是系数
ang1 (* 0.08333333 pi);箭头的角度为30度
p2   (polar p0 (+ ang (* 0.5 pi)) (* 0.35 (* l1 (tan ang1))));定义箭尾的宽度,0.35是系数
p3   (polar p2 ang (- l0 l1))
p4   (polar p3 (+ ang (* 0.5 pi)) (* l1 (tan ang1)))
)
(command "pline" p0 p2 p3 p4 p1 "")
(command "mirror" (entlast) "" p0 p1 "N")
(setvar "osmode" sys)
(prin1)
)
(princ "启动命令<JT>")
;|自定义tan函数|;
(defun tan (a)
(/ (sin a) (cos a))
)

raimo 发表于 2012-2-28 16:07:34

Qleader 更好用,还是带比例的

罗尼 发表于 2021-2-2 08:21:52

你们想要的LEADER来了:
(defun c:jt(/ os cmd pt1 pt2 )
        (vl-load-com)
        (setq pt1 (getpoint"\n指定起点"))
        (setq pt2 (getpoint pt1 "\n指定终点"))
        (command "layer" "m" "2细线层" "c" 4 "" "")
        (command "LEADER" pt2 pt1 "" "" "n")
        (princ)
)

hxh2901 发表于 2012-2-28 15:04:57

p1   (getpoint "\n请输入第二点:")
改成p1   (getpoint p0 "\n请输入第二点:")
效果会好些

自贡黄明儒 发表于 2012-2-28 13:48:33

可不可以用Qleader来完成?这只是我的一点想法。

革天明 发表于 2012-2-28 21:49:31

hxh2901 发表于 2012-2-28 15:04 static/image/common/back.gif
p1   (getpoint "\n请输入第二点:")
改成p1   (getpoint p0 "\n请输入第二点:")
效果会好些

是的,动态了

lohas1118 发表于 2012-2-29 11:22:36

好用,谢谢了

革天明 发表于 2012-2-29 13:20:44

自贡黄明儒 发表于 2012-2-28 13:48 static/image/common/back.gif
可不可以用Qleader来完成?这只是我的一点想法。

Qleader的“设置”不能取消对话框,cmdecho设置成0也不行,同时画出的箭头放大和缩小后其箭头的大小不变,
我自己测试的是这样,不知道是否可以实现箭头的大小与线长成比例?

自贡黄明儒 发表于 2012-3-1 12:21:32

革天明 发表于 2012-2-29 13:20 static/image/common/back.gif
Qleader的“设置”不能取消对话框,cmdecho设置成0也不行,同时画出的箭头放大和缩小后其箭头的大小不变, ...

不知你看过caoying的贴子没有,好象可以的

革天明 发表于 2012-3-1 13:12:16

我再学习一下,等解决了使用qleader时再续此贴

nzl1116 发表于 2012-3-3 08:33:25

绘制箭头直接用多段线命令 pline 不就得了
页: [1] 2 3 4 5 6
查看完整版本: 曾经想写的绘制箭头程序,现在很简单了