stinger 发表于 2022-7-6 12:07:06

属性提取

大家好,我是这个论坛的新手,有人能在论坛上帮我吗
 
我正在制作带有项目标签的图纸,每个标签有许多部分,有时约20个部分。,每个部分都有它的属性。即-零件号、尺寸、数量和分类(即金属、木材、石头等)。现在有人可以知道一个例程(lisp),它提取图形中的所有部分并对其进行排序,然后将其放在表中的同一图形中,但根据其分类(即金属、木材、石头等)进行分组
 
非常感谢你
 
 
 

flowerrobot 发表于 2022-7-6 12:20:08

像这样的事情将是一个开始。
 
(setq ss1 (ssget))
(setq en (ssname ss1 0))
(setq edata (entget en))
(setq blockdata nil)
(setq edata (entget (entnext (cdr (assoc -1 edata)))))
(while (not(= (cdr (assoc 0 edata)) "SEQEND"))
(setq blockdata (cons (cons (cdr (assoc 2 edata)) (cdr (assoc 1 edata))) blockdata))
(setq edata (entget (entnext (cdr (assoc -1 edata)))))
)

MarcoW 发表于 2022-7-6 12:23:20

你的意思是(输入命令行并按enter键):
 
EATTEXT
 
应该这样做。。。

stinger 发表于 2022-7-6 12:29:45

https://www.cadtutor.net/file:///G:/sample.JPG

stinger 发表于 2022-7-6 12:37:41

谢谢你的代码,太棒了!!现在我正在使用dataextraction命令并手动过滤所有atribute以获得正确的值,我可以自动化这个过程以便只需单击一次即可提取这些值吗?

Lee Mac 发表于 2022-7-6 12:42:03

您可以制作宏:
 

^C^C-eattext;C;Y; ... etc etc

 
只需按照提示操作,看看你能做些什么

stinger 发表于 2022-7-6 12:47:43

谢谢你,伙计!

MarcoW 发表于 2022-7-6 12:56:03

 
李,我经常使用eattext。但我当然有一个问题。。。像往常一样,我似乎只有问题
首先,你提供的宏不适合我。也许我应该用另一种方式来实现我的目标,所以让我们把它留到现在吧。
 
(同时我问自己:“李会注意到这个消息吗,我应该给他发邮件吗…?)
 
为了自动化标准属性提取的过程,我想我在以前提取的基础上为其制作了一个lisproutine。(如果使用了eattext,您可以保存提取内容供以后使用,模板类似…)
 
事实上,如果rountine是这样的:
 

(defun c:do_it ()
(command "-eattext" "<path + name>")
(princ))

 
.. 它有效。。。但不是100%。。。
 
想象一下,我会有一个新项目,比如说在一个特定的地图中有10个dwg。应处理这些图纸。如果使用eattext,我可以选择特定的图形,但我想自动化这个过程。
 
在lisp中使用-eattext时,我只能给出模板,仅此而已。当然,它会提取在创建模板时设置的dwg。
 
那么我该怎么做呢
1、基于先前保存的模板创建属性提取
2.在eattext命令中选择一个文件夹或多个dwg
3、放在桌子上
 
代替我提到的模板,我可以尝试在例程中根据需要设置变量,这样就可以忘记模板。
 
这些是变量(在学步儿童中有点解释):
-每次都应该是新的提取
-图形->不包括当前图形
-仅选择具有一个特定块名“blockname”的块
 
... 在输入这个时,我担心它会变得复杂,因为我需要每次的结果(表格)都相同。
 
我认为在“进一步做梦”之前最好先听听你的意见。。。

Lee Mac 发表于 2022-7-6 13:03:31

你好,Marco,
 
我相信这是可以实现的,但可以通过自定义LISP函数来实现,而不是依赖EATTEXT命令,因为您可以对块进行更多控制,而且它会更健壮。
 
但这是一项相当复杂的任务,需要花费相当多的时间来完成。

fixo 发表于 2022-7-6 13:11:57

 
看看这个帖子,它可能会给你一些想法
 
http://www.cadtutor.net/forum/showthread.php?t=42174&page=2
 
~'J'~
页: [1]
查看完整版本: 属性提取