明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1628|回复: 3

求助帮忙分析修改标注文字的LISP程序漏洞

[复制链接]
发表于 2006-5-10 16:20:00 | 显示全部楼层 |阅读模式

由于工程加工精度的要求要改变,本人有几百张横料加工图要做以下修改,把标注为
107的改为106
38的改为39
40的改为39.5
50的改为49.5
48的改为47.5
58的改为57
由于修改量太大,图纸太多,这么多尺寸改起来也容易漏。故做了个程序。
DEFUN c:md()
  (vl-load-com)
 
(setq MODDIM (ssget "x" '((0 . "dimension"))))        

(setq count 0)
(setq qty (sslength MODDIM))
  (repeat qty
  (setq ename (ssname MODDIM count))
  (setq objname (vlax-ename->vla-object ename))
    (setq txttest (vla-get-TextOverride objname))
    (setq meatest (vla-get-Measurement objname))
   (if (= meatest 107.0)
    (vla-put-textoverride objname 106)
     )
    (if (= txttest "107")
     (vla-put-textoverride objname 106)
      )
    (if (= meatest 38.0)
    (vla-put-textoverride objname 39)
     )
    (if (= txttest "38")
     (vla-put-textoverride objname 39)
      )
    (if (= meatest 40.0)
    (vla-put-textoverride objname 39.5)
     )
    (if (= txttest "40")
     (vla-put-textoverride objname 39.5)
      )
    (if (= meatest 50.0)
    (vla-put-textoverride objname 49.5)
     )
    (if (= txttest "50")
     (vla-put-textoverride objname 49.5)
      )
    (if (= meatest 48.0)
    (vla-put-textoverride objname 47.5)
     )
    (if (= txttest "48")
     (vla-put-textoverride objname 47.5)
      )
    (if (= meatest 58.0)
    (vla-put-textoverride objname 57)
     )
    (if (= txttest "58")
     (vla-put-textoverride objname 57)
      )
   (setq count (+ count 1))

    )


但此程序在我的加工图纸中不能正确运行。出现有的尺寸改了,有的尺寸就是改不了。不知为什么,小弟特来此找高手求救。望快快解答,不胜感激。附加工图和程序。大家帮我。

本帖子中包含更多资源

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

x
发表于 2006-5-10 17:05:00 | 显示全部楼层
  1. ;;批量处理就交给你做
  2. (defun C:MD (/ COUNT LST MEATEST MODDIM OBJ TXTTEST WW)
  3.   (vl-load-com)
  4.   (if (setq MODDIM (ssget "x" '((0 . "dimension"))))
  5.     (progn
  6.       (setq COUNT 0)
  7.       (setq LST '(("107" . 106)
  8.     ("38" . 39)
  9.     ("40" . 39.5)
  10.     ("50" . 49.5)
  11.     ("48" . 47.5)
  12.     ("58" . 57)
  13.    )
  14.       )
  15.       (repeat (sslength MODDIM)
  16. (setq OBJ (vlax-ename->vla-object (ssname MODDIM COUNT)))
  17. (setq TXTTEST (vla-get-textoverride OBJ))
  18. (setq MEATEST (rtos (vla-get-measurement OBJ) 2 0))
  19. (if (or (setq WW (assoc MEATEST LST))
  20.   (setq WW (assoc TXTTEST LST))
  21.      )
  22.    (vla-put-textoverride OBJ (cdr WW))
  23. )
  24. (setq COUNT (+ COUNT 1))
  25.       )
  26.     )
  27.   )
  28.   (princ)
  29. )
 楼主| 发表于 2006-5-10 17:51:00 | 显示全部楼层

老师,太感谢你了,我不知道怎么表达我的谢谢,我本来是没有想到有这么快的。我太感谢论坛了,我决定捐款支持论坛,因为我感到论坛的速度有点太慢了。我的程序写的太小儿科了,向老师学习。

发表于 2022-3-22 19:18:23 | 显示全部楼层

大哥能把标注文字直接改成EQ吗?EQ是平分的意思我们专业经常用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 01:59 , Processed in 0.317021 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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