明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3285|回复: 12

假尺寸工具求完善

  [复制链接]
发表于 2011-6-13 18:16:19 | 显示全部楼层 |阅读模式
在别处论坛看到一个假尺寸工具,如果图纸中有不是1:1标注的尺寸,则将尺寸放入新建的图层,并以红色显示,但在实际绘图中,会遇到标注样式中尺寸线及文字都规定了颜色,因此使假尺寸工具不能正常工作,请求高手完善程序。
程序如下:
(defun c:dcu()
  (command "layer" "m" "ed-dim" "c" "1" "" "")
  (setq ss1 (ssget "x" '((0 . "DIMENSION"))))
  (setq cl (sslength ss1))
  (setq sum 0)
  (while (< 0 cl)
    (setq sn (- cl 1))
    (setq fn (ssname ss1 sn))
    (setq textdate (entget fn))
    (setq nub  (cdr (assoc '42 textdate)))
    (setq dim  (cdr (assoc '1 textdate)))
    (if (and (/= dim "") (not (WCMATCH dim "*<>*")))
    (progn
     (command "change" fn "" "p" "la" "ed-dim" "c" "1" "")
     )
    )
    (setq cl (- cl 1))
   )
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "cmdecho" cmd)
(princ)
)

问题:
1、如果图纸的标注样式中的尺寸线、文字颜色设置为固定的颜色,你的假尺寸工具就无法起作用了。
2、如果图纸的颜色也设置成固定的颜色,你的假尺寸工具就无法起作用了。
建议:
1、程序中增加使标注样式中尺寸线、文字颜色改为随块或层
2、更改图纸的颜色为随层。
 楼主| 发表于 2011-6-14 17:50:35 | 显示全部楼层
高手都隐居山林了?
 楼主| 发表于 2011-6-24 08:31:28 | 显示全部楼层
我不信所有有人对图纸中的尺寸是否为1:1漠不关心,顶起来。
我试过了,更改dimclre、dimclrd、dimclrt这几个系统变量,会在标注样式下增加一个替代样式,以前标注的颜色不会改变。
发表于 2011-6-24 11:40:55 | 显示全部楼层
;;修改一下给你参考

(defun c:dcu2()
  (command "layer" "m" "ed-dim" "c" "1" "" "")
  (setq ss1 (ssget "x" '((0 . "DIMENSION"))))
  (setq cl (sslength ss1))
  (setq sum 0)
  (while (< 0 cl)
    (setq sn (- cl 1))
    (setq fn (ssname ss1 sn))
    (setq textdate (entget fn))
    (setq nub  (cdr (assoc '42 textdate)))
    (setq dim  (cdr (assoc '1 textdate)))
       
    (setq VOBJ (vlax-ename->vla-object fn))
    (if (and VOBJ
             (vlax-read-enabled-p VOBJ)
             (not (wcmatch (vla-get-textoverride VOBJ) "*<>*,"))
             (vlax-write-enabled-p VOBJ)
        )
      (vla-put-textcolor VOBJ 1)   
      (vla-put-textcolor VOBJ 3)   
    )
   
    (setq cl (- cl 1))
   )
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "cmdecho" cmd)
(princ)
)
发表于 2011-6-24 12:18:49 | 显示全部楼层
yoyoho 发表于 2011-6-24 11:40
;;修改一下给你参考

(defun c:dcu2()

程序还有些不足,我提些意见:
1。如果所标注的尺寸只是前缀加了%%C或4X,即为%%C<>或4X<>,这样尺寸应该为正常的。因为实际尺寸还是1:1的
2。如果尺寸比如是10,正常显示为"" 或<>,那如果修改成了10.0,这样尺寸应该也视为正常的。因为实际尺寸还是1:1的
3。有必要的话再增加提示,在程序结束之后,说明有几处尺寸有修改过。。。。
只是建议,并非我想要的程序。。。。。
发表于 2011-6-24 12:43:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2011-6-25 14:07:33 | 显示全部楼层
多谢4楼,我去去研究一下。
发表于 2011-6-25 14:16:35 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2011-6-25 14:18 编辑

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;原来我搞了一个,不简洁。这个很简洁
(defun C:DimensionTorF (/ ss)
  (setq ss (ssget "X"
    '((0 . "DIMENSION")
      (-4 . "<AND")
      (-4 . "<NOT")
      (1 . "")
      (-4 . "NOT>")
      (-4 . "<NOT")
      (1 . "*<>*")
      (-4 . "NOT>")
      (-4 . "AND>")
     )
    )   
  )   
  (SS_hilite ss 3)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-6-25 14:20:22 | 显示全部楼层
定楼上,但是穷阿,买不起。
发表于 2011-9-7 14:47:10 | 显示全部楼层
能不能检测出来之后,自动修复呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 02:37 , Processed in 0.178558 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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