bcdrane42 发表于 2022-7-5 18:21:19

改变材料的透明度

我试着写一些简单的代码,可以改变材料的透明度。这似乎不太难,但我找不到办法。任何帮助都将不胜感激。

Hippe013 发表于 2022-7-5 18:45:12

这是之前关于材料的帖子中发布的链接。您要查找的dxf代码是不透明的。
 
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-DXF/files/GUID-E540C5BB-E166-44FA-B36C-5C739878B272-htm.html
 
下面是一段快速更改透明度的代码。许多人可以在这里写得更优雅,但这是一种快速而肮脏的完成工作的代码。
 
(defun c:mattrans ()
(setq tr (/ (getreal "\nEnter Transparancy: ") 100))
(setq mats (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'Materials))
(setq data (entget (vlax-vla-object->ename (vla-item mats "Glass2")))); Replace Glass2 is the name of your material
(setq trx (assoc 140 data))
(setq data (vl-remove trx data))
(setq elist (append data (list (cons 140 tr))))
(entmod elist)
(princ)
)
 
我希望这至少能让你继续。
 
当做
 
Hippe013
 
P、 透明度的值应该在0到100之间。当它被放置在elist中时,它应该是一个介于0和1之间的值。

BIGAL 发表于 2022-7-5 18:53:19

Hippe013你能不能不使用像(vla put-(vla item mats“Glass2”)tr这样未测试的1号线v的4号线

Hippe013 发表于 2022-7-5 19:08:31

比加尔,
我见过的通过lisp编辑材质的唯一方法是通过entmod。通过VL属性和方法,我看不到任何可用的属性。我希望如此!这将使事情变得容易得多。请记住,我发布的代码是一种快速而肮脏的做事方式。

bcdrane42 发表于 2022-7-5 19:17:23

谢谢Hippe013!这正是我所需要的。我精通autolisp,但对vlisp函数非常陌生,因此我需要时间来理解它是如何工作的。谢谢你的代码。

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

bcdrane42,
我可以解释vlisp方面的情况。
 
以下内容:
 
(setq mats (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'Materials))
 
可以写如下:
 
(setq acad (vlax-get-acad-object));Get the acad application object
(setq ad (vlax-get-property acad 'ActiveDocument));Get the Active Document from the acad object
(setq mats (vlax-get-property ad 'Materials));Get the Materials Collection from the Active Document
 
vla项只是从集合中返回对象。
vlax vla object->ename返回给定vla对象的实体名称
页: [1]
查看完整版本: 改变材料的透明度