使用vba编辑draworder
我想知道是否可以使用vba控制提款顺序。我似乎找不到哪个属性控制提取顺序Sub Block2Front()
Dim BlockSSet As AcadSelectionSet
Dim VarBlock As Variant
Set BlockSSet = ThisDrawing.SelectionSets.Add("block")
BlockSSet.SelectOnScreen
For Each VarBlock In BlockSSet
VarBlock.XXXXXXX = "Front"
Next
BlockSSet.Delete
End Sub
感谢Devitg为我指点沼泽。我以为在卡达洛关闭论坛后我失去了这个。顺便说一句,他们(新的所有者)认为论坛将完好无损。这是不是太干扰了他们的商业思想?
**** Hidden Message *****
您好…
您使用SendCommand进行测试:
Sub Block2Front()
Dim BlockSSet As AcadSelectionSet
Dim VarBlock As Variant
Set BlockSSet = ThisDrawing.SelectionSets.Add("block")
BlockSSet.SelectOnScreen
ThisDrawing.SendCommand "_.draworder" & vbCr & "_p" & vbCr & vbCr & "_Front" & vbCr
BlockSSet.Delete
End Sub
这是设置提款单的一个很好的解决方案。Thx<br>但是,提款单必须存储在某个值中。是否可以捕获此值并将其存储在变量表中。
从SORTENTSTABLE上的DXF引用:
看来VBA/ActiveX无法访问保存在此表中的数据。Lisp可以使用它:
(setq layouts (vla-get-layouts *doc*))
(setq ms (vla-item layouts "Model"))
(setq blk (vla-get-block ms))
(if (= :vlax-true (vla-get-hasextensiondictionary blk))
(progn
(setq dict (vla-getextensiondictionary blk))
(setq item (vla-item dict 0))
(setq ename (vlax-vla-object->ename item))
(entget ename)
)
)
HTH 为什么在VBA中不可用?对我来说看起来很容易访问...只需从Application对象获取当前文档,其余代码将是与您的帖子等效的VBA...
值得一提的是,您可以直接从活动文档中获取模型空间(您在代码中称为
blk
):
(setq ms (vla-get-modelSpace *doc*))
(if (= :vlax-true (vla-get-hasExtensionDictionary ms))
...
)
我知道我可以直接获得MS,但是如果您想要查找任何布局的draworder,您需要与该布局相关联的块......
返回DXF代码的VBA等价函数(entget)是什么?如果查看用dict.item(0)返回的对象,没有任何东西与之相关联...... 我觉得这很容易。 杰夫,我一直在尝试编写一个VB应用程序来控制图层的绘制顺序。看来这是正确的讨论主题。用LISP看起来更容易,但我无法让它写回绘图,这样下次我运行例程时,它就会回忆起上次的绘图顺序。但再说一次,我不是VB专家。有人在这方面成功过吗?
从SORTENTSTABLE上的DXF参考:
似乎无法使用VBA/ActiveX访问此表中保存的数据。它可用于Lisp:
(setq layouts (vla-get-layouts *doc*))
(setq ms (vla-item layouts "Model"))
(setq blk (vla-get-block ms))
(if (= :vlax-true (vla-get-hasextensiondictionary blk))
(progn
(setq dict (vla-getextensiondictionary blk))
(setq item (vla-item dict 0))
(setq ename (vlax-vla-object->ename item))
(entget ename)
)
)
HTH
嗨,CAD女,
你没有说你使用的是什么版本。从2004年或2005年开始,SorentsTable被放入Acad API中。我在之前讨论中的所有经验都是基于2002年的。如果您有更新的版本,我将首先查看ActiveX Developer对SorentsTable的帮助。 我用Vlisp写了一个解决方案,应该可以翻译成VBA:
访问我的主页->免费的东西,然后搜索“VxSetDrawOrder”
页:
[1]
2