明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: llsheng_73

[讨论] 高效ENTMOD的方法(不需要SUBST但对某些图元无效)

  [复制链接]
发表于 2015-9-3 15:22:45 来自手机 | 显示全部楼层
这其实就是entmake,然后生成的图元名与原来的一样,个人理解。( ω )羞羞哒
发表于 2015-9-3 22:04:27 | 显示全部楼层
我觉得是个兼容性问题,比如我们常用颜色62组码,在颜色by layer的情况下是没有62组码的,有颜色,则有62组码,cad系统设计的时候用entmod更新图源数据,不可能要求所有的组码都写入组码表中,那么必须要那几个组码存在才能实现,起码73兄给了我们一个答案,-1组码不可缺,也就是说这个组码是图元的身份证,不然CAD怎么知道更改的是哪个图元,因为组码少了,所以CAD在检查entmod的时候会出现漏项,那么就会出现一些问题,有的图元可能能够更新成功,73兄已经论证了,如果我们根据这一情况做另外一个测试呢,
以下测试可能会造成CAD崩溃,如有想测试的注意保存图纸,最好再另外开一个CAD中测试,有时候我用CAD2011工作,再开个编写,调试lisp,有的时候难免会出现错误或者不可预料的错误导致CAD崩溃。

如果我们用73兄的方式,更换图元的关键组码,会出现什么样的情况呢个。
例如,转角标注和对齐标注,70的组码分别是32和33,如果我将转角的32换成33会成功吗?

经过测试,发现能更改转角标注为对齐标注,也就是说可以实现,但是也会出现访问冲突,CAD系统检测到该图元异常数据,这个图元从此不正常了,无法删除,而且弄不好CAD直接崩溃。
我的测试,挂掉N次CAD,得到一个结论,entmod不完整数据,可能引起CAD检查失控,能更新图元,但是不够安全,如果我再刚才的entmod数据中,添加(100 . "AcDbAlignDimension")那么entmod直接nil返回,失败了。因此只用-1组码的时候,没什么问题,CAD无法检查,当出现比较关键的数据的时候,那么就可以执行检查了,这时候,如果发现是异常组码数据,则无法entmod。在不必要的情况下,还是不建议这种方式entmod数据,否则可能会造成系统崩溃,访问冲突等一系列问题。
对于entmod,xyp有个函数很好用,就是可以批量更新组码表,改造一下即可实现73兄的测试数据方式。
(myentmod ent lst)
这样不是一样很简洁了。。。
 楼主| 发表于 2015-9-3 22:30:09 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-9-3 22:37 编辑
edata 发表于 2015-9-3 22:04
我觉得是个兼容性问题,比如我们常用颜色62组码,在颜色by layer的情况下是没有62组码的,有颜色,则有62组 ...


感谢E大的提醒,我极少情况下真是这么干的,今后坚决不干了!!!
xyp那个函数经常看到,总觉得把组码和对应的值分成两个表,使用起来不是特别方便,万一不小心顺序对不上很恼火
  1. (defun myentmod(en dxf)
  2.   (entmod(append(vl-remove-if'(lambda(x)(assoc(car x)dxf))(entget en))dxf)))

(myentmod(car(entsel)) '((62 . 5)(8 . "0")))
(myentmod(car(entsel)) '((62 . 256)(8 . "0")))
虽然我一直在用这个,但由于平时涉及到的图元类型较少,不知道会不会因为一些图元对组码顺序有要求而失败
发表于 2015-9-3 22:37:23 | 显示全部楼层
llsheng_73 发表于 2015-9-3 22:30
(myentmod(car(entsel)) '((62 . 5)(8 . "0")))
虽然一直在用,但由于平时涉及到的图元类型较少,不知 ...

常用组码应该没什么问题。基本上都是更改常用组码,特殊的也肯定不能这样整。
发表于 2015-9-3 22:55:02 | 显示全部楼层
llsheng_73 发表于 2015-9-3 22:30
感谢E大的提醒,我极少情况下真是这么干的,今后坚决不干了!!!
xyp那个函数经常看到,总觉得把组码 ...

我也觉得两个表不是很好,一个表比较好一点,直接是一个表一目了然,
比如我们更新lwpl线,那么直接用这个函数加入10组码表,直接可以更新了。几乎等于vla-put-Coordinates
函数,其实我们还可以添加凸度值,宽度值,一步到位。。这样不用vla构建什么安全数组,后面才能赋予凸度等等操作,方便多了。
发表于 2022-12-8 12:07:11 | 显示全部楼层
感谢各位大佬分享~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 04:51 , Processed in 0.156890 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表