乐筑天下

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

[编程交流] 过度杀戮所有人,包括区块?

[复制链接]

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 07:37:06 | 显示全部楼层 |阅读模式
是否有可能对包括块内部在内的整个图纸进行过度修改?
过度杀戮现在也会杀死动态块,我想这将是一个问题。
回复

使用道具 举报

0

主题

26

帖子

26

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 07:51:12 | 显示全部楼层
尊敬的各位:,
我看卡德基特提了个好问题。我现在有这个问题,在cad崩溃后从bak恢复的图形,我注意到块内的所有线都是重复的。
有人解决了这个问题吗?也许有人可以尝试在所有块中使用OVERKILL编写lisp。如果它不可能处理参数块,那么让它们保持不变,以某种方式忽略它们,但剩下的简单块(包括嵌套)可能会被过度杀死。这将是清理文件的一个快速步骤。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:57:35 | 显示全部楼层
下面是一个非常简单的程序,可以完全从图形中删除重复和零长度的线:
 
[code][颜色=绿色];;Line Kill-Lee Mac;;从图形中删除重复或零长度的线,并;;也来自块内和嵌套块。defunc:linekill(/dup lck lst p1 p2 tol zln)(setqtol 1e-8;;公差[color]zln 0 dup 0)(vlax forlay(vla get layers(LM:acdoc))(if==[/colorlay()(prognsetqlck(conslay lck)(vla put locklay:vlax false))(vla get blocks(LM:acdoc))(if=[:vlax false(vla get isxrefblk))(vlax forobj blk(cond/=“AcDbLine”vla get objectnameobj))(等于[color]0.0(distancesetqp1(vlax getobj'startpoint))(setqp2(vlax getobj'endpoint)))tol)(setqzln(1+/color]zln)(vla deleteobj)(vl somefunctionlambda(x)(equalcadrx)p2 tol)))lst(setqdup(1+/[color]dup))(vla deleteobj))((setqlst(conslistp1 p2)lst)))(setqlstnil)(foreach层lck(vla put lock:vlax true)(vla regen(LM acdoc color=BLUE]acallviews)(if
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:05:58 | 显示全部楼层
在块编辑器中,是否尝试使用BEDIT命令访问块定义并调用next OVERKILL?似乎有效。当然,这对于有限数量的块是可行的。
 
此外,由于问题发生在崩溃之后,请尝试运行AUDIT命令,该命令可能会修复一些错误。
回复

使用道具 举报

0

主题

26

帖子

26

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:12:49 | 显示全部楼层
谢谢大家!反应很快
 
李,谢谢你的密码!我会试试并给你反馈。但是,在我这样做之前,请确认此例程如何处理动态块内的参数?它是否安全并保持动作?第二,虽然我可以从代码的前三行中读取它,但它会深入到嵌套块吗?好吧,我会在备用图纸上试驾。
 
MSasu,也谢谢你的关注。该图形是通过recover命令恢复的,并被多次清除和审核,遗憾的是,这些命令不处理重复的图形。我可以在单个块中手动执行过度杀戮,但正如您所说,在这里,我必须逐个处理多个块,并且它们是嵌套的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:19:16 | 显示全部楼层
 
据我所知,该程序在处理动态块时不应引起任何问题,但当然,所有代码始终按“原样”提供,应谨慎使用。我在上面发布的程序将从所有布局以及所有标准和动态块(不包括外部参照)中删除零长度和重复线,嵌套到任何深度。
回复

使用道具 举报

0

主题

26

帖子

26

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:22:50 | 显示全部楼层
嘿,最后一件事:
在此例程中,定义重复行的标准是什么?Overkill提供选择性标准,如:图层、颜色、线型、打印样式等。
例如:在一个图形中,我们有两条相似的重叠线,但在不同的图层上,用于以不同比例表示图形。希望这两个不会被认为是重复的?
Overkill也适用于多段线,这个例程是否也会清理这些多段线?
我已经在恢复文件的副本中试用了该例程,它可以删除大量的零长度和重复行!那太好了,但要明确的是,你能描述一下选择的标准吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:34:28 | 显示全部楼层
 
程序将重复线定义为一条线,其起点和终点(按顺序)等于图形或块中另一条线的起点和终点,达到指定的公差,而与对象特性(如图层等)无关。
 
这个程序没有过度杀戮,也没有使用那个命令。
回复

使用道具 举报

0

主题

26

帖子

26

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:40:35 | 显示全部楼层
我已经检查了我为此绘制的示例图形中的linekill,其中包含三个不同层上相同的线重叠。它会删除所有重复项,无论是哪一层。因此,对于我们更复杂、多用途的绘图来说,这可能是一个问题。实际上,我只需要删除真正的重复,直线,多段线,圆弧等。当它删除所有类似的线,无论层,如何知道它最终将保留哪个层?
 
李,你想尝试改进这段代码以达到我描述的目标吗?或者已经有其他lisp可以在块和嵌套块内完成这项工作了吗?
 
附言:现在的linekill对我们学院的办公室很有用,他说这在他们的绘图标准方面做得很好-D所以这也是一个巨大的贡献!非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:24 , Processed in 0.447440 second(s), 70 queries .

© 2020-2025 乐筑天下

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