明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 501|回复: 7

[提问] 这个图层转换的程序如何修改支持块内图层?

[复制链接]
发表于 2023-5-10 10:45 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 江南十笑 于 2023-5-23 12:40 编辑

  • (defun c:tt ()
  •   (setq lst '(("jmd,dldw" "居民地及设施")
  •               ("DGX,GCD,DMTZ" "地貌")
  •               ("DLSS" "交通")
  •               ("GXYZ" "管线")
  •               ("KZD" "测量控制点")
  •               ("SXSS" "水系及附属设施")
  •               ("TK" "图廓整饰")
  •               ("ZBTZ" "植被与土质")
  •               ("ZJ" "注记")
  •              )
  •   )
  •   (foreach a lst
  •     (if (setq ss (ssget "x" (list (cons 8 (car a)))))
  •       (command "change" ss "" "p" "la" (cadr a) "c" "bylayer" "")
  •     )
  •   )
  •   (princ)
  • )
这个图层转换的程序如何修改支持块内图层?



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

最佳答案

查看完整内容

没有做测试,但是写了注释,假如程序有问题你自己学着改
发表于 2023-5-10 10:45 | 显示全部楼层
本帖最后由 菜卷鱼 于 2023-5-17 14:38 编辑

没有做测试,但是写了注释,假如程序有问题你自己学着改

  1. (defun c:tt ()
  2.   (setq lst '(("jmd,dldw" "居民地及设施")
  3.               ("DGX,GCD,DMTZ" "地貌")
  4.               ("DLSS" "交通")
  5.               ("GXYZ" "管线")
  6.               ("KZD" "测量控制点")
  7.               ("SXSS" "水系及附属设施")
  8.               ("TK" "图廓整饰")
  9.               ("ZBTZ" "植被与土质")
  10.               ("ZJ" "注记")
  11.              )
  12.   )
  13.   (foreach a lst
  14.     (if (setq ss (ssget "x" (list (cons 8 (car a)))))
  15.      (progn
  16.       (command "change" ss "" "p" "la" (cadr a) "c" "bylayer" "")
  17.       (setq ns (ssget "p" '((0 . "insert")))) ;;;从上一次选择的选择集里选出块
  18.       (setq i -1)
  19.       (repeat (sslength ns)  ;;;每个块处理一遍
  20.         (setq blk (ssname ns (setq i (1+ i))))
  21.         (setq lst2 (blklst blk))  ;;;;块转成列表
  22.         (foreach obj lst2  ;;;;每个块内的成员处理一遍
  23.          (setq info (entget obj))
  24.          (setq newlayer (cons 67 (cadr a))) ;;;新的图层
  25.          (setq newcolor (cons 62 0))  ;;;;新的颜色
  26.          (entmod (subst newlayer (assoc 67 info) info))  ;;;新图层替换旧图层
  27.          ;;(entmod (subst newcolor (assoc 62 info) info))  ;;;Bylayer颜色的时候 62索引项是没有的,假如要换别的颜色就用得上
  28.          (entmod (vl-remove (assoc 62 info) info)) ;;;颜色改成bylayer
  29.         )
  30.      )
  31.     )
  32.   )
  33.   (princ)
  34. )
回复

使用道具 举报

发表于 2023-5-10 14:15 | 显示全部楼层
(defun blkelst (Name / E LST)
  (setq e (TBLOBJNAME "block" Name))
  (while (setq e (entnext e))
    (setq Lst (cons e Lst))
  )
  Lst
)
回复

使用道具 举报

 楼主| 发表于 2023-5-13 10:34 | 显示全部楼层
菜卷鱼 发表于 2023-5-10 14:15
(defun blkelst (Name / E LST)
  (setq e (TBLOBJNAME "block" Name))
  (while (setq e (entnext e))

这个函数怎么插入上面的程序中呢
回复

使用道具 举报

 楼主| 发表于 2023-5-16 21:59 | 显示全部楼层
菜卷鱼 发表于 2023-5-10 10:45
没有做测试,但是写了注释,假如程序有问题你自己学着改

谢谢 虽然测试块内还是没改 我再研究研究
回复

使用道具 举报

发表于 2023-5-17 08:53 | 显示全部楼层
江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究

你之前要是上传了图纸附件就测试了
回复

使用道具 举报

发表于 2023-5-17 14:38 | 显示全部楼层
江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究

你再试试,之前两个lst变量重复了,改了第二个
回复

使用道具 举报

 楼主| 发表于 2023-5-23 12:41 | 显示全部楼层
谢谢大佬 经测试 块内还是不行 块外可以 已上传测试文件
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 08:34 , Processed in 0.960493 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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