請教 highflybir 龙龙仔 板主
以下內容是兩位所提供的內容,
在下若是想把1號色的"1"號層搬到"0"並將顏色改成1號色的紅色。
該如何著手修改
請指教。
在下用很笨的方法
(command "-layer" "color" 1 "0" "")
(if (setq ss (ssget "X"'((8 . "1"))))
(command ".chprop" ss "" "LA" "0" "c" "1" "")
將圖搬到0層改顏色為紅,但是此方法無法在圖塊中搬動
- (defun C:DDDD (/ *DOC *OBJ *LAY blocks layers)
- (setvar "CMDECHO" 0)
- (vl-load-com)
- (setq *OBJ (vlax-get-acad-object))
- (setq *DOC (vla-get-activedocument *OBJ))
- (setq *LAY (vla-get-layers *DOC)) ;取得層集合
- (table)
- (setq blocks (vla-get-blocks *DOC)) ;取得塊集合
- (vlax-for block blocks ;遍歷塊集合
- (vlax-for n block ;遍歷單個塊
- (ccb n)
- )
- )
- (setvar "CMDECHO" 1)
- (princ)
- )
- (defun ccb (object / colour laynam laycol)
- (setq colour (itoa (vla-get-color object))) ;取得物體顏色號
- (cond
- ( (or (= colour "256") (= colour "0")) ;如果物體顏色隨層或隨塊
- (setq laynam (vla-get-layer object)) ;取得物體所在層名
- (setq laycol (cdr (assoc laynam layers))) ;取得層顏色
- (setq colour (itoa laycol))
- (ML)
- )
- ( (ML)
- (vla-put-color object 256) ;否則改變物體顏色為隨層
- )
- )
- (vla-put-layer object colour) ;對物體改層到顏色號層
- )
- (defun ML (/ layobj)
- (if (not (assoc colour layers)) ;如果顏色號不在圖層表中
- (progn
- (setq layers (cons (cons colour laycol) layers))
-
- ;重新構造圖層表
- (setq layobj (vla-add *LAY colour ) ) ;創建顏色號圖層
-
- (vla-put-color layobj colour)
- ;對顏色號層賦色
-
- )
- )
- )
- (defun table (/ name color Nname)
- (vlax-for n *LAY ;遍歷層集合
- (setq name (vla-get-name n)) ;取得層名
- (setq color (vla-get-color n)) ;取得層顏色
- (setq layers (cons (cons name color) layers));獲得層名和顏色號表
- (setq Nname (read name))
- (if (= (type Nname) (type 1)) ;如果層名是整數
- (if (= (strlen (itoa Nname)) (strlen name))
- (if (and (> Nname 0) (< Nname 256)) ;並且>0,<256
- (if (/= color Nname) ;如果層顏色不等於層名
- (vla-put-color n Nname) ;則改層顏色為層名
- )
- )
- )
- )
- )
- )
|