乐筑天下

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

[编程交流] <--这家伙需要帮助

[复制链接]

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:57:41 | 显示全部楼层 |阅读模式
  1. ;;;get a working list of all the layers
  2. (vl-load-com)
  3. (setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
  4. (setq layertable (vla-get-layers acadDocument))
  5. ;;;make layers an array and editable
  6. ;;;make the properites of the layers accessable
  7. ;;;check the names against a standard list of valid layer names
  8. ;;;remove valid layers from the working list
  9. ;;;check the first layers color
  10. ;;;get a list of all valid layers with that color from the standard layers list
  11. ;;;check the line type of the first layer
  12. ;;;get a list of all valid layers with same line type from the modified list
  13. ;;;change the layer name to the standard valid layer name

 
 
这是我的清单,我已经通过了第一步,现在不知所措,我很确定我离目标还有很长的路要走。。。我需要一些重定向,有人能帮我吗?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:03:33 | 显示全部楼层
这将帮助您构建与列表相关的图层列表:
  1. (setq theLayer (cdr (assoc 2 (tblnext "LAYER" 1))))
  2. (while theLayer
  3. (setq listLayers (append listLayers (list (entget (tblobjname "LAYER" theLayer))))
  4.       theLayer (cdr (assoc 2 (tblnext "LAYER"))))
  5. )
回复

使用道具 举报

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:06:35 | 显示全部楼层
太棒了,这是一个好的开始。现在我需要弄清楚如何得到颜色。我在想vlax dump或vla getcolor,但我试了一下,发现了一个listp错误
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:08:01 | 显示全部楼层
在图层的相关列表中,颜色存储在DXF代码62下。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:13:17 | 显示全部楼层
你能更详细地阐述一下你真正想要实现的是什么吗?是为用户提供某种形式的层管理还是什么?暂时忽略代码问题。
回复

使用道具 举报

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:15:21 | 显示全部楼层
实际上,我正在尝试制作一个例程,根据图层颜色和线型自动更改图层的名称。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:18:46 | 显示全部楼层
然后,您应该查找DXF代码62(颜色)和6(线型)。
  1. (setq assocLayer (tblsearch "LAYER" LayerName)
  2.      theName (strcat (itoa (cdr (assoc 62 assocLayer)))   ;color
  3.                      "-"
  4.                      (cdr (assoc 6 assocLayer))))         ;linetype
回复

使用道具 举报

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:21:26 | 显示全部楼层
是的,我大胆地使用代码来设置lt和color变量,我试图找出如何获得表长度,以便设置while循环,然后我必须找出如何将其与我拥有的列表进行比较。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:23:58 | 显示全部楼层
那是线型和颜色搭配吗?
 
无论如何,我认为您将在层名称上添加后缀或前缀,而不是替换整个名称。
回复

使用道具 举报

11

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:28:59 | 显示全部楼层
是的,线型和颜色将匹配。不,我将替换整个名称。一旦我把列表缩小到与现有层匹配的LT和颜色,我想让它比较两个名称变量中的第一个字符,并根据它选择要保存的正确层名称,或者让它通过strcat ascii评估适用层名称中的总匹配字符,也许。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 20:55 , Processed in 0.539767 second(s), 72 queries .

© 2020-2025 乐筑天下

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