天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 87|回复: 0

AutoLISP/Visual LISP 改块的颜色

[复制链接]
  • TA的每日心情
    开心
    2024-8-31 15:58
  • 签到天数: 89 天

    [LV.6]常住居民II

    488

    主题

    207

    回帖

    3366

    积分

    管理员

    积分
    3366
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    改块的颜色

    (defun c:ChBlkColor (/ ChBlkColor SS blks I Obj BnLst)
      (defun ChBlkColor (Blks Obj Color / BlkName oName)
        (if (and (= (vla-get-ObjectName obj) "AcDbBlockReference")
                 (= (vla-get-HasAttributes obj) :vlax-true)
            )
          (foreach x (vlax-invoke obj 'getattributes)
            (vla-put-color x Color)
          )
        )
        (setq BlkName (vla-get-name obj))
        (if (not (member BlkName bnlst))
          (progn
            (setq bnlst (cons BlkName BnLst))
            (vlax-for X (vla-item Blks BlkName)
              (setq oName (vla-get-ObjectName X))
              (cond ((wcmatch oName "*Dimension,AcDbLeader,AcDbFcf")
                     (vla-put-DimensionLineColor X Color)
                     (if (wcmatch oName "*Dimension")
                       (progn
                         (vla-put-ExtensionLineColor X Color)
                         (if (setq BlkName (assoc 2 (entget (vlax-vla-object->ename X))))
                           (vlax-for X (vla-item Blks (cdr BlkName))
                             (vla-put-color X Color)
                           )
                         )
                       )
                     )
                     (if (wcmatch oName "*Dimension,AcDbFcf")
                       (vla-put-TextColor X Color)
                     )
                    )
                    ((= oName "AcDbBlockReference")
                     (ChBlkColor Blks X Color)
                    )
              )
              (vla-put-color X Color)
            )
          )
        )
        (vla-UpDate obj)
      )
      (if (and (setq ss (ssget '((0 . "insert"))))
               (or $ChBlkColor$ (setq $ChBlkColor$ 7))
               (setq $ChBlkColor$ (acad_colordlg $ChBlkColor$))
          )
        (progn
          (setq blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
          (repeat (setq i (sslength ss))
            (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
            (ChBlkColor Blks Obj $ChBlkColor$)
          )
        )
      )
      (princ)
    )

     

     

     

     

    AutoLISP/Visual LISP 改块的颜色
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 10:45 , Processed in 0.064610 second(s), 27 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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