找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1410|回复: 1

[编程申请] 请教高手完善个动态标注的程序!!!

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2014-1-5 17:53:57 | 显示全部楼层 |阅读模式

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

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

×
  • (VL-LOAD-COM)
  • jssc_none.gif (or copy_reactor (setq copy_reactor (vlr-command-reactor "copy_reactor" '((:vlr-commandEnded . copy_1)))))
  • (setvar "copymode" 1)
  • (defun C:dtbz2 (/ p1 p2 pt1 pt2 pts mSpace Mtextobj )  
  •   (setq mSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
  •   (setq p1 (getpoint "\n选择要标注的点:"))
  •   (setq p2 (getpoint p1 "\n选择标注文字位置:"))
  •   (setq pt2 (vlax-3D-point p2))
  •   (setq  Mtextobj (vla-addMtext mSpace pt2 0.0 (strcat "X="(rtos (car p1) 2 4) "\nY="(rtos (cadr p1) 2 4))))
  • (setq MtextH (*(getvar "DIMSCALE")  (getvar "DIMTXT")));文字高度为当前标柱样式文字高度*全局比例
  •   (vlax-put-property Mtextobj 'Height MtextH)
  •   (vlax-put-property Mtextobj 'LineSpacingDistance (+ MtextH 1))
  •   (if (> (car p1) (car p2))
  •     (vlax-put-property Mtextobj 'AttachmentPoint 9)
  •     (vlax-put-property Mtextobj 'AttachmentPoint 7)
  •   )
  •   (vlax-put-property Mtextobj 'InsertionPoint pt2)
  •   (setq pts (vlax-make-safearray vlax-vbDouble '(0 . 5)))
  •   (vlax-safearray-fill pts (list (car p1)(cadr p1)(caddr p1)(car p2)(cadr p2)(caddr p2)))
  •   (setq leaderobj (vla-Addleader mSpace pts Mtextobj acLineWithArrow))
  •   (setq vlr-objgx (vlr-object-reactor (list leaderobj) "" '((:vlr-modified . gx))))
  •   (setq vlr-objcopy (vlr-object-reactor (list leaderobj) "" '((:vlr-copied . copy_2))))
  •   (princ))

  • (defun copy_2 (obj vlrobj data)
  •   (if (/= (car data) 0)
  •     (setq newename (car data))))

  • (defun copy_1 (vlrobj data)
  •   (if (wcmatch (strcase (car data)) "*COPY*")
  •     (progn (setq newobj (vlax-ename->vla-object newename))
  •       (setq vlr-objgx  (vlr-object-reactor (list newobj) "" '((:vlr-modified . gx))))
  •       (setq vlr-objcopy  (vlr-object-reactor (list newobj) "" '((:vlr-copied . copy_2))))
  •       (princ))))

  • (defun gx (obj vlrobj data / p1 pt1 Aobj)
  •   (if (and (not(vlax-erased-p obj)) (setq Aobj (vlax-get-property obj 'Annotation)));判断对象是否被删除
  •   (progn  (setq pt1 (vlax-get-property obj 'Coordinate 0))
  •   (setq p1 (vlax-safearray->list (vlax-variant-value pt1)))
  •   (vlax-put-property Aobj 'TextString (strcat  "X=" (rtos (car p1) 2 4) "\nY="(rtos (cadr p1) 2 4))))));小数保持4位
    需要修改的要求如下:
    1:引线改成在X Y的坐标中间!
    2:能否拖动引线 同时XY坐标也跟着移动
    3:如果批量处理;比如批量标注多段线顶点的坐标!


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 11:07 , Processed in 0.334487 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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