找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 710|回复: 2

[求助] [求助]:我编写的标注程序打开捕捉时会出现标注重叠,关闭捕捉不会,程序该怎么修改?

[复制链接]
发表于 2005-10-15 16:19:25 | 显示全部楼层 |阅读模式

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

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

×
(defun C:zbbz( / old_textsize zb gd cld )
  (setvar "modemacro" "坐标标注程序键入zbbz执行,程序设计:小谢")
  (setq o_cm (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "UNDO" "BE")
  (setq o_os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq o_bl (getvar "blipmode"))
  (setvar "blipmode" 0)
  (setq o_dz (getvar "dimzin"))
  (initget 4)
  (setvar "dimzin" 0)
  (setq old_textsize (getvar "textsize"))
  (setq gd (getreal (strcat "指定标注文字高度:<" (rtos old_textsize 2) ">")))
  (if (= gd nil) (setq gd old_textsize))
  (setq old_jd 3)
  (setq jd (getint (strcat "\n指定坐标精度:<"(rtos old_jd 2 ) ">")))
  (if (= jd nil) (setq jd old_jd))
  (while (setq zb (getpoint "指定坐标点:"))
  (setq cld(getpoint  zb  "指定标注位置:"))
  (setq len (max(strlen (strcat "x=" (rtos(cadr zb)2 jd)))
                (strlen (strcat "y=" (rtos(car zb) 2 jd)))
            )   
  )
(setq x (strcat "x=" (rtos(cadr zb)2 jd)))
(setq y (strcat "y=" (rtos(car zb)2 jd)))
  (setq ang (angle zb cld))
  (command "line")
  (command (list (car zb)  (cadr zb)))
  (command (list (car cld) (cadr cld)))
  (command "")
  

  (if (or (and (>= (* (/ ang pi) 180) 0) (<= (* (/ ang pi) 180) 90))
          (and (>= (* (/ ang pi) 180) 270) (<= (* (/ ang pi) 180) 360))
      )
   (progn
   (command "line")
   (command (list (car cld) (cadr cld)))
   (command (list (+ (car cld) (* gd len 0.8)) (cadr cld)))
   (command "")
   (setq ptx (list (car cld) (+ (cadr cld) (/ gd 1.5))))
   (setq pty (list (car cld) (- (cadr cld) (/ gd 1.5))))
   (command "text" "ml" ptx gd "0" x)
   (command "text" "ml" pty gd "0" y)   
   );end progn
  (progn  
   (command "line")
   (command (list (car cld) (cadr cld)))
   (command (list (- (car cld) (* len gd 0.8)) (cadr cld)))
   (command "")            
   (setq ptx (list (- (car cld) (* gd len 0.8))  (+ (cadr cld) (/ gd 1.5))))
   (setq pty (list (- (car cld) (* gd len 0.8))  (- (cadr cld) (/ gd 1.5))))   
   (command "text" "ml" ptx gd "0" x)
   (command "text" "ml" pty gd "0" y)   
  );end progn
);end if
);end while
   ;还原
  (setvar "dimzin" o_dz)
  (setvar "blipmode" o_bl)
  (setvar "osmode" o_os)
  (command "UNDO" "E")
  (setvar "cmdecho" o_cm)
);end defun
(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-15 18:50:10 | 显示全部楼层
  1. [FONT=courier new](defun C:zbbz (/ old_textsize zb gd cld)
  2.   (setq        o_cm             (getvar "cmdecho")
  3.         o_os             (getvar "osmode")
  4.         o_bl             (getvar "blipmode")
  5.         o_dz             (getvar "dimzin")
  6.         old_textsize (getvar "textsize")
  7.         gd             (getreal
  8.                        (strcat "指定标注文字高度:<" (rtos old_textsize 2) ">")
  9.                      )
  10.   )
  11.   (setvar "modemacro"
  12.           "坐标标注程序键入zbbz执行,程序设计:小谢"
  13.   )
  14.   (setvar "cmdecho" 0)
  15.   (setvar "blipmode" 0)
  16.   (initget 4)
  17.   (setvar "dimzin" 0)
  18.   (if (= gd nil)
  19.     (setq gd old_textsize)
  20.   )
  21.   (setq jd (getint "\n指定坐标精度:<3>"))
  22.   (if (= jd nil)
  23.     (setq jd 3)
  24.   )
  25.   (command "UNDO" "BE")
  26.   (while (setq zb (getpoint "\n指定坐标点 : "))
  27.     (setq cld (getpoint zb "\n指定标注位置 : ")
  28.           len (max (strlen (strcat "x=" (rtos (cadr zb) 2 jd)))
  29.                    (strlen (strcat "y=" (rtos (car zb) 2 jd)))
  30.               )
  31.           x   (strcat "x=" (rtos (cadr zb) 2 jd))
  32.           y   (strcat "y=" (rtos (car zb) 2 jd))
  33.           ang (angle zb cld)
  34.     )
  35.     (setvar "osmode" 0)
  36.     (command "line")
  37.     (command (list (car zb) (cadr zb)))
  38.     (command (list (car cld) (cadr cld)))
  39.     (command "")
  40.     (if        (or (and (>= (* (/ ang pi) 180) 0)
  41.                  (<= (* (/ ang pi) 180) 90)
  42.             )
  43.             (and (>= (* (/ ang pi) 180) 270)
  44.                  (<= (* (/ ang pi) 180) 360)
  45.             )
  46.         )
  47.       (progn
  48.         (command "line")
  49.         (command (list (car cld) (cadr cld)))
  50.         (command (list (+ (car cld) (* gd len 0.8)) (cadr cld)))
  51.         (command "")
  52.         (setq ptx (list (car cld) (+ (cadr cld) (/ gd 1.5)))
  53.               pty (list (car cld) (- (cadr cld) (/ gd 1.5)))
  54.         )
  55.         (command "text" "ml" ptx gd "0" x)
  56.         (command "text" "ml" pty gd "0" y)
  57.       )
  58.       (progn
  59.         (command "line")
  60.         (command (list (car cld) (cadr cld)))
  61.         (command (list (- (car cld) (* len gd 0.8)) (cadr cld)))
  62.         (command "")
  63.         (setq ptx (list        (- (car cld) (* gd len 0.8))
  64.                         (+ (cadr cld) (/ gd 1.5))
  65.                   )
  66.               pty (list        (- (car cld) (* gd len 0.8))
  67.                         (- (cadr cld) (/ gd 1.5))
  68.                   )
  69.         )
  70.         (command "text" "ml" ptx gd "0" x)
  71.         (command "text" "ml" pty gd "0" y)
  72.       )
  73.     )
  74.     (setvar "osmode" o_os)
  75.   )
  76.   (command "UNDO" "E")
  77.   (setvar "dimzin" o_dz)
  78.   (setvar "blipmode" o_bl)
  79.   (setvar "osmode" o_os)
  80.   (setvar "cmdecho" o_cm)
  81. )
  82. (princ)[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-15 21:14:05 | 显示全部楼层
由于 程序以前写得较乱,我忘了序程运行中设置捕捉关闭了,谢谢xyp1964 整理程序,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 18:45 , Processed in 0.171260 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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