fatkids 发表于 2014-5-11 23:45:35

菜鸟求助:如何获取动态块每次插入后的实际参数值?

各位好!
      菜鸟请各位帮看看,因为刚刚接触autocad的开发。我在使用.net.
      
      我制作了一个动态块,在绘图时,这个动态块插入了多次,每次插入之后,都会根据需要调整块的几何参数。现在需要把图纸上该块每次插入的参数信息进行输出到xls,想请教各位如何获取每次插入的块的几何参数值?
      
      谢谢啊!

一个大土豆 发表于 2014-5-12 14:37:24

新人,学习了

raohuan 发表于 2014-5-25 22:32:03

本帖最后由 raohuan 于 2014-5-25 22:33 编辑

你要遍历模型空间,找到所有的BlockRefence对象,然后得到BlockRefence的名称,判断是否为所需块,如果是,拿到BlockRefence的动态尺寸属性集:
DynamicBlockReferencePropertyCollection PropertyCollect = br.DynamicBlockReferencePropertyCollection;
接着遍历这个属性:
foreach (DynamicBlockReferenceProperty prop in PropertyCollect)
{
   代码...;
}

fatkids 发表于 2014-5-27 11:03:42

raohuan 发表于 2014-5-25 22:32 static/image/common/back.gif
你要遍历模型空间,找到所有的BlockRefence对象,然后得到BlockRefence的名称,判断是否为所需块,如果是, ...

感谢回复!
菜鸟继续请教。
楼上用的是arx开发,我现在用的是DCOM开发。
请问:
      1、在arx中怎么获取模型空间?在DCOM中可以用modelspace,arx中怎么用呢?

      2、DCOM开发中,程序如下:
            Dim acApp As AcadApplication = GetObject(, "AutoCAD.Application")
            Dim acDoc As AcadDocument = acApp.ActiveDocument
            dim blk as acadblockreference

            For Each blk In acDoc.ModelSpace
                        Dim d_p As Object = blk.GetDynamicBlockProperties
                     '在这里d_p获取出来是个system.array,怎么获取到里面的值呢????????         
            Next
      3、我尝试把arx和DCOM混用,但之间的类型不可以转换。例如acadBlockReference和BlockReference。

还请raohuan和各位大侠指点,谢谢!

raohuan 发表于 2014-5-27 23:07:37

fatkids 发表于 2014-5-27 11:03 static/image/common/back.gif
感谢回复!
菜鸟继续请教。
楼上用的是arx开发,我现在用的是DCOM开发。

我之前回复的是C#代码.

你贴出来的代码有点问题:
1. 你遍历模型空间的东西不一定全是图块,必须先做判断,如果是图块,再继续获得动态属性集。
2. Dim d_p As Object = blk.GetDynamicBlockProperties中的返回对象应该设为动态块属性集类型,在C#中的语法如下,可做参考:
DynamicBlockReferencePropertyCollection d_p= blk.DynamicBlockReferencePropertyCollection;
3. 拿到属性集后再遍历每个属性方法如下:
foreach (DynamicBlockReferenceProperty prop in PropertyCollect)
{
string BlockPropertyName;
BlockPropertyName = prop.PropertyName;
代码...            
}

以上是c#代码


fatkids 发表于 2014-5-28 17:04:23

raohuan 发表于 2014-5-27 23:07 static/image/common/back.gif
我之前回复的是C#代码.

你贴出来的代码有点问题:


感谢回复!
raohuan应该是做arx开发吧?!
我想问问你是如何获取模型空间的?
谢谢啊!

raohuan 发表于 2014-5-28 20:33:30

fatkids 发表于 2014-5-28 17:04 static/image/common/back.gif
感谢回复!
raohuan应该是做arx开发吧?!
我想问问你是如何获取模型空间的?
C#也是用于.net的开发!

Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)


Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)

fatkids 发表于 2014-5-28 21:31:04

本帖最后由 fatkids 于 2014-6-1 22:27 编辑

raohuan 发表于 2014-5-28 20:33 static/image/common/back.gif
C#也是用于.net的开发!

Dim acBlkTbl As BlockTable


谢谢raohuan啊!
这是获取到了块表记录。块表记录中是每一个BlockReference吗?怎么获取每一个BlockReference呢?

卷柏 发表于 2014-6-28 07:08:17

一直想知道这个问题
页: [1]
查看完整版本: 菜鸟求助:如何获取动态块每次插入后的实际参数值?