明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1521|回复: 11

[源码] (求助)尺寸加前缀功能求改

[复制链接]
发表于 2023-4-12 15:38:44 | 显示全部楼层 |阅读模式
3明经币
程序是论坛的大神的
地址http://bbs.mjtd.com/thread-186646-1-1.html?_dsign=0cb88072

程序功能  是给尺寸前缀加Φ,如果尺寸前缀有Φ则去除Φ,没有Φ则加Φ。

有没有大神帮改一下,改成尺寸后缀加“(通孔)”,如果尺寸后缀有“(通孔)”则去除“(通孔)”,没有“(通孔)”则加“(通孔)”。
附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2023-4-12 15:38:45 | 显示全部楼层

改了下,,应该可以了

xudongchu 发表于 2023-4-12 16:44
谢谢你的回复,是需要的功能。
但是有BUG,当尺寸有前缀或者后缀时,程序就变成了前缀加“通孔”的功能 ...
  1. ;1尺寸前加前缀φ
  2. (defun C:TT (/ E N OBJ SS TEXTOVERRIDE )
  3.   (while (and (setvar "nomutt" 1)
  4.         (princ "\n 选择尺寸,切换前缀φ")
  5.         (setq ss (ssget ":S" '((0 . "*DIMENSION"))))
  6.         (setvar "nomutt" 0)
  7.    )
  8.     (repeat (setq n (sslength ss))
  9.       (setq e (ssname ss (setq n (1- n))))
  10.       (setq obj (vlax-ename->vla-object e))
  11.       (setq TextOverride (vlax-get obj 'TextOverride))
  12.       (if (= "" TextOverride)
  13.   (if (= (vla-get-TextSuffix obj) "(通孔)")
  14.     (vla-put-TextSuffix  obj "")
  15.     (vla-put-TextSuffix  obj "(通孔)")
  16.   )
  17.   (if (or  (wcmatch TextOverride "*(通孔)")
  18.     (wcmatch TextOverride "(通孔)*")
  19.     (wcmatch TextOverride "*(通孔)*")
  20.       )
  21.     (progn
  22.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  23.         (setq TextOverride
  24.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  25.         )
  26.       )
  27.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  28.         (setq TextOverride
  29.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  30.         )
  31.       )
  32.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  33.         (setq TextOverride
  34.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  35.         )
  36.       )
  37.       (vla-put-TextOverride obj TextOverride)
  38.     )
  39.     (vla-put-TextOverride obj (strcat  TextOverride "(通孔)"))
  40.   )
  41.       )
  42.     )
  43.   )
  44.   (setvar "nomutt" 0)      ;空选时执行
  45. )
回复

使用道具 举报

发表于 2023-4-12 15:50:33 | 显示全部楼层
神一样的需求描述:改成尺寸后缀加“(通孔)”,如果尺寸后缀有“(通孔)”则去除“(通孔)”,没有“(通孔)”则加“(通孔)”
按描述,假设部分尺寸后缀有“(通孔)”,部分没有,那么运行两次后和没运行完全一样。。。这是楼主希望的么?
回复

使用道具 举报

发表于 2023-4-12 16:16:13 | 显示全部楼层

改了下,,你看下是不是你要的

  1. ;1尺寸后加加前通孔
  2. (defun C:TT (/ E N OBJ SS TEXTOVERRIDE)
  3.   (while (and (setvar "nomutt" 1)
  4.         (princ "\n 选择尺寸,切换前缀φ")
  5.         (setq ss (ssget ":S" '((0 . "*DIMENSION"))))
  6.         (setvar "nomutt" 0)
  7.    )
  8.     (repeat (setq n (sslength ss))
  9.       (setq e (ssname ss (setq n (1- n))))
  10.       (setq obj (vlax-ename->vla-object e))
  11.       (setq TextOverride (vlax-get obj 'TextOverride))
  12.       (if (= "" TextOverride)
  13.   (if (= (vla-get-TextSuffix obj) "(通孔)")
  14.     (vla-put-TextSuffix  obj "")
  15.     (vla-put-TextSuffix  obj "(通孔)")
  16.   )
  17.   (if (or  (wcmatch TextOverride "*(通孔)")
  18.     (wcmatch TextOverride "*(通孔)")
  19.     (wcmatch TextOverride "*(通孔)")
  20.       )
  21.     (progn
  22.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  23.         (setq TextOverride
  24.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  25.         )
  26.       )
  27.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  28.         (setq TextOverride
  29.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  30.         )
  31.       )
  32.       (while (VL-STRING-SEARCH "(通孔)" TextOverride)
  33.         (setq TextOverride
  34.          (VL-STRING-SUBST "" "(通孔)" TextOverride)
  35.         )
  36.       )
  37.       (vla-put-TextOverride obj TextOverride)
  38.     )
  39.     (vla-put-TextOverride obj (strcat "(通孔)" TextOverride))
  40.   )
  41.       )
  42.     )
  43.   )
  44.   (setvar "nomutt" 0)      ;空选时执行
  45. )

回复

使用道具 举报

 楼主| 发表于 2023-4-12 16:44:04 | 显示全部楼层

谢谢你的回复,是需要的功能。
但是有BUG,当尺寸有前缀或者后缀时,程序就变成了前缀加“通孔”的功能了。
回复

使用道具 举报

 楼主| 发表于 2023-4-12 16:50:37 | 显示全部楼层
llsheng_73 发表于 2023-4-12 15:50
神一样的需求描述:改成尺寸后缀加“(通孔)”,如果尺寸后缀有“(通孔)”则去除“(通孔)”,没有“( ...

谢谢你的回复,是的。
回复

使用道具 举报

 楼主| 发表于 2023-4-12 17:02:21 | 显示全部楼层

谢谢 测试没问题。
回复

使用道具 举报

发表于 2023-4-12 19:34:35 | 显示全部楼层
本帖最后由 xyp1964 于 2023-4-12 19:36 编辑

  1. (defun c:tt ()
  2.   ;; 尺寸后缀加减“(通孔)”
  3.   (while (and (princ "\n选择尺寸,切换前缀φ")
  4.               (setq ss (ssget '((0 . "*DIMENSION"))))
  5.          )
  6.     (setq i -1)
  7.     (while (setq e (ssname ss (setq i (1+ i))))
  8.       (setq obj (vlax-ename->vla-object e))
  9.       (if (= (vla-get-TextSuffix obj) "(通孔)")
  10.         (vla-put-TextSuffix obj "")
  11.         (vla-put-TextSuffix obj "(通孔)")
  12.       )
  13.     )
  14.   )
  15.   (princ)
  16. )
回复

使用道具 举报

 楼主| 发表于 2023-4-13 10:57:52 | 显示全部楼层
回复

使用道具 举报

发表于 2023-5-4 20:38:47 | 显示全部楼层

院长好,请教下批量改变标注值的倍数,这个代码怎么弄
(defun c:TT (/ factor ss obj)
(setq factor (getreal "\nEnter scale factor: "))
(setq ss (ssget "_X" '((0 . "DIMENSION"))))
(if ss
(progn
(setq count 0)
(vl-loop-for i 0 (1- (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss i)))
(vla-put-dimscale obj (* (vla-get-dimscale obj) factor))
(setq count (1+ count))
)
(princ (strcat "\n" (itoa count) " dimensions scaled."))
)
(princ "\nNo dimensions found.")
)
(princ)
)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 12:15 , Processed in 0.181684 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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