ARGV 发表于 2022-7-6 14:19:15

获取乘法的所有名称

你好
 
我只是想知道是否有可能创建一个可以。。好的,好的:
 
我想选择一组块。
对于SS中的每个块,在块集合中查找名称。
如果块具有属性“count”(即嵌套)
获取该块中的所有名称。
如果其中一个块具有属性“count”
获取该块中的所有名称。。。
 
等等等等。。。
 
看起来应该很容易,但我不知道如何使其防故障。我也不想列出多个相同命名的项目。基本上我只想知道每个区块内的所有区块。
 
这件事我已经写了好几次了,但我不确定该怎么做。这看起来像是一个重新草书式的交易,但我想不出来。
 
感谢您的帮助。谢谢

The Buzzard 发表于 2022-7-6 14:26:14

 
 
 
请张贴代码,这样我们就可以知道你做错了什么。

The Buzzard 发表于 2022-7-6 14:28:42

 
我只想提一下,如果您试图将一个块嵌套在一个块中,并希望从嵌套的块中获取信息,那么您就是在浪费时间。不确定这是否是你正在做的。你提到的问题似乎不清楚。
 
你能详细说明你到底想做什么吗?
还是我误解了你?
 
请详细解释。
 
谢谢
秃鹰

Lee Mac 发表于 2022-7-6 14:34:12

我认为这可能有效,但我认为还有更好的惯例:
 

(defun GetObj (blk / bObj lst)
(if
   (and
   (setq lst (cons blk lst))
   (not
       (vl-catch-all-error-p
         (vl-catch-all-apply
         (function
             (lambda ( )
               (setq bObj
               (vla-item
                   (vla-get-blocks
                     (vla-get-ActiveDocument
                     (vlax-get-acad-object))) blk))))))))
   (vlax-for Obj bObj
   (and (eq "AcDbBlockReference"
            (vla-get-ObjectName Obj))
          (setq lst (cons (vla-get-Name Obj) lst))
          (getObj (vla-get-Name Obj)))))
lst)

(vl-load-com)
      

The Buzzard 发表于 2022-7-6 14:38:02

 
李,
 
只是好奇,那代码是做什么的?

The Buzzard 发表于 2022-7-6 14:40:33

 
 
这段代码是用来提取动态块的dxf信息吗?

Lee Mac 发表于 2022-7-6 14:43:42

 
嗨,秃鹰,
 
代码需要提供一个块名,如果它可以在块集合中找到特定的块,它将遍历块对象集合并搜索构成块的任何块引用(即嵌套块),如果它找到一个块引用,那么它将获得其名称并递归地操作该新名称,同时构建一个包含所有找到的名称的列表。不确定它是否有效,只是一个“理论”帖子。
 
只要注意使用递归循环时没有达到堆栈限制。我倾向于只在小任务中使用它们,因为堆栈限制不太高,有时很容易达到。
 
这里有一些关于递归编程的重要信息。
 

The Buzzard 发表于 2022-7-6 14:50:11

 
那个网站太离谱了。但如果能做到这一点,那就很有趣了。不确定值在嵌套中的位置。也许我在这里学到了一些新东西。

David Bethel 发表于 2022-7-6 14:54:16

我想我理解这个要求:
 
nl包含点对原子的关联列表
(block\u name.number\u of_nested\u direct\u instances\u found)
 
这不计算嵌套深度或图形中嵌套引用的总数-大卫

ARGV 发表于 2022-7-6 14:57:32

 
可以使用“块”集合从嵌套块中获取信息,该集合包含图形中的所有块,还包含有关块是否在该块内的信息。
 
假设我有一个区块作为一个部分。在那部分里面还有几个街区。其中一些区块可能有一两个区块。所以我想要一个例程,当我选择主要部分块时,它可以得到名称。。然后在块集合中查找名称,并遍历驻留在该主块内某处的每个名称的块集合。
 
这是可以做到的,只是不好看。。特别是如果你不知道嵌套了多少块,你想无论如何都得到它们。
页: [1] 2
查看完整版本: 获取乘法的所有名称