明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2662|回复: 2

程序对带有中心十字标注NEST BLOCK的颜色却有点问题!!!!請指教...

[复制链接]
发表于 2002-11-18 15:32:00 | 显示全部楼层 |阅读模式
;;这是一个修改颜色的程序,
;;几乎对所有对象包括NEST BLOCK均有效
;;但它对带有中心十字标注NEST BLOCK的颜色却有点问题
;;当炸开带有中心十字标注的NEST BLOCK
;;中心十字颜色即恢覆原色
;;可有解决辨法?????


(defun C:CH_COLOR (/ QQ APP APPDOC COL)

  (defun DO_1 (M)

    (vl-catch-all-apply
      (function        (lambda        ()
                  (vla-put-color M COL)
                  (vla-put-dimensionlinecolor M COL)
                  (vla-put-textcolor M COL)
                  (vla-put-extensionlinecolor M COL)
                )
      )
    )

    (if        (and (= (vla-get-objectname M) "AcDbBlockReference")
             (= (vla-get-hasattributes M) :vlax-true)
        )
      (mapcar
        '(lambda (NN)
           (vla-put-color NN COL)
         )
        (vlax-safearray->list
          (vlax-variant-value
            (vla-getattributes
              M
            )
          )
        )
      )
    )

    (if        (= (vla-get-objectname M) "AcDbBlockReference")
      (vlax-for        M1 (vla-item (vla-get-blocks APPDOC) (vla-get-name M))
        (DO_1 M1)
      )
    )

    (if        (= "DIMENSION"
           (cdr (assoc 0 (entget (vlax-vla-object->ename M))))
        )
      (vlax-for        M2
                (vla-item
                  (vla-get-blocks APPDOC)
                  (cdr (assoc 2 (entget (vlax-vla-object->ename M))))
                )
        (DO_1 M2)
      )
    )

  )

  (setq APP (vlax-get-acad-object))
  (setq APPDOC (vla-get-activedocument APP))
  (vla-startundomark APPDOC)
  (setq COL (acad_colordlg 7))
  (defun ACTIVE-SS ()
    (vla-get-activeselectionset APPDOC)
  )
  (setq QQ (ssget (list (cons 410 (getvar "ctab")))))
  (setq QQ (ACTIVE-SS))
  (vlax-for N QQ
    (DO_1 N)
  )
  (vla-update APP)
  (vla-endundomark APPDOC)
  (princ)
)

本帖子中包含更多资源

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

x
发表于 2002-11-19 10:49:00 | 显示全部楼层

复龙龙仔大侠

您的程序很漂亮,至于圆心标注颜色问题并不完全是程序错误。我试过,您的程序对于图块嵌套(我不知道你说的NEST BLOCK是不是指嵌套图块)没有发现问题,而仅仅只是在处理炸开后的直径或半径的圆心标记时出现您你说的现象。
仔细阅读了您的程序和AutoCAD DXF文档,在程序中,函数DO_1确实将标注颜色更改了,但炸开后,标注成为单一对象,ACAD将从标注样式表中提取标注样式,引出线、文字等有颜色属性的子对象将使用更改后的颜色,而圆心标记我在DXF文档中未找到其颜色属性(甚至在标注样式表也未找到它,否则可以用修改标注样式表的方法解决问题),从而ACAD调用默认颜色绘制圆心标记,以致出现您所说的问题。
我对AutoCAD,尤其是VisualLISP ActiveX函数的熟悉程度和理解程度可能远不及龙龙仔大侠您,您的问题我无法提出解决方案,SRY。不过,您可试着向陈老师提出问题。也欢迎对此有兴趣的网友继续讨论。
发表于 2002-12-19 01:33:00 | 显示全部楼层

圆心标记不是两条垂直线么?

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

本版积分规则

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

GMT+8, 2024-11-29 00:42 , Processed in 0.165149 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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