菜鸟求助:如何获取动态块每次插入后的实际参数值?
各位好!菜鸟请各位帮看看,因为刚刚接触autocad的开发。我在使用.net.
我制作了一个动态块,在绘图时,这个动态块插入了多次,每次插入之后,都会根据需要调整块的几何参数。现在需要把图纸上该块每次插入的参数信息进行输出到xls,想请教各位如何获取每次插入的块的几何参数值?
谢谢啊! 新人,学习了 本帖最后由 raohuan 于 2014-5-25 22:33 编辑
你要遍历模型空间,找到所有的BlockRefence对象,然后得到BlockRefence的名称,判断是否为所需块,如果是,拿到BlockRefence的动态尺寸属性集:
DynamicBlockReferencePropertyCollection PropertyCollect = br.DynamicBlockReferencePropertyCollection;
接着遍历这个属性:
foreach (DynamicBlockReferenceProperty prop in PropertyCollect)
{
代码...;
} 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和各位大侠指点,谢谢! 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#代码
raohuan 发表于 2014-5-27 23:07 static/image/common/back.gif
我之前回复的是C#代码.
你贴出来的代码有点问题:
感谢回复!
raohuan应该是做arx开发吧?!
我想问问你是如何获取模型空间的?
谢谢啊! 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-6-1 22:27 编辑
raohuan 发表于 2014-5-28 20:33 static/image/common/back.gif
C#也是用于.net的开发!
Dim acBlkTbl As BlockTable
谢谢raohuan啊!
这是获取到了块表记录。块表记录中是每一个BlockReference吗?怎么获取每一个BlockReference呢?
一直想知道这个问题
页:
[1]