alanjt 发表于 2022-7-6 09:39:58

我希望块定义没有太多对象。

baker 发表于 2022-7-6 09:46:57

我只会在简单的区块上使用它,2D区块,如进水口、消防水渠。。等

alanjt 发表于 2022-7-6 09:47:52

他知道我的意思,但我应该对其他人更清楚。
您应该在执行块定义之前存储层,然后可以应用变量中的层,而不是每次“获取”对象的层。

BlackBox 发表于 2022-7-6 09:50:34

 
触摸。。。我甚至没想到。我猜这就是我回答一个不适合我的问题所得到的。
 
为了弥补我的错误,也许是这样的:
 

(if
(and
   (eq :vlax-false (vla-get-islayout block))
   (eq :vlax-false (vla-get-isxref block))
   )
(progn
    (vlax-for objectblock
      (mapcar
      (function
          (lambda (property value / lay)
            (vl-catch-all-apply
            'vlax-put-property
            (list object property value))
            )
          )
      '(layer color linetype)
      (list (cond (lay)
                  ((setq lay (vla-get-layer object))))
            acbylayer
            "BYLAYER")
      )
      )
    (setq lay nil)
    )
)

(^^摘自李的代码)
 
现在我忘记了是否仍然需要将“lay”本地化到lambda意味着(setq lay nil)?对我来说,这是一个艰难的星期一。这肯定不是我最好的技术表现。英雄联盟

Lee Mac 发表于 2022-7-6 09:55:44

 
不客气
 
 
对于每个块参照,插入块的图层可能不同,因此无法通过修改块定义来实现此行为,因为此类修改将反映在所有插入中。
 
但在任何情况下,如果所有块对象都在层“0”上,它们将假定块插入的层,或者我遗漏了什么?

Lee Mac 发表于 2022-7-6 09:59:14

 
即将块定义中的所有对象设置为块定义中第一个对象的图层。
 
我认为你们中的一些人在定义和引用之间感到困惑,无法从块定义中确定插入一个或多个引用的层。

BlackBox 发表于 2022-7-6 10:01:41

是的,那是我的错。我脑子很乱,不应该发帖子。抱歉让你们分心。

alanjt 发表于 2022-7-6 10:06:24

一般来说,将特定块指定给特定层。但是,我不同意或不理解块定义中的对象位于“0”层以外的任何位置。
你说得对,我认为引用和定义之间的区别还没有完全掌握。
页: 1 [2]
查看完整版本: 将所有块设置为ByLaye