明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2618|回复: 10

[讨论] 求一个动态 箭头的代码

[复制链接]
发表于 2013-4-13 21:28:08 | 显示全部楼层 |阅读模式
  求帮忙写个代码 只要箭头 不用标注 箭头变化值大概如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-4-13 22:54:12 | 显示全部楼层
不是很明白你的意思!
 楼主| 发表于 2013-4-14 07:34:20 | 显示全部楼层
我是用来模铝材模具的 箭头若用前者 比例 过大 用后者相反了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-4-14 09:06:45 | 显示全部楼层
哈哈!我理解能力不强啊!还是不明白你要什么箭头
 楼主| 发表于 2013-4-14 21:53:56 | 显示全部楼层
求关注 求助
 楼主| 发表于 2013-4-15 06:25:08 | 显示全部楼层
点两点然后就画出个箭头来,
然后这个箭头最宽处宽度与两点长度成正比 比例不用精确 只是指明方向
能在图上看清楚就行 
发表于 2013-4-15 09:01:56 | 显示全部楼层
论坛找的,稍微改下就可以啦。如果大小不合适,自己学着调整吧
;;;BY 革天明
(defun c:jts()
  (setq p0(getpoint "\n请输入基准点:")
        p1(getpoint p0 "\n请输入第二点:")
        l0(distance p1 p0)
        ang(angle p0 p1)
        p2(polar p0 ang (* 0.75 l0));箭头长度占总长的0.25
        h(* l0 0.02);直线的宽度占总长的0.02
  )
  ;(command "pline" p0 "H" h h p2 "")
(command "pline" p0 "H" (* h 3) 0 p1 "");箭头的宽度是直线部分的3倍

)
(princ "启动命令<JTS>")
发表于 2013-4-15 12:36:37 | 显示全部楼层
lzg8877 发表于 2013-4-15 06:25
点两点然后就画出个箭头来,
然后这个箭头最宽处宽度与两点长度成正比 比例不用精确 只是指明方向
能在 ...

最后一个不是我写的,这三个都是和距离成正比的,比例可自己调整,
;;========================================================================================================
(defun c:jts (/ p0 p1 l0 ang p2 h)
  (setq        p0  (getpoint "\n请输入基准点:")
        p1  (getpoint p0 "\n请输入第二点:")
        l0  (distance p1 p0)
        ang (angle p0 p1)
        p2  (polar p0 ang (* 0.75 l0))        ;箭头长度占总长的0.25
        h   (* l0 0.02)                        ;直线的宽度占总长的0.02
  )
  (vl-cmdf "pline" p0 "H" h h p2 "")
  (vl-cmdf "pline" p2 "H" (* h 3) 0 p1 "") ;箭头的宽度是直线部分的3倍
)
(defun c:jtt (/ p1 p2 os-mode l0 ang p3 p4 p5 p6 p7 p8 p9)
  (setvar "osmode" 16383)
  (setq p1 (getpoint "\n请输入箭头的起点"))
  (setq p2 (getpoint p1 "\n请输入箭头的终点"))
  (setq os-mode (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (setq l0 (/ (distance p2 p1) 243.21))
  (setq ang (* (/ (angle p1 p2) (* 1 pi)) 180))
  (setq p3 (polar p1 (/ pi 6.0) (* 11.96 l0)))
  (setq p4 (polar p1 0 (* 11.96 l0)))
  (setq p5 (polar p1 0 (* 191.42 l0)))
  (setq p6 (polar p5 (* pi 1.5) (* 29.9 l0)))
  (setq p7 (polar p6 (/ pi 6.0) (* 59.8 l0)))
  (setq p8 (polar p7 (/ (* 5 pi) 6.0) (* 59.8 l0)))
  (setq p9 (polar p8 (* pi 1.5) (* 23.92 l0)))
  (vl-cmdf "pline" p3 "A" "CE" p1 p4 "L" p5 p6 p7 p8 p9 "")
  (vl-cmdf "rotate" (entlast) "" p1 ang)
  (setvar "osmode" os-mode)
  (setvar "cmdecho" 1)
)
(defun c:jt (/ sys p0 p1 l0 ang l1 ang1 p2 p3 p4)
  ;;自定义tan函数
  (defun tan (a)
    (/ (sin a) (cos a))
  )
  (setq sys (getvar "osmode"))
  (setq        p0 (getpoint "\n请输入基准点:")
        p1 (getpoint p0 "\n请输入第二点:")
  )
  (setvar "osmode" 0)
  (setq        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)))
  )
  (vl-cmdf "pline" p0 p2 p3 p4 p1 "")
  (vl-cmdf "mirror" (entlast) "" p0 p1 "N")
  (setvar "osmode" sys)
  (prin1)
)
 楼主| 发表于 2013-4-15 13:22:50 | 显示全部楼层
你好 能再改改吗 我只要夹角 就两条线 (我改不来~试过了)
发表于 2013-4-15 13:58:57 | 显示全部楼层
本帖最后由 wowan1314 于 2013-4-15 13:59 编辑

(defun c:T5()
  (setq p0(getpoint "\n请输入基准点:")
        p1(getpoint p0 "\n请输入第二点:"))
     (setq oldosmode (getvar "osmode"))
     (setvar "osmode" 0)
  (setq
        l0(distance p1 p0)
        ang(angle p0 p1)
        ang1(+ ANG (* 0.5 PI))
        ang2(- ANG (* 0.5 PI))
        P12(polar p1 ang1 (* 0.2 l0));夹角大小调整此处0.2的值
        P13(polar p1 ang2 (* 0.2 l0));夹角大小调整此处0.2的值
  )

(command "Pline" p12 p0 P13 "");箭头的宽度是直线部分的3倍
  (setvar "osmode" oldosmode)
(PRINC)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 15:21 , Processed in 0.201302 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表