明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 348|回复: 20

[提问] 框选对象改为0层,如何可以颜色线型等保持不变

[复制链接]
发表于 2020-7-28 17:32 | 显示全部楼层 |阅读模式
5明经币
请教下大侠们,如何框选对象,对象包括图元,图块,属性块等,使得对象(图块内对象)改为0层,颜色,主要是颜色(线型可选)等可以保持不变,这样可以实现么,论坛里也搜到一些工具都是 可以改为0层的,不过对象都直接变成0层的线型和颜色了,如果默认是固定颜色的有些可以实现,但是默认如果是bylayer的话,识别不了,都还是会变成白色了。

最佳答案

发表于 2020-7-28 17:32 | 显示全部楼层
本帖最后由 gaics 于 2020-8-6 09:21 编辑

  1. (defun c:tt (/ ss i ii ent namelist blkent obj atts att)  (vl-load-com)
  2.   (setq ss (ssget))
  3.   (setq i 0)
  4.   (while (< i (sslength ss))
  5.     (setq ent (ssname ss i))
  6.     (changelayer ent)
  7.     (if        (= (cdr (assoc 0 (entget ent))) "INSERT")
  8.       (progn (setq obj (vlax-ename->vla-object ent))
  9.              (setq ii 0)
  10.              (if (vla-Get-HasAttributes obj)
  11.                (progn (setq atts (vlax-invoke obj 'getattributes))
  12.                       (repeat (length atts)
  13.                         (setq att (vlax-vla-object->ename (nth ii atts)))
  14.                         (changelayer att)
  15.                         (setq ii (1+ ii))
  16.                       )
  17.                )
  18.              )
  19.              (setq namelist (delsame (ayGetAllEntInBLK ent)))
  20.              (setq ii 0)
  21.              (repeat (length namelist)
  22.                (setq blkent (nth ii namelist))
  23.                (changelayer blkent)
  24.                (setq ii (1+ ii))
  25.              )
  26.              (entupd ent)
  27.       )
  28.     )
  29.     (setq i (1+ i))
  30.   )
  31.   (princ)
  32. )

  33. (defun ayGetAllEntInBLK(BlkEntName / xBlkName xBlkDef entName1 entType entNameList)
  34.   (setq xBlkName (cdr (assoc 2 (entget BlkEntName))))
  35.   (setq xBlkDef (tblobjname "Block" xBlkName))
  36.   (while (setq entName1 (entnext xBlkDef))
  37.     (setq entType (cdr (assoc 0 (entget entName1))))
  38.     (if        (= entType "INSERT")
  39.       (progn
  40.         (setq entNameList (cons entName1 entNameList))
  41.         (setq entNameList
  42.                (append (ayGetAllEntInBLK entName1) entNameList)
  43.         )
  44.       )
  45.       (setq entNameList (cons entName1 entNameList))
  46.     )
  47.     (setq xBlkDef entName1)
  48.   )
  49.   entNameList
  50. )

  51. (defun delsame (l)
  52.   (if l
  53.     (cons (car l)
  54.           (delsame (vl-remove (car l) (cdr l)))
  55.     )
  56.   )
  57. )

  58. (defun changelayer (ent / obj ly co lt)
  59.   (setq obj (vlax-ename->vla-object ent))
  60.   (setq ly (vla-get-layer obj))
  61.   (setq co (vla-get-color obj))
  62.   (setq lt (vla-get-linetype obj))
  63.   (vla-put-layer obj "0")
  64.   (if (= co 256)
  65.     (progn
  66.       (setq co (cdr (assoc 62 (tblsearch "layer" ly))))
  67.       (vla-put-color obj co)
  68.     )
  69.   )
  70.   (if (= lt "ByLayer")
  71.     (progn
  72.       (setq lt (cdr (assoc 6 (tblsearch "layer" ly))))
  73.       (vla-put-linetype obj lt)
  74.     )
  75.   )

  76. )


评分

参与人数 1明经币 +1 金钱 +5 收起 理由
magicheno + 1 + 5 谢谢大侠热心帮忙哈

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-7-29 13:41 | 显示全部楼层
gaics 发表于 2020-7-29 10:07
块内对象你要自己改一下了

谢谢大侠的帮助呢,主要还是想块内的,包括嵌套块的,如果能有就好了
回复

使用道具 举报

发表于 2020-7-30 09:05 | 显示全部楼层
虽然不能控制块内的颜色  但还是非常感谢分享   学习一下
回复

使用道具 举报

发表于 2020-7-30 11:54 | 显示全部楼层
magicheno 发表于 2020-7-29 13:41
谢谢大侠的帮助呢,主要还是想块内的,包括嵌套块的,如果能有就好了

更新了,你试一下。
回复

使用道具 举报

 楼主| 发表于 2020-7-30 12:41 | 显示全部楼层
本帖最后由 magicheno 于 2020-7-30 12:44 编辑
gaics 发表于 2020-7-30 11:54
更新了,你试一下。

大侠非常感激,可以的,试了下,嵌套块,块都可以,不过对于属性块嵌套在其他里面,这个属性块就变不了0层哈
回复

使用道具 举报

发表于 2020-7-30 14:21 | 显示全部楼层
本帖最后由 gaics 于 2020-8-5 09:04 编辑
magicheno 发表于 2020-7-30 12:41
大侠非常感激,可以的,试了下,嵌套块,块都可以,不过对于属性块嵌套在其他里面,这个属性块就变不了0 ...

我试了一下,属性块内填入的属性字没法改、带有可见性的动态块没法改。
回复

使用道具 举报

 楼主| 发表于 2020-7-30 15:55 | 显示全部楼层
gaics 发表于 2020-7-30 14:21
我试了一下,属性块内填入的属性字没法改、带有可见性的动态块没法改。

是的哈,我也发现这个属性块内的属性字没改的
回复

使用道具 举报

 楼主| 发表于 2020-7-30 15:57 | 显示全部楼层
gaics 发表于 2020-7-30 14:21
我试了一下,属性块内填入的属性字没法改、带有可见性的动态块没法改。

我发现,我把属性块嵌在另外一个普通块里,通过命令却可以改,这个确有点怪异的
回复

使用道具 举报

发表于 2020-7-30 20:12 | 显示全部楼层
真好用,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-8-13 01:21 , Processed in 0.143007 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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