jan_ek 发表于 2022-7-5 18:21:24

创建材质

你好
你能帮我创建添加材料的功能吗。
我只会设置四个参数:
名称:Test1
漫反射:继承
环境:继承
透明度:20
 
 
 
 
其他参数为0或不活动。
 
 
 
 
最好使用entmake

Lt Dan's l 发表于 2022-7-5 18:35:04

我想这是可以做到的。我以前从未尝试过
 
 
http://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-DXF/files/GUID-E540C5BB-E166-44FA-B36C-5C739878B272-htm.html

Hippe013 发表于 2022-7-5 18:49:23

这里只是快速运行代码。AutoLisp和VisualLisp的混合
 

(setq acadapp (vlax-get-acad-object));Get the Acad App

(setq adoc (vlax-get-property acadapp 'ActiveDocument));Get the ActiveDocument

(setq mats (vlax-get-property adoc 'Materials));Get the Materials Collection

(setq mymat (vlax-invoke-method mats 'Add "Test1"));Add a New Material

(setq d (dictsearch (namedobjdict) "ACAD_MATERIAL"));Get the Material Dictionary

(setq mymatent (cdr (cadr (member (cons 3 "Test1") d))));Get your new Material Entity Name

(setq entd (entget mymatent));Get the Enity Data of your new Material

 
使用丹中尉的腿为你提供的链接来修改你的材料。
 
我希望这有帮助!
 
当做
 
Hippe013

Lt Dan's l 发表于 2022-7-5 18:59:09

只是一张纸条,
 
cdadr等于(cdr(cadr))的结果
 
 
你也可以用
(dictsearch (cdar (dictsearch (namedobjdict) "ACAD_MATERIAL")) "Test1")
这将返回与entd相同的结果

Hippe013 发表于 2022-7-5 19:09:23

 
谢谢你的提示!

jan_ek 发表于 2022-7-5 19:18:56

谢谢你的帮助。
材料能够创建。
我还有一个问题:
1、我创建了一个实体
2、更改BYBlock上的材质
3.一种更换材料,但仅在一种表面固体上(例如“Ble1”)
 
有没有办法恢复单个材料的所有表面?

bcdrane42 发表于 2022-7-5 19:29:30

我也想做OP想要做的事情。我的问题是改变材料的透明度。丹左腿的链接中没有材质透明的材质组代码。不过,在“材质编辑器”(materials editor)中,可以更改任何材质的透明度。
 
如何通过vlisp改变材料的透明度?
页: [1]
查看完整版本: 创建材质