明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3936|回复: 8

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

[复制链接]
发表于 2014-5-11 23:45:35 | 显示全部楼层 |阅读模式
各位好!
      菜鸟请各位帮看看,因为刚刚接触AutoCAD的开发。我在使用.net.
      
      我制作了一个动态块,在绘图时,这个动态块插入了多次,每次插入之后,都会根据需要调整块的几何参数。现在需要把图纸上该块每次插入的参数信息进行输出到xls,想请教各位如何获取每次插入的块的几何参数值?
      
      谢谢啊!
发表于 2014-5-12 14:37:24 | 显示全部楼层
新人,学习了
发表于 2014-5-25 22:32:03 | 显示全部楼层
本帖最后由 raohuan 于 2014-5-25 22:33 编辑

你要遍历模型空间,找到所有的BlockRefence对象,然后得到BlockRefence的名称,判断是否为所需块,如果是,拿到BlockRefence的动态尺寸属性集:
DynamicBlockReferencePropertyCollection PropertyCollect = br.DynamicBlockReferencePropertyCollection;
接着遍历这个属性:
foreach (DynamicBlockReferenceProperty prop in PropertyCollect)
{
     代码...;
}
 楼主| 发表于 2014-5-27 11:03:42 | 显示全部楼层
raohuan 发表于 2014-5-25 22:32
你要遍历模型空间,找到所有的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和各位大侠指点,谢谢!
发表于 2014-5-27 23:07:37 | 显示全部楼层
fatkids 发表于 2014-5-27 11:03
感谢回复!
菜鸟继续请教。
楼上用的是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#代码


 楼主| 发表于 2014-5-28 17:04:23 | 显示全部楼层
raohuan 发表于 2014-5-27 23:07
我之前回复的是C#代码.

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

感谢回复!
raohuan应该是做arx开发吧?!
我想问问你是如何获取模型空间的?
谢谢啊!
发表于 2014-5-28 20:33:30 | 显示全部楼层
fatkids 发表于 2014-5-28 17:04
感谢回复!
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)
 楼主| 发表于 2014-5-28 21:31:04 | 显示全部楼层
本帖最后由 fatkids 于 2014-6-1 22:27 编辑
raohuan 发表于 2014-5-28 20:33
C#也是用于.net的开发!

Dim acBlkTbl As BlockTable


谢谢raohuan啊!
这是获取到了块表记录。块表记录中是每一个BlockReference吗?怎么获取每一个BlockReference呢?
发表于 2014-6-28 07:08:17 | 显示全部楼层
一直想知道这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 03:00 , Processed in 0.179318 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表