乐筑天下

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

[编程交流] 删除图层状态multi-drawi

[复制链接]

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:16:12 | 显示全部楼层
顺便说一句,这是同一代码的更高效(更不用说更“功能性”)版本:
请注意,新的layerstate list函数甚至没有任何局部变量,只有一个temp不断重复使用,以获取0层dxf数据及其字典,然后图层状态字典的dxf数据。它返回并计算一次通过vl删除的层列表,如果不是。。。部分我还为其添加了一个通配符匹配,然后添加了额外的layerstate delete wcmatch,您只需从任何位置调用它:
通配符照常工作,例如“my*”将匹配名为MyState、My1、mY3、my、my等的状态。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:18:57 | 显示全部楼层
如果不是的话,可能会将2 vl移除合并为一个,但我不确定这是否会更有效。无论如何,如果图层状态名称的效率是一个大问题,那么你还有很多其他问题!
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:22:06 | 显示全部楼层
不,我认为这是不可能的:从这个函数的帮助中,第三个参数允许位图值4使用VP覆盖,但前提是第二个参数不是nil并且包含视口的名称。因此,如果将nil发送给它,它“应该”在不使用VP覆盖的情况下恢复整个图形的状态。。。至少我是这样理解的。只有将VP的ename传递给它,才能仅通过在第3个参数中添加4来启用该恢复的VP覆盖。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:25:30 | 显示全部楼层
 
但是我怀疑它会把效率提高太多。。。
 
或者有VL方法:
 
  1. 14
  1. 15
这将不可避免地较慢。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:26:02 | 显示全部楼层
谢谢,李-使用ActiveX获取layerstate字典可能比DXF路径更快。虽然这是一件一次性的事情,但它不太可能节省超过几微秒的总时间。即使(正如你也注意到的)结合2 vl remove也没什么用-我能看到的只是(mapcar的cdr…)在某些情况下,可能需要查看较短的列表。当然,正如我所提到的:如果你有如此多的状态,以至于开始等待(超过一秒钟)该函数进行计算,那么你的绘图就出了严重的问题。该函数应该能够在一秒钟内获得100多个状态。
 
顺便说一句,我注意到你通常只使用引用的lambda。(函数(lambda…方法高于正常值)有什么真正的好处吗?(lambda…?还是主要是较少键入?:wink:
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:31:33 | 显示全部楼层
您可以使用foreach来完成它,而不是使用mapcar和vl remove if来完成两次。您可以将许多and检查组合在一起(尤其是因为您正在检查entget是否有效,当它将工作或使程序崩溃时),因为这些检查在图形中始终存在,所以很多都是不必要的。。。。。但正如人们所说,它不会给你那么多的增加。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:33:17 | 显示全部楼层
 
我不时地从一个切换到另一个。在过去,我看到通过使用“function”性能略有提高,因为这可能会消除口译员的一些腿部工作,但我相信差异确实很小。
 
  1. 16
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:35:59 | 显示全部楼层
根据Alan的建议:
 
在具有10个图层状态的图形上进行快速测试:
 
layerstate-list1=Irneb的第一篇文章
layerstate-list2=我的mods到Irneb的代码
layerstate-list3=我的VL方法
layerstate-list4=Irneb的代码和Alan的建议
 
正如预测的那样,VL方法要慢得多。。。
 
使用优化的FAS在同一图纸上:
 
  1. 19
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:39:14 | 显示全部楼层
有趣的是,双vl删除if单步通过和所有错误的and检查比foreach和cons更快。我想知道是什么阻碍了它的发展?
 
李,谢谢你开支票。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:42:02 | 显示全部楼层
 
这正是我所想的——尽管“foreach”的性能在编译测试中大放异彩(如上所述)。
 
 
别担心,伙计
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 19:18 , Processed in 0.646532 second(s), 81 queries .

© 2020-2025 乐筑天下

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