Bobzy20 发表于 2022-7-5 18:20:51

将所有内容移动到自定义La

你好
 
有谁知道lisp例程可以将模型空间中的所有内容更改为自定义层名称(G541-M_General lighting),并将颜色设置为白色(7)。
 
同时,让它删除所有其他未使用的层也会很好。
 
谢谢
 
上下快速移动

ReMark 发表于 2022-7-5 18:27:16

将为该新图层指定什么线型?

Bobzy20 发表于 2022-7-5 18:34:01

连续线型和默认线宽。

BIGAL 发表于 2022-7-5 18:35:38

类似手动版本的键盘操作
使用颜色和类型制作G541-M_通用照明层
CHPROP“select all required”la G541-M_General lighting lt bylayer C bylayer
 
未测试

(defun sslighting ( / ss)
(setq ss (ssget "X" (list (cons 410 "Model"))))
(command "-layer" "M" "G541-M_General lighting" "c" 7 "G541-M_General lighting" "lT" "Continuous"
"G541-M_General lighting" "S" "G541-M_General lighting" "")
(command "chprop" ss "" "La" "G541-M_General lighting")
)
(sslighting)

Bobzy20 发表于 2022-7-5 18:43:06

谢谢你的代码,不管怎样,代码是否可以创建新层并使其成为当前层,而无需手动创建?

Bobzy20 发表于 2022-7-5 18:46:08

lisp例程可能会执行以下操作吗?
 
1.创建一个新层,名为:G541-M_General lighting(层默认值很好)。
2、将其设置为当前。
3.将图纸中的所有项目(包括块内的层)移动到新层上。
4、自动运行“按层设置”命令,将所有内容恢复为默认值。
删除所有其他层,包括任何关闭或冻结的层。
6、删除图纸中的所有擦除。
7、清除图纸。
 
也许我需要花钱请人来写。
 
谢谢
 
上下快速移动

BIGAL 发表于 2022-7-5 18:49:36

修复了1和2我的错误-层代码更新。
 
第3步“搜索块到当前层”
 
4.
 
5搜索删除层需要一个版本来检查和冻结
;   作者:马克·托马斯
;   该文件包含2个函数:
;   del layer将删除选定图层上的所有对象并将其清除
 
6.

(setq ss (ssget "X" (list (cons 0 "WIPEOUT"))))
(command "erase" ss "")

 
7-清除!!

Bobzy20 发表于 2022-7-5 18:54:14

谢谢BIGAL,代码正在变得更好。
 
第三步-我会在网上搜索。
 
步骤4-该命令已存在于AutoCAD SETBYLAYER中,是否可以将其合并到代码中?
http://help.autodesk.com/view/ACDLT/2016/ENU/?guid=GUID-A9D9FF14-4EF6-4A25-B0F4-506C6B792E9E
 
第五步-我会在网上搜索。
 
第6步-我尝试将该代码添加到我的代码中,但它不起作用,也许我把它放错了位置。
 
第7步-同上。

Bobzy20 发表于 2022-7-5 18:59:32

这就是我目前所拥有的。
 
(定义c:cadqa(/ss)
(setq ss(ssget“X”(列表(cons 410“模型”)))
(命令“-layer”“M”“G541-M_General lighting”“c”7“G541-M_General lighting”“lT”“Continuous”
“G541-M_General lighting”“S”“G541-M_General lighting”“”)
(命令“chprop”ss““La”G541-M_General lighting”)
)
(cadqa)

BIGAL 发表于 2022-7-5 19:05:14

也许这个添加层
 

(setqdoc (vla-get-activedocument (vlax-get-acad-object))) ; open database

(vlax-for block (vla-get-blocks doc)
(if (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
(vlax-for ent block
(vla-put-layer ent (getvar "clayer")) ; current layer
(vla-put-color ent 0)
(vla-put-linetype ent "Bylayer")
(vla-put-lineweight ent aclnwtbyblock)
) ;_ end of vlax-for
) ;_ end of if
) ;_ end of vlax-for
(vla-regen doc acactiveviewport)
页: [1] 2
查看完整版本: 将所有内容移动到自定义La