lzg8877 发表于 2013-4-13 21:28:08

求一个动态 箭头的代码

  求帮忙写个代码 只要箭头 不用标注 箭头变化值大概如图

wowan1314 发表于 2013-4-13 22:54:12

不是很明白你的意思!

lzg8877 发表于 2013-4-14 07:34:20

我是用来模铝材模具的 箭头若用前者 比例 过大 用后者相反了

wowan1314 发表于 2013-4-14 09:06:45

哈哈!我理解能力不强啊!还是不明白你要什么箭头

lzg8877 发表于 2013-4-14 21:53:56

求关注 求助

lzg8877 发表于 2013-4-15 06:25:08

点两点然后就画出个箭头来,
然后这个箭头最宽处宽度与两点长度成正比 比例不用精确 只是指明方向
能在图上看清楚就行 

wowan1314 发表于 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 static/image/common/back.gif
点两点然后就画出个箭头来,
然后这个箭头最宽处宽度与两点长度成正比 比例不用精确 只是指明方向
能在 ...

最后一个不是我写的,这三个都是和距离成正比的,比例可自己调整,
;;========================================================================================================
(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)
)

lzg8877 发表于 2013-4-15 13:22:50

你好 能再改改吗 我只要夹角 就两条线 (我改不来~试过了)

wowan1314 发表于 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)
)
页: [1] 2
查看完整版本: 求一个动态 箭头的代码