Terence688 发表于 2024-10-28 08:22:46

求助各位大佬们

本帖最后由 Terence688 于 2024-10-28 14:29 编辑

大佬们,求助一个批量修改图纸内各种样式标注线颜色的插件(包含块内标注线)只改线的颜色(尺寸线)(尺寸界线)文字颜色不用改!!颜色可以自由选择

xtjd 发表于 2024-10-28 11:42:49

(vla-put-ExtensionLineColor(Vlax-Ename->Vla-Object(Car(Entsel))) 1)
(vla-put-DimensionLineColor(Vlax-Ename->Vla-Object(Car(Entsel))) 2)

杨小五 发表于 2024-10-30 17:00:41

修改框选中的所有标注(含块内标注)的线的颜色,借荐了另一个老师的部分代码
(defun c:tt()
(vl-load-com)
(setq bnlst nil)
(setq ss(ssget '((0 . "insert,*Dimension"))))
(setq col(acad_colordlg 1))
(setq i 0)
(repeat (sslength ss)
(setq obj(ssname ss i) v_obj(vlax-ename->vla-object obj))
(setq blks(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))))

(If (= (cdr (assoc 0 (entget obj))) "INSERT")
    (chblkcolor blks v_obj col)
    (progn
   (if (and(/= (vla-get-objectname v_obj) "AcDbDiametricDimension")
             (/= (vla-get-objectname v_obj) "AcDbRadialDimension")
             )
   (vla-put-ExtensionLineColor v_obj col)
       )
   (vla-put-DimensionLineColor v_obj col)
      )
    )
    (setq i(1+ i))
    )
      

)

(defun ChBlkColor (Blks Obj Color / BlkName oName)
    ;; 定义一个内部递归函数 ChBlkColor,用于处理块的颜色和图层设置
    (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
                (if (and(/= oname "AcDbDiametricDimension")
                   (/= oname "AcDbRadialDimension")
                 )
                  (vla-put-ExtensionLineColor X Color)         ;; 设置延伸线颜色
                  )
                  (if (setq BlkName (assoc 2 (entget (vlax-vla-object->ename X)))) ;; 获取尺寸关联的块名称
                  (vlax-for X (vla-item Blks (cdr BlkName)) ;; 遍历关联块中的所有对象
                      (if (wcmatch (vla-get-objectname x) "*Line")
                      (vla-put-color X Color)               ;; 设置对象颜色
                        )
                  )
                  )
                )
            )
            )
            ((= oName "AcDbBlockReference")                  ;; 如果对象是块引用
            (ChBlkColor Blks X Color)                        ;; 递归调用 ChBlkColor 处理嵌套块
            )
          )
      )
      )
    )

   
;;;    (vla-UpDate obj)                                           ;; 更新对象以反映更改
(command "regen")
)

kozmosovia 发表于 2024-10-28 14:27:20

全图所有标注都改
(vlax-for blk (vla-get-blocks
                (vla-get-activedocument (vlax-get-acad-object))
              )
(vlax-for dim        blk
    (and (= (substr (vla-get-name dim) 1 2) "*D")
       (= (vla-put-ExtensionLineColor dim 1)
          (vla-put-DimensionLineColor dim 2)
       )
    )
)
)

陈鱼儿 发表于 2024-10-28 11:02:40

改成什么颜色?

qazxswk 发表于 2024-10-28 11:07:03

可以修改标注样式里的颜色呀

Terence688 发表于 2024-10-28 12:15:43

颜色可以自由选择

Terence688 发表于 2024-10-28 12:18:35

是要批量修改各种不同样式的线的颜色,颜色可以自选择

kozmosovia 发表于 2024-10-28 13:57:50

可以快速选择出所有尺寸标注,然后在属性面板修改标注线颜色

Terence688 发表于 2024-10-28 14:19:58

xtjd 发表于 2024-10-28 11:42
(vla-put-ExtensionLineColor(Vlax-Ename->Vla-Object(Car(Entsel))) 1)
(vla-put-DimensionLineColor(Vla ...

谢谢大佬,大佬厉害

Terence688 发表于 2024-10-28 14:21:26

kozmosovia 发表于 2024-10-28 13:57
可以快速选择出所有尺寸标注,然后在属性面板修改标注线颜色

就是太多了,每个图纸好多标注,标注样式也多,,块里面也有标注,不能单个去改

Terence688 发表于 2024-10-28 14:24:14

xtjd 发表于 2024-10-28 11:42
(vla-put-ExtensionLineColor(Vlax-Ename->Vla-Object(Car(Entsel))) 1)
(vla-put-DimensionLineColor(Vla ...

谢谢大佬!其实是图纸里面标注样式太多了,块内也有标注样式,就系想着能一次性批量修改各种不同样式线的颜色,然后颜色可以自有选择!
页: [1] 2
查看完整版本: 求助各位大佬们