明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2387|回复: 8

[求助] 哪们大大帮忙写个尺寸检查程序

[复制链接]
发表于 2010-5-2 00:34:00 | 显示全部楼层 |阅读模式

有时由于各种原因将标注好的尺寸手动修改或打散了 

等以后修改图面时不知哪些修改过了   如果使用拉伸等命令尺寸不会跟着变,很容易出错

能不能写个检查程序  框一个范围就检查这里面有哪些尺寸是修改过的,然后高亮显示

谢谢

 楼主| 发表于 2010-5-3 11:14:00 | 显示全部楼层

我这有一参考程序,但我只想知道哪些是改过的   谢谢

;切断尺寸关联,可在尺寸放缩后不改变尺寸数值,望需要着共同享用,cdim1为将关联尺寸取消,cdim2为将关联还原。
;将尺寸值改为固定数值
(DEFUN C:CHDIM1 ()
 (princ "\nselect object:")
 (setq s (ssget))
 (setq n (sslength s))
 (setq k 0 )
 (while (< k n)
      (setq name (ssname s k))
      (setq a (entget name))
      (setq b (assoc '0 a))
      (setq b (cdr b))
      (if (= b "DIMENSION")(progn
        (setq h1 (assoc '42 a))
        (setq h1 (cdr h1))
        (setq h1 (rtos h1 2 0))
        (setq h2 (assoc '1 a))
        (setq h1 (cons 1 H1))
        (setq a (subst h1 h2 a))
        (entmod a)
        ))
      (setq k (+ k 1))
 )
)


;将尺寸值改为可变数值
(DEFUN C:CHDIM2 ()
 (princ "\nselect object:")
 (setq s (ssget))
 (setq n (sslength s))
 (setq k 0 )
 (while (< k n)
      (setq name (ssname s k))
      (setq a (entget name))
      (setq b (assoc '0 a))
      (setq b (cdr b))
      (if (= b "DIMENSION")(progn
        (setq h2 (assoc '1 a))
        (setq h1 (cons 1 ""))
        (setq a (subst h1 h2 a))
        (entmod a)
        ))
      (setq k (+ k 1))
 )
)

 楼主| 发表于 2010-5-3 11:37:00 | 显示全部楼层
参考程序
(defun scale_db        (/ lfac ans ceco)        ;判斷尺寸標注所用數值是否為實測距離,並做出相應處理.sssssssssssssssssssssssssss
  (setvar "cmdecho" 0)
  (setq        lfac (getvar "dimlfac")
        ceco (getvar "cecolor")
        ans  ""
  )                                        ;end setq
  (if (/= lfac 1)
    (progn
      (while (AND (/= ans "N") (/= ans "Y"))
        (setq
          ans (strcase (getstring (strcat "\n此時標注之尺寸為實距的"
                                          (rtos lfac)
                                          "倍,是否繼續標注?(Y/N)"
                                  ) ;_ end of strcat
                       ) ;_ end of getstring
              ) ;_ end of strcase
        )                                ;end setq
        (if (= ans "N")
          (progn
            (setvar "dimlfac" 1)
;;;            (command "color" "bylayer")
          )                                ;end progn then
        )                                ;end if  (= ans "N")
;;;        (if (= ans "Y")
;;;              (command "color" "cyan")
;;;        )                                ;end if (= ans "Y")

      )                                        ;END while

    )                                        ;end progn then
                                        ;else
;;;    (progn
;;;          (command "color" "bylayer")
;;;    )                                        ;end progn else
  )                                        ;end if (/= lfac 1.0)
)                                        ;end defun scale
发表于 2010-5-3 20:27:00 | 显示全部楼层
;;如尺寸值與文本一致,則文本不變色,否則文本被修改但顏色
;;變如紅色,這樣用戶對這個功能會更好理解也容易維護。
;;BY LUCAS 2004.9
(defun C:TT (/ SS N VOBJ)
  (setq SS (ssget "X" '((0 . "DIMENSION")))
 N  0
  )
  (repeat (sslength SS)
    (setq VOBJ (vlax-ename->vla-object (ssname SS N)))
    (if (and VOBJ
      (vlax-read-enabled-p VOBJ)
      (not (wcmatch (vla-get-textoverride VOBJ) "*<>*,"))
      (vlax-write-enabled-p VOBJ)
 )
      (vla-put-textcolor VOBJ 1)
    )
    (setq N (1+ N))
  )
  (princ)
)
发表于 2010-5-3 21:14:00 | 显示全部楼层
版主最后那程序最好是可以选择范围检查
 楼主| 发表于 2010-5-3 21:15:00 | 显示全部楼层
版主 我把ssget "X" \'((0 . "DIMENSION"  里的\去掉 结果运行到(ssname SS N)这地方又出问题了  

tt ; 错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT

是不我这CAD和你们有什么不同啊  都要把\去掉   

请版主再看看
发表于 2010-5-4 22:23:00 | 显示全部楼层
1、不知道为什么会有\?我这里都没有。
2、函数找不到,程序前头加上一行(vl-load-com)试试。
 楼主| 发表于 2010-5-4 23:39:00 | 显示全部楼层
OK   问题解决   我自己试了好久就是搞不定
  
真厉害  谢谢
 楼主| 发表于 2010-5-4 23:50:00 | 显示全部楼层
版主  这个程序非常好用       能不能再编个检查尺寸标注放大倍数的 就是有些尺寸标注时已经改了比例因子的  用另一种颜色表示

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

本版积分规则

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

GMT+8, 2025-2-27 20:14 , Processed in 0.181398 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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