明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 743|回复: 5

修改标注11组码后,为什么第一个标注的位置会上移(左移)?

[复制链接]
发表于 2024-3-25 13:08:37 | 显示全部楼层 |阅读模式
    代码是一个标注文字居中的功能,通过修改70和11组码实现。但是在使用过程中发现,每次修改完毕后,第一个标注,也就是左边或上边的第一个标注,位置会发现改变,其余标注不存在这个问题。第一个标注是用线性标注画的,其余是用连续标注画的。这是什么原因呢,要如何修改才能避免以上情况发生?代码如下:

  1. (defun c:tt(/ en ent i len p10 p10x p10y p11 p13 p13x p13y p14 p14x p14y pt1 ss zhigao)
  2.   (if (setq ss (ssget "I"))
  3.     t
  4.     (setq ss (ssget '((0 . "DIMENSION"))))
  5.   )
  6.   (setq len (sslength ss)
  7.     i len
  8.   )
  9.   (repeat len
  10.     (setq en (ssname ss (setq i (1- i))))
  11.     (setq ent (entget en))
  12.     (setq zhigao (Vlax-Get (Vlax-Ename->Vla-Object en) 'TextHeight));字高
  13.     (setq p10 (cdr(assoc 10 ent)));标注线右端点坐标
  14.     (setq p11 (cdr(assoc 11 ent)));标注文字坐标
  15.     (setq p13 (cdr(assoc 13 ent)));左标注点坐标
  16.     (setq p14 (cdr(assoc 14 ent)));右标注点坐标
  17.     (setq p10x (car p10)
  18.       p10y (cadr p10)
  19.       p13x (car p13)
  20.       p13y (cadr p13)      
  21.       p14x (car p14)
  22.       p14y (cadr p14)
  23.     )
  24.     (cond
  25.       ((= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)));横向标注
  26.         (setq pt1 (list (* 0.5 (+ p13x p14x)) (+ p10y (* 0.3 zhigao)) 0));文字居中坐标
  27.         (setq ent (subst(cons 70 160)(assoc 70 ent)ent))
  28.         (setq ent (subst(cons 11 pt1)(assoc 11 ent)ent))
  29.         (entmod ent)
  30.         (entupd en)
  31.       )
  32.       ((= (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)));纵向标注
  33.         (setq pt1 (list (- p10x (* 0.3 zhigao)) (* 0.5 (+ p13y p14y)) 0));文字居中坐标
  34.         (setq ent (subst(cons 70 160)(assoc 70 ent)ent))
  35.         (setq ent (subst(cons 11 pt1)(assoc 11 ent)ent))
  36.         (entmod ent)
  37.         (entupd en)
  38.       )
  39.     )
  40.   )
  41.   (princ)
  42. )
录屏如下:

本帖子中包含更多资源

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

x
发表于 2024-3-26 01:08:40 | 显示全部楼层
这的原因

本帖子中包含更多资源

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

x
发表于 2024-3-26 01:17:36 | 显示全部楼层
这个可以设置 文字移动方式
  1. (Vlax-put (Vlax-Ename->Vla-Object en) 'TextMovement 1)

评分

参与人数 1明经币 +1 收起 理由
hubeiwdlue + 1 赞一个!

查看全部评分

 楼主| 发表于 2024-3-26 07:03:33 来自手机 | 显示全部楼层
谢谢大神指导。
 楼主| 发表于 2024-3-26 08:54:15 | 显示全部楼层
谢谢神光大神,70组码的修改,也是为了设置文字移动方式,但是组码修改并不完美,属性修改和"AIDIMTEXTMOVE"命令是一致的,有三个设置,分别是0,acDimLineWithText 尺寸线跟随文字移动。1,acMoveTextAddLeader 文字独立于尺寸线移动,但添加一条从文字到尺寸线的引线。2,acMoveTextNoLeader 文字独立于尺寸线移动,不添加从文字到尺寸线的引线。这样设置和绘图结果一致。


 楼主| 发表于 2024-3-26 09:04:14 | 显示全部楼层
修改之后的代码如下,可以实现标注文字居中,我主要用来处理结构缝处的标注:
  1. (defun c:tt(/ en ent i len p10 p10x p10y p11 p13 p13x p13y p14 p14x p14y pt1 ss zhigao)
  2.   (if (setq ss (ssget "I"))
  3.     t
  4.     (setq ss (ssget '((0 . "DIMENSION"))))
  5.   )
  6.   (setq len (sslength ss)
  7.     i len
  8.   )
  9.   (repeat len
  10.     (setq en (ssname ss (setq i (1- i))))
  11.     (setq ent (entget en))
  12.     (setq zhigao (Vlax-Get (Vlax-Ename->Vla-Object en) 'TextHeight));字高
  13.     (setq p10 (cdr(assoc 10 ent)));标注线右端点坐标
  14.     (setq p11 (cdr(assoc 11 ent)));标注文字坐标
  15.     (setq p13 (cdr(assoc 13 ent)));左标注点坐标
  16.     (setq p14 (cdr(assoc 14 ent)));右标注点坐标
  17.     (setq p10x (car p10)
  18.       p10y (cadr p10)
  19.       p13x (car p13)
  20.       p13y (cadr p13)      
  21.       p14x (car p14)
  22.       p14y (cadr p14)
  23.     )
  24.     (cond
  25.       ((= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)));横向标注
  26.         (setq pt1 (list (* 0.5 (+ p13x p14x)) (+ p10y (* 0.3 zhigao)) 0));文字居中坐标
  27.         (Vlax-put (Vlax-Ename->Vla-Object en) 'TextMovement 2)
  28.         (setq ent (subst(cons 11 pt1)(assoc 11 ent)ent))
  29.         (entmod ent)
  30.         (entupd en)
  31.       )
  32.       ((= (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)));纵向标注
  33.         (setq pt1 (list (- p10x (* 0.3 zhigao)) (* 0.5 (+ p13y p14y)) 0));文字居中坐标
  34.         (Vlax-put (Vlax-Ename->Vla-Object en) 'TextMovement 2)
  35.         (setq ent (subst(cons 11 pt1)(assoc 11 ent)ent))
  36.         (entmod ent)
  37.         (entupd en)
  38.       )
  39.     )
  40.   )
  41.   (princ)
  42. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:37 , Processed in 0.176741 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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