乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 14|回复: 5

[编程交流] 改变材料的透明度

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:21:19 | 显示全部楼层 |阅读模式
我试着写一些简单的代码,可以改变材料的透明度。这似乎不太难,但我找不到办法。任何帮助都将不胜感激。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 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
 
下面是一段快速更改透明度的代码。许多人可以在这里写得更优雅,但这是一种快速而肮脏的完成工作的代码。
 
  1. (defun c:mattrans ()
  2. (setq tr (/ (getreal "\nEnter Transparancy: ") 100))
  3. (setq mats (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'Materials))
  4. (setq data (entget (vlax-vla-object->ename (vla-item mats "Glass2")))); Replace Glass2 is the name of your material
  5. (setq trx (assoc 140 data))
  6. (setq data (vl-remove trx data))
  7. (setq elist (append data (list (cons 140 tr))))
  8. (entmod elist)
  9. (princ)
  10. )

 
我希望这至少能让你继续。
 
当做
 
Hippe013
 
P、 透明度的值应该在0到100之间。当它被放置在elist中时,它应该是一个介于0和1之间的值。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:53:19 | 显示全部楼层
Hippe013你能不能不使用像(vla put-(vla item mats“Glass2”)tr这样未测试的1号线v的4号线
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 19:08:31 | 显示全部楼层
比加尔,
我见过的通过lisp编辑材质的唯一方法是通过entmod。通过VL属性和方法,我看不到任何可用的属性。我希望如此!这将使事情变得容易得多。请记住,我发布的代码是一种快速而肮脏的做事方式。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:17:23 | 显示全部楼层
谢谢Hippe013!这正是我所需要的。我精通autolisp,但对vlisp函数非常陌生,因此我需要时间来理解它是如何工作的。谢谢你的代码。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 19:23:25 | 显示全部楼层
bcdrane42,
我可以解释vlisp方面的情况。
 
以下内容:
 
  1. (setq mats (vlax-get-property (vlax-get-property (vlax-get-acad-object) 'ActiveDocument) 'Materials))

 
可以写如下:
 
  1. (setq acad (vlax-get-acad-object));Get the acad application object
  2. (setq ad (vlax-get-property acad 'ActiveDocument));Get the Active Document from the acad object
  3. (setq mats (vlax-get-property ad 'Materials));Get the Materials Collection from the Active Document

 
vla项只是从集合中返回对象。
vlax vla object->ename返回给定vla对象的实体名称
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:44 , Processed in 0.463617 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表