明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 370|回复: 1

[源码] 【求助】请问XY坐标横线上下标注该如何修改

[复制链接]
发表于 2020-6-9 19:27 | 显示全部楼层 |阅读模式
本帖最后由 yangchao2005090 于 2020-6-10 07:38 编辑
  1. ;; (_AddMleader (getpoint) (getpoint) "A" 3.5)
  2. (defun _AddLeader (p1 p2 str Ang TextHeight / HANDLEM OBJL OBJM POINTS)
  3.   (setq points (vlax-make-safearray vlax-vbDouble '(0 . 5)))
  4.   (vlax-safearray-fill points (append P1 p2))
  5.   ;;(vla-AddMText modelSpace corner width text)
  6.   (setq ObjM (vla-AddMText *MS* (vlax-3d-point p2) 1 str))
  7.   ;;Height AttachmentPoint Handle Width
  8.   (vlax-put ObjM 'Height TextHeight);05版用vla-put-TextHeight不灵
  9.   (vlax-put ObjM 'AttachmentPoint 7);左下角
  10.   (vlax-put ObjM 'Width 0);没有框,只有左下角一个夹点
  11.   ;;BackgroundFill 05版及以上16.1
  12.   (cond ((> (atof (getvar "ACADVER")) 16) (vlax-put ObjM 'BackgroundFill 1)))
  13.   (vlax-put ObjM 'Rotation Ang)
  14.   (setq ObjL (vla-AddLeader *MS* points ObjM acLineNoArrow))
  15.   (setq HandleM (vlax-get ObjM 'Handle))  
  16.   ;;(vlr-pers (VLR-Object-Reactor (list ObjL) (list HandleM) '((:VLR-modified . _LeaderModify))))
  17.   (VLR-Object-Reactor (list ObjL) (list HandleM) '((:VLR-modified . _LeaderModify)))
  18.   (list ObjM ObjL)
  19. )
  20. (defun _LeaderModify (ObjL ObjMList parameter-list / EL EM EN PTS STR)
  21.   (setq eL (vlax-vla-object->ename ObjL))
  22.   (setq pts (vlax-get ObjL 'Coordinates))
  23.   (setq eM (handent (car (vlr-data ObjMList))))                    ;文本
  24.   (setq en (entget em))
  25.   (setq        str (strcat "X="
  26.                      (VL-PRINC-TO-STRING (cadr pts))
  27.                      "\\P"
  28.                      "Y="
  29.                      (VL-PRINC-TO-STRING (car pts))
  30.                    )
  31.   )
  32.   (entmod (subst (cons 1 str) (assoc 1 en) en))
  33. )
  34. ;;坐标标注(全局*Ang_ZBBZ*)
  35. (defun C:ZBBZ (/ ANS FLAG GR OBJ P1 P2 STR TEXTHEIGHT zbbz1 zbbz2)
  36.   (defun zbbz1 ()
  37.     (initget "S ")
  38.     (setq p1 (getpoint "\n 坐标点, or [输入角度S] <S>:"))
  39.   )
  40.   (defun zbbz2 ()
  41.     (setq AnS (zbbz1))
  42.     (cond
  43.       ((= AnS "S") (setq *Ang_ZBBZ* (getangle "\n文字倾角")) (zbbz2))
  44.       ((= (type AnS) 'List)
  45.         (princ "\n放置")
  46.         (while (equal (setq p2 (cadr (grread T 8))) AnS TextHeight))
  47.         (setq str (strcat "X="
  48.                     (VL-PRINC-TO-STRING (cadr AnS))
  49.                     "\\P"
  50.                     "Y="
  51.                     (VL-PRINC-TO-STRING (car AnS))
  52.                   )
  53.         )
  54.         (setq Obj (_AddLeader AnS p2 str *Ang_ZBBZ* TextHeight))
  55.         ;;(vlax-put ObjL 'Coordinates (append AnS p2))
  56.         ;;(vlax-put ObjM 'InsertionPoint p2)
  57.         (while (and (setq gr (grread T 8)) (= (car gr) 5))
  58.           (setq p2 (cadr gr))         
  59.           (cond ((not(equal p2 AnS TextHeight))
  60.                   (vlax-put (car Obj) 'InsertionPoint p2)
  61.                   (vlax-put (cadr Obj) 'Coordinates (append AnS p2))
  62.                   ;;(vla-update (cadr Obj));更新不了
  63.                 )
  64.           )
  65.         )
  66.       )
  67.       (T (setq Flag nil))
  68.     )
  69.   )
  70.   (vl-Load-COM)
  71.   (or *ACAD* (setq *ACAD* (vlax-get-acad-object)))
  72.   (or *DOC* (setq *DOC* (vla-get-ActiveDocument *ACAD*)))
  73.   (or *MS* (setq *MS* (vla-get-modelSpace *DOC*)))
  74.   (cond((not *Ang_ZBBZ*)(setq *Ang_ZBBZ* 0)))
  75.   (SETQ TextHeight (* (GETVAR "DIMTXT") (GETVAR "DIMSCALE"))) ;字高
  76.   (setq Flag T)
  77.   (while Flag (zbbz2))
  78.   (princ)
  79. )


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2020-6-11 21:41 | 显示全部楼层
求大神帮忙修改一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 12:43 , Processed in 0.282047 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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