找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4096|回复: 32

[分享]:漂亮的大箭头

[复制链接]
发表于 2004-3-6 22:19:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
前一阵看到老外作的分析图,箭头特别漂亮,于是琢磨着自己编了一个画此箭头的程序,大家分享:
(defun c:tar (/ pt1 pt2 pt3 len oplw)
  (setq oplw (getvar "plinewid"))
  (and
    (setq pt1 (getpoint "尖点: "))
    (setq pt2 (getpoint pt1 "脖点: "))
    (progn
      (setq len (distance pt1 pt2))
      (command "pline" pt1 "w" 0 (* 1.8 len) pt2)
      (command "w" (* 0.4 len) (* 1.3 len) "a")
      (princ "\n结束点: ")
      (command pause "")
    )
  )
  (setvar "plinewid" oplw)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-3-6 22:43:42 | 显示全部楼层
很好 可是怎么用呢??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-6 23:03:37 | 显示全部楼层
最初由 cccfly 发布
[B]很好 可是怎么用呢?? [/B]

真是没治了....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-7 00:02:47 | 显示全部楼层
简单,不过有用。
帮你稍稍整理了一下:
[php]
(defun c:tar (/ pt1 pt2 pt3 len oplw os)
  (setq oplw (getvar "plinewid")
        os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (if (and (setq pt1 (getpoint "\n尖点: "))
           (setq pt2 (getpoint pt1 "脖点: ")))
    (progn
      (setq len (distance pt1 pt2))
      (command "_.pline" pt1 "w" 0 (* 1.8 len) pt2)
      (command "w" (* 0.4 len) (* 1.3 len) "a")
      (princ "\n结束点: ")
      (command pause)
      (if (= (getvar "cmdnames") "PLINE")
        (command "")
        (entdel (entlast))
      );if
    )
  )
  (setvar "plinewid" oplw)
  (setvar "osmode" os)
  (setvar "cmdecho" 1)
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-7 19:42:16 | 显示全部楼层
不错,指示很清楚;
谢过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-9 09:04:16 | 显示全部楼层
试过了!!
好用!!!省分析图不少事情哦~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-12 11:01:21 | 显示全部楼层
我来个附件!
用APPLOAD加载到CAD,命令是TAR
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-25 23:11:23 | 显示全部楼层
呵呵,谢谢各位大大,
这几天画分析图正好用上^_^
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-5-26 01:23:55 | 显示全部楼层
[php]
(defun c:jjj (/ pt1 pt2 pt3 len oplw os getpt2)
(defun getpt2(pt1 / ang dis pt2 pt3 pt4)
   (while (not pt2)
      (setq pt2(grread t))
      (cond((= (car pt2)3)(setq pt2(cadr pt2)))
           ((=(car pt2)5)
             (setq pt2(cadr pt2)
                   ang (angle pt1 pt2)
                   dis(* 0.9(distance pt1 pt2))
                   pt3(polar pt2(+ ang (* 0.5 pi))dis)
                   pt4(polar pt2(- ang(* 0.5 pi))dis)
              )
             (redraw)
             (grvecs (list 256 pt1 pt3 256 pt1 pt4 256 pt3 pt4))
             (setq pt2 nil)
            )
           (t(setq pt2 nil))
   )))
  (setq oplw (getvar "plinewid")
        os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (if (and (setq pt1 (getpoint "\n尖点: "))
           (princ "脖点: ")
           (setq pt2 (getpt2 pt1)))
    (progn
      (setq len (distance pt1 pt2))
      (command "_.pline" pt1 "w" 0 (* 1.8 len) pt2)
      (command "w" (* 0.4 len) (* 1.3 len) "a")
      (princ "\n结束点: ")
      (command pause)
      (if (= (getvar "cmdnames") "PLINE")
        (command "")
        (entdel (entlast))
      )
    )
  )
  (setvar "plinewid" oplw)
  (setvar "osmode" os)
  (setvar "cmdecho" 1)
  (princ)
)
[/php]

脖点的时候加入预览,但不是很好,不好控制方向了.
如果用理正的"dragx"写就好了.

晓东看见此贴,我要求的函数,就是(getpt2)里要求实现的.
要求:可以输入尺寸,字母,F8  F10.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-26 23:23:41 | 显示全部楼层
能解释一下getpt2函数的过程吗?看不太懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-26 23:57:50 | 显示全部楼层
aeo:
加入预览不好控制方向了.---指什么?我用起来觉得方向没问题啊
(getpt2) 要求:可以输入尺寸,字母,F8 F10. ---这个F8,F10是干什么的?控制正交和极轴么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-5-26 23:59:23 | 显示全部楼层

  1. (有pt2时while结束,不然while
  2.   (cond
  3.       (=3 ,按了左键,就有pt2了)
  4.       (= 5 ,拖动,预演一下,最后pt2=nil,还要while下去)
  5.       (按其他键pt2=nil  while下去)
  6.   )
  7. )
复制代码


没加入按确认的情况,不周全.


陌生人 :
有的时候,就要画一个很精确的尺寸,和很精确的方向,grread是没办法,(可以,但太土了)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-27 00:48:34 | 显示全部楼层
呵呵,你真认真。一般画箭头是指示性的,要用到精确角度的还没见过,也许是我专业局限所至吧。不过作为程序倒可以研究一下:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-27 12:02:46 | 显示全部楼层
这个玩意儿好用!在分析风向的时候蛮管用的!谢谢呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-27 12:12:01 | 显示全部楼层
保持箭头头部长度的功能是重要的,不增加操作步骤也很重要。
修改如下:
程序能够记忆上次的箭头长度,按任意键重定长度:

  1.   [FONT=courier new]
  2. (defun c:jjj (/ pt1 pt2 pt3 len oplw os getpt2)

  3.   (defun getpt2        (pt1 / ang dis pt2 pt3 pt4)
  4.     (while (not pt2)
  5.       (setq pt2 (grread t))
  6.       (cond ((= (car pt2) 3)
  7.              (setq pt2 (cadr pt2))
  8.              (if $tar_dist
  9.                (setq pt2 (polar pt1 (angle pt1 pt2) $tar_dist))
  10.              )
  11.             )
  12.             ((= (car pt2) 5)
  13.              (setq pt2 (cadr pt2)
  14.                    ang (angle pt1 pt2)
  15.              )
  16.              (if $tar_dist
  17.                (setq pt2 (polar pt1 ang $tar_dist))
  18.              )
  19.              (setq dis (* 0.9 (distance pt1 pt2))
  20.                    pt3 (polar pt2 (+ ang (* 0.5 pi)) dis)
  21.                    pt4 (polar pt2 (- ang (* 0.5 pi)) dis)
  22.              )
  23.              (redraw)
  24.              (grvecs (list 256 pt1 pt3 256 pt1 pt4 256 pt3 pt4))
  25.              (setq pt2 nil)
  26.             )
  27.             ((= (car pt2) 2)
  28.              (setq $tar_dist nil
  29.                    pt2 nil
  30.              )
  31.             )
  32.             (t (setq pt2 nil))
  33.       )
  34.     )
  35.     pt2
  36.   )


  37.   (setq        oplw (getvar "plinewid")
  38.         os   (getvar "osmode")
  39.   )
  40.   (setvar "osmode" 0)
  41.   (setvar "cmdecho" 0)
  42.   (if (and (setq pt1 (getpoint "\n尖点: "))
  43.            (princ "脖点: ")
  44.            (setq pt2 (getpt2 pt1))
  45.       )
  46.     (progn
  47.       (setq len              (distance pt1 pt2)
  48.             $tar_dist len
  49.       )
  50.       (command "_.pline" pt1 "w" 0 (* 1.8 len) pt2)
  51.       (command "w" (* 0.4 len) (* 1.3 len) "a")
  52.       (princ "\n结束点: ")
  53.       (command pause)
  54.       (if (= (getvar "cmdnames") "PLINE")
  55.         (command "")
  56.         (entdel (entlast))
  57.       )
  58.     )
  59.   )
  60.   (setvar "plinewid" oplw)
  61.   (setvar "osmode" os)
  62.   (setvar "cmdecho" 1)
  63.   (princ)
  64. )

  65.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 05:26 , Processed in 0.213040 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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