fmfm 发表于 2004-3-23 15:16:00

请问如何用vba获得图形信息

图形的实体信息。


是通过那些命令呢?谢谢


不读取dxf。

efan2000 发表于 2004-3-23 17:51:00

先通过ObjectName判断实体的类型,然后再根据各个对象本身所提供的方法、属性来操作实体。公共的属性像Layer、Color等。

fmfm 发表于 2004-3-24 19:58:00

谢谢,知道大概的方法了。


又有问题了


文档对象,实际上就是AutoCAD图形,它可在Documents(文档)集合中找到,它提供访问所有图形还有大部分非图形的AutoCAD对象。通过提供的ModelSpace(模型空间)和PaperSpace(图纸空间)访问图形对象(线、圆、弧等),通过提供的如Layers(图层)、Linetypes(线型)和TextStyles(字型)这样名称的集合访问非图形对象(图层、线型、字型等)。Document(文档)对象也提供访问Plot(打印出图)和Utility(实用工具)对象。


请问有没有详细地说明或实例呀,比如我想提取出来一条支线的两个点的四个坐标


麻烦了,谢谢先!!

efan2000 发表于 2004-3-24 20:39:00

ACAD的模型应该是Application应用程序-Document文档-ModelSpace模型空间,一般的绘图,实体全部在模型空间,通过遍历它就可以得到。另一种是通过选择集来选择实体,然后对其进行操作。

fmfm 发表于 2004-3-25 17:41:00

大哥,这些呢,我现在模模糊糊的理解了。但只是理论上的理解。


所以呢,希望你能给个例子。就这个吧,比如图形上有一条直线,通过编程获取他的起点和终点的坐标,然后msg显示出来。


呵,麻烦给写个代码吧,要不不好理解了,谢啦谢啦。

gzy 发表于 2004-3-26 08:39:00

<BR>Dim lineobj As AcadLine<BR>Dim selobj As AcadObject, selpnt As Variant<BR>Dim mp1(0 To 2) As Double '起点<BR>Dim mp2(0 To 2) As Double '终点<BR>ThisDrawing.Utility.GetEntity selobj, selpnt, "请选择目标直线"<BR>        If (selobj.EntityName = "AcDbLine") Then<BR>       Set lineobj = selobj<BR>       mp1(0) = lineobj.StartPoint(0)<BR>       mp1(1) = lineobj.StartPoint(1)<BR>       mp2(0) = lineobj.EndPoint(0)<BR>       mp2(1) = lineobj.EndPoint(1)<BR>End If

yichong 发表于 2004-3-27 22:15:00

我有个类似的问题:不通过"ThisDrawing.Utility.GetEntity"再用鼠标选择,而是用程序选择AcadLine(已知ObjectID),然后修改端点!


请问高手如何代码实现?

efan2000 发表于 2004-3-27 22:31:00

使用文档对象的ObjectIDToObject来返回一个对象。
页: [1]
查看完整版本: 请问如何用vba获得图形信息