Tharwat 发表于 2022-7-6 09:15:54

如何获取属性和方法

大家好。
 
我想知道如何获得图层、布局、尺寸样式和文档等的属性。。。。。。。。
无法通过使用函数*vlax dump object*或任何其他函数进行选择。
 
我的目的是获得可用于此类事情的属性和方法。
 
谢谢。
 
塔瓦特

BlackBox 发表于 2022-7-6 09:24:03

[编辑]
我有点惊讶你竟然提出了这个问题。
 
无论如何。。。
[/编辑]
 
这适用于任何有效的VLA-OBJECT:
 

(defun DUMP (arg)
(if (= 'VLA-OBJECT (type arg))
   (progn
      (textpage)
      (vlax-dump-object arg T))
   (prompt "\n** Invalid argument ** "))
(princ))

 
 
然而,以下是我的工具箱中特定于层的转储例程的一些示例:
 

(defun c:DUMPLAY(/ layerName)
(if (and (setq layerName (getstring "\nEnter layer name: "))
          (tblsearch "layer" layerName))
   (DUMPLAY layerName)
   (prompt "\n** Layer does not exist ** "))
(princ))

(defun DUMPLAY(layerName)
(if (tblsearch "layer" layerName)
   (progn
   (textpage)
   (vlax-dump-object
       (vla-item (vla-get-layers
                   (vla-get-activedocument (vlax-get-acad-object)))
               layerName)
       T))
   (prompt "\n** Layer does not exist ** "))
(princ))

Lee Mac 发表于 2022-7-6 09:30:40

正如Renderman正确指出的那样,vlax转储对象将与任何VLA对象一起使用,无论此类VLA对象是AutoCAD对象模型的一部分还是其他对象。
 
为了研究AutoCAD对象模型层次结构中的对象,我有时发现在ActiveX Developer Reference中使用对象模型流程图更容易。
 
要访问它,请在VLIDE帮助文档中导航到:
 
ActiveX和VBA参考»对象模型
 
从这里,您可以单击对象模型流程图上列出的任何对象,以查看与该对象相关的属性/方法,此外,您可以快速导航到每个属性/方法的文档。

BlackBox 发表于 2022-7-6 09:39:51

李-你会笑的,如果我找不到我想要的东西,我甚至会去VBAIDE/Visual Studio仔细阅读Object Viewer。英雄联盟

Tharwat 发表于 2022-7-6 09:44:32

谢谢你的代码,它们非常有用。
 
ً亲爱的伦德曼,你为什么感到惊讶?
 
谢谢。

Lee Mac 发表于 2022-7-6 09:49:23

 
嗯,VS Object Browser可能最适合AutoCAD对象模型之外的对象,因此您不会错得太多

Tharwat 发表于 2022-7-6 10:01:15

 
这就是我知道的,但不知道如何让它的Vla对象提取其道具和方法。
 
那么DIM、组和视口等呢。。。。。。
 
谢谢

Lee Mac 发表于 2022-7-6 10:09:01

 
单击图表上的项目。
 
 
列出了模型中的每个对象。

irneb 发表于 2022-7-6 10:11:52

如果我完全偏离主题,那么我道歉。但我以前也有过类似的“问题”。蒂姆·威利把我推上了TblInf32。DLL文件。您需要通过vlax导入类型库函数加载它,然后通过下载此帮助文件来查看其中的内容:http://support.microsoft.com/kb/q224331/
 
这样,您就可以将所有属性/方法放到一个列表中,这样您就可以将它们(比如)放在一个对话框中。这实际上是VBA中的对象浏览器本身所使用的。

Lee Mac 发表于 2022-7-6 10:20:26

 
在这个主题下,这是一个非常有趣的调查,调查用于公开其他对象(TlbInf32.dll)的属性和方法的工具的属性和方法。正如迈克尔在那篇文章中所说,它确实在语句的递归性中有一种美感。
页: [1]
查看完整版本: 如何获取属性和方法