明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1342|回复: 0

[提问] 按顏色分層(紅色指定到0層並將色改為紅色)

[复制链接]
发表于 2013-10-7 19:20 | 显示全部楼层 |阅读模式
請教 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層改顏色為紅,但是此方法無法在圖塊中搬動

  1. (defun C:DDDD (/ *DOC *OBJ *LAY blocks layers)
  2.    (setvar "CMDECHO" 0)
  3. (vl-load-com)
  4.   (setq *OBJ (vlax-get-acad-object))
  5.   (setq *DOC (vla-get-activedocument *OBJ))
  6.   (setq *LAY (vla-get-layers *DOC))              ;取得層集合
  7.   (table)
  8.   (setq blocks (vla-get-blocks *DOC))            ;取得塊集合
  9.   (vlax-for block blocks           ;遍歷塊集合
  10.     (vlax-for n block            ;遍歷單個塊
  11.       (ccb n)
  12.     )
  13.   )

  14. (setvar "CMDECHO" 1)
  15.   (princ)
  16. )
  17. (defun ccb (object / colour laynam laycol)
  18.   (setq colour (itoa (vla-get-color object)))    ;取得物體顏色號
  19.   (cond            
  20.     ( (or (= colour "256") (= colour "0"))       ;如果物體顏色隨層或隨塊
  21.       (setq laynam (vla-get-layer object))       ;取得物體所在層名
  22.       (setq laycol (cdr (assoc laynam layers)))  ;取得層顏色
  23.       (setq colour (itoa laycol))            
  24.       (ML)                                      
  25.     )
  26.     ( (ML)
  27.       (vla-put-color object 256)                 ;否則改變物體顏色為隨層
  28.     )
  29.   )
  30.   (vla-put-layer object colour)                  ;對物體改層到顏色號層
  31. )
  32. (defun ML (/ layobj)
  33.    (if (not (assoc colour layers))                ;如果顏色號不在圖層表中
  34.      (progn
  35.      (setq layers (cons (cons colour laycol) layers))
  36.       
  37.                                                            ;重新構造圖層表
  38.       (setq layobj (vla-add *LAY colour )    )   ;創建顏色號圖層
  39.       
  40.       (vla-put-color layobj colour)
  41.              ;對顏色號層賦色

  42.    
  43. )

  44.   )
  45. )
  46. (defun table (/ name color Nname)
  47.   (vlax-for n *LAY                               ;遍歷層集合
  48.     (setq name (vla-get-name n))                 ;取得層名
  49.     (setq color (vla-get-color n))               ;取得層顏色
  50.     (setq layers (cons (cons name color) layers));獲得層名和顏色號表
  51.     (setq Nname (read name))
  52.     (if (= (type Nname) (type 1))                ;如果層名是整數
  53.       (if (= (strlen (itoa Nname)) (strlen name))
  54.         (if (and (> Nname 0) (< Nname 256))      ;並且>0,<256
  55.           (if (/= color Nname)                   ;如果層顏色不等於層名
  56.             (vla-put-color n Nname)              ;則改層顏色為層名

  57.           )
  58.         )
  59.       )
  60.     )
  61.   )
  62. )

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-17 15:43 , Processed in 0.171828 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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