明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1500|回复: 1

[提问] 帮忙看看这个动态坐标 !

[复制链接]
发表于 2014-1-4 11:52:52 | 显示全部楼层 |阅读模式
  1. (VL-LOAD-COM)
  2. (or copy_reactor (setq copy_reactor (vlr-command-reactor "copy_reactor" '((:vlr-commandEnded . copy_1)))))
  3. (setvar "copymode" 1)
  4. (defun C:dtbz2 (/ p1 p2 pt1 pt2 pts mSpace Mtextobj )  
  5.   (setq mSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
  6.   (setq p1 (getpoint "\n选择要标注的点:"))
  7.   (setq p2 (getpoint p1 "\n选择标注文字位置:"))
  8.   (setq pt2 (vlax-3D-point p2))
  9.   (setq  Mtextobj (vla-addMtext mSpace pt2 0.0 (strcat "X="(rtos (car p1) 2 4) "\nY="(rtos (cadr p1) 2 4))))
  10. (setq MtextH (*(getvar "DIMSCALE")  (getvar "DIMTXT")));文字高度为当前标柱样式文字高度*全局比例
  11.   (vlax-put-property Mtextobj 'Height MtextH)
  12.   (vlax-put-property Mtextobj 'LineSpacingDistance (+ MtextH 1))
  13.   (if (> (car p1) (car p2))
  14.     (vlax-put-property Mtextobj 'AttachmentPoint 9)
  15.     (vlax-put-property Mtextobj 'AttachmentPoint 7)
  16.   )
  17.   (vlax-put-property Mtextobj 'InsertionPoint pt2)
  18.   (setq pts (vlax-make-safearray vlax-vbDouble '(0 . 5)))
  19.   (vlax-safearray-fill pts (list (car p1)(cadr p1)(caddr p1)(car p2)(cadr p2)(caddr p2)))
  20.   (setq leaderobj (vla-Addleader mSpace pts Mtextobj acLineWithArrow))
  21.   (setq vlr-objgx (vlr-object-reactor (list leaderobj) "" '((:vlr-modified . gx))))
  22.   (setq vlr-objcopy (vlr-object-reactor (list leaderobj) "" '((:vlr-copied . copy_2))))
  23.   (princ))

  24. (defun copy_2 (obj vlrobj data)
  25.   (if (/= (car data) 0)
  26.     (setq newename (car data))))

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

  33. (defun gx (obj vlrobj data / p1 pt1 Aobj)
  34.   (if (and (not(vlax-erased-p obj)) (setq Aobj (vlax-get-property obj 'Annotation)));判断对象是否被删除
  35.   (progn  (setq pt1 (vlax-get-property obj 'Coordinate 0))
  36.   (setq p1 (vlax-safearray->list (vlax-variant-value pt1)))
  37.   (vlax-put-property Aobj 'TextString (strcat  "X=" (rtos (car p1) 2 4) "\nY="(rtos (cadr p1) 2 4))))));小数保持4位
现在是 x y 轴的坐标都在引线上面  怎么改成引线在两个坐标中间呢!


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-1-5 09:46:37 | 显示全部楼层
请教!!!!!!111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 01:00 , Processed in 0.166530 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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