图块分解按需加载的程序合并问题
本帖最后由 nyistjz 于 2021-6-25 08:59 编辑如题,如何判断所选择元素的属性。
比如:
如果是直线的话,就返回直线;
如果是普通图块,就返回普通图块;
如果是属性块,就返回属性块;
如果昌组,就返回组;
……
我的目的,是想让lisp根据所选择元素不同的属性执行不同的操作。
------------------------------------------------------------------------------------------------------------------------------------------------------
附件是9楼朋友写出来的程序,在选择内容的时候,虽然已经完整的实现了所需要的功能,但没有原生选择的预览功能,不太直观,请网上的各位朋友们看一下,是否可以修改的更为好用,谢谢!
nyistjz 发表于 2021-6-22 15:31
(CDR (ASSOC 0 (ENTGET (CAR (ENTSEL)))))
您写的这个,好您好像识别不了组,和多重嵌套。您测试一下 ...其他的自己弄哈
(setq entpy (strcase (cdr (assoc 0 (if (= (cdr (assoc 102 (setq edata (entget (car (entsel)))))) "{ACAD_REACTORS") (entget (cdr (assoc 330 edata))) edata)))))
(cond
((equal entpy "LINE")
(alert "直线")
)
((equal entpy "INSERT")
(alert "块")
)
((equal entpy "GROUP")
(alert "群组")
)
.
.
.
.
) 本帖最后由 nyistjz 于 2021-6-23 09:51 编辑
fangmin723 发表于 2021-6-22 15:47
其他的自己弄哈
(setq entpy (strcase (cdr (assoc 0 (if (= (cdr (assoc 102 (setq edata (entget (car ( ...
谢谢您的回复!本来想根据您所给到的返回来自己修改个小程序,但折腾了一个晚上,最后发现还是不行,水平有限,终究是搞不定。
请大侠帮忙看看,是否可以把我附件中的这些命令整合进一个命令。
大概意思就是:
根据选择的内容,循环判断所属类型,执行不同的命令,相应的可以自动执行分解属性块、分解多重插入、解散群组、绑定外部参照,等动作,而不需要人为的进行判断。
相应的分解程序已经放在了附件中。
ssyfeng 发表于 2021-6-24 13:38
代码见附件:
选择需要处理的范围[角点一]:
选择需要处理的范围[角点二]:; 错误: 参数类型错误: lselsetp nil
命令: *取消*
你这个选择方法好像有点问题,选不中内容。
是否可以用普通 的选择办法,类似于原生删除的那种选择,ssget? 本帖最后由 fangmin723 于 2021-6-22 15:30 编辑
这还判断啥啊,直接返回就得了(CDR (ASSOC 0 (ENTGET (CAR (ENTSEL)))))
本帖最后由 nyistjz 于 2021-6-22 15:46 编辑
fangmin723 发表于 2021-6-22 15:29
这还判断啥啊,直接返回就得了(CDR (ASSOC 0 (ENTGET (CAR (ENTSEL)))))
(CDR (ASSOC 0 (ENTGET (CAR (ENTSEL)))))
您写的这个,好您好像识别不了组,和多重嵌套。您测试一下,是不是这个样子,感谢 !
有没有高手可以搞定这个问题?
还请朋友们能够帮忙! 看看是不是这个效果:
本帖最后由 nyistjz 于 2021-6-24 13:30 编辑
ssyfeng 发表于 2021-6-24 12:43
看看是不是这个效果:
就是这个意思,您能把代码附上来分享给大家吗? 本帖最后由 ssyfeng 于 2021-6-24 16:50 编辑
代码见附件:
页:
[1]
2