明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1283|回复: 7

<求助>有关标注对象替换更新

[复制链接]
发表于 2011-5-22 17:16 | 显示全部楼层 |阅读模式
本帖最后由 AMTONNY 于 2011-5-29 09:55 编辑

我有一程序需要如下功能,选择标注对象(一般为直径或者单径标注),将所选标注的内容更改为已经设置好了的内容,但我程序只对单行文字有效,对多行文字和标注文字无效,把过滤对象设为  (ssget '((0 . "DIMENSION")))或者  MTEXT 都不能成功更新,请各位高手出手相助,谢谢!


现程序对单行文本运行正常,

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-5-23 10:44 | 显示全部楼层
怎么没有人出手呀?
 楼主| 发表于 2011-5-27 07:52 | 显示全部楼层
怎么没有那位大侠帮忙哦
 楼主| 发表于 2011-5-28 19:57 | 显示全部楼层
真不知此贴难度过大还是各位大侠很忙,放上不这么久也没有人能解决,难道这么点问题也没有人能做出来吗?
发表于 2011-5-29 21:42 | 显示全部楼层
本帖最后由 yshf 于 2011-5-29 22:57 编辑

试试这个:

  1. (defun C:jh ()
  2.      (vl-load-com)
  3.      (setq text_M5_A "5.00")
  4.      (setq text_M5_B "5.0 孔 ( %%C5钻穿 )")
  5.      (if (setq text_txt (ssget '((0 . "DIMENSION"))))
  6.          (progn
  7.             (setq index 0)
  8.             (repeat (sslength text_txt)
  9.                 (setq text_ent (ssname text_txt index)
  10.                       Object   (vlax-ename->vla-object text_ent)
  11.                       ObjectName (vla-get-ObjectName Object)
  12.                 )
  13.                 (if (= ObjectName "AcDbDiametricDimension") ;直径
  14.                     (progn
  15.                         (if (= (setq text_A (vla-get-TextOverride Object)) "")
  16.                             (setq text_A (strcat "%%C" (rtos (vla-get-Measurement Object))))
  17.                         )
  18.                         (setq text_A_L (strlen text_A))        
  19.                         (setq text_M5_AL (strlen text_M5_A))
  20.                         (setq n 1)
  21.                         (if (= text_M5_A "") (setq text_A_L 1))
  22.                         (repeat text_A_L
  23.                             (setq text_M5_Ax (substr text_A n text_M5_AL))
  24.                             (if (= text_M5_Ax text_M5_A)
  25.                                 (progn               
  26.                                     (setq newsize (vl-string-subst text_M5_B text_M5_A text_A))
  27.                                     (vla-put-TextOverride Object newsize)
  28.                                     (vla-update Object)
  29.                                )
  30.                             )
  31.                             (setq n (1+ n))
  32.                         )
  33.                     )
  34.                 )
  35.                 (setq index (+ 1 index))
  36.                
  37.                
  38.             )
  39.          )
  40.      )
  41.      (princ)
  42. )
 楼主| 发表于 2011-5-29 21:58 | 显示全部楼层
谢谢楼上的帮忙,但我试了一下,发现不能正常运行,返回以下:
选择对象:  ; 错误: 此类型的 LISP 值不能强制转换成 VARIANT:  (1 . "%%C5.0 孔 (
%%C5钻穿 )00"),麻烦再帮忙看看,谢谢!
发表于 2011-5-29 22:58 | 显示全部楼层
5楼已修改,请重试。
 楼主| 发表于 2011-5-29 23:05 | 显示全部楼层
谢谢楼上帮忙,已经达到要求了,非常感谢你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 07:01 , Processed in 0.169489 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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