一个cad文件中有很多图纸,如何一下子得到每张贴纸图纸的名称,材质及数量呢?贴纸图纸如下图。
代码如下:拿上上次的套一下哎。
[CommandMethod("qq")]//lesson5____属性块
public void asd()
{
Database db = HostApplicationServices.WorkingDatabase;
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
var aa = from o in db.GetSelection<BlockReference>()//获得选中的图
where o.ColorIndex >= 0
select o;
int bear = 0, ladder=0;
string tutu = "";
foreach (BlockReference bb in aa)
{
foreach (ObjectId id in bb.AttributeCollection)
{
AttributeReference att = id.GetObject(OpenMode.ForRead) as AttributeReference;
string tu = att.Tag;
if (tu == "名称")
{
tutu = att.TextString;
}
if (tutu == "熊状贴纸" && tu == "数量")
{
bear = bear + Convert.ToInt16(att.TextString);
}
if (tutu == "台阶状贴纸" && tu == "数量")
{
ladder = ladder + Convert.ToInt16(att.TextString);
}
}
tutu = "";
}
Application.ShowAlertDialog("熊状贴纸数量:"+bear);
Application.ShowAlertDialog("台阶状贴纸数量:"+ladder);
trans.Commit();
}
}
大致过程:遍历每一个属性块,再遍历每一个属性块内的信息,最终得到你要的信息,然后输出信息。运行结果如下图:可以获得属性快的内容。如果图纸的信息很多可以输出到excel等文件中。
下次预告:在cad中画出异形多边形的最大内接圆。