Message 1 of 20
Read all Block in C#
Not applicable
08-11-2009
01:35 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi,
i'm new in here and new in programming AutoCAD in C#. I've been developing C# for 5 years but writing a program for AutoCAD is new challenge.
I want to read all blocks from an AutoCAD dwg including the attributes. (Hint: AutoCAD 2008 and VS.NET 2008!)
Is there a way to read all blocks (and attributes) without a SelectionSet?
Here is a small code sample. This sample is compileable and runable, but i don't get any blockreference from the selectionset!
Regards
Mario
AcadApplication acadApplication = null;
AcadDocument acadDocument = null;
AcadSelectionSet acadSelectionSet = null;
AcadAttribute[] acadAttributes = null;
Int16[] filterType = new Int16[]{0};
object[] filterData = new object[] { "Insert" };
try
{
acadApplication = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
}
catch
{
acadApplication = new AcadApplication();
}
acadApplication.Visible = false;
acadDocument = acadApplication.Documents.Add("c:\\temp\\test.dwg");
acadSelectionSet = acadDocument.SelectionSets.Add("sel1");
acadSelectionSet.Select(AcSelect.acSelectionSetAll, Type.Missing, Type.Missing, filterType, filterData);
foreach (AcadBlockReference blockReference in acadSelectionSet)
{
acadAttributes = blockReference.GetAttributes() as AcadAttribute[];
foreach(AcadAttribute attr in acadAttributes)
{
switch( attr.TagString)
{
...
}
}
} Edited by: TeiMar71 on Aug 11, 2009 2:17 PM
i'm new in here and new in programming AutoCAD in C#. I've been developing C# for 5 years but writing a program for AutoCAD is new challenge.
I want to read all blocks from an AutoCAD dwg including the attributes. (Hint: AutoCAD 2008 and VS.NET 2008!)
Is there a way to read all blocks (and attributes) without a SelectionSet?
Here is a small code sample. This sample is compileable and runable, but i don't get any blockreference from the selectionset!
Regards
Mario
AcadApplication acadApplication = null;
AcadDocument acadDocument = null;
AcadSelectionSet acadSelectionSet = null;
AcadAttribute[] acadAttributes = null;
Int16[] filterType = new Int16[]{0};
object[] filterData = new object[] { "Insert" };
try
{
acadApplication = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
}
catch
{
acadApplication = new AcadApplication();
}
acadApplication.Visible = false;
acadDocument = acadApplication.Documents.Add("c:\\temp\\test.dwg");
acadSelectionSet = acadDocument.SelectionSets.Add("sel1");
acadSelectionSet.Select(AcSelect.acSelectionSetAll, Type.Missing, Type.Missing, filterType, filterData);
foreach (AcadBlockReference blockReference in acadSelectionSet)
{
acadAttributes = blockReference.GetAttributes() as AcadAttribute[];
foreach(AcadAttribute attr in acadAttributes)
{
switch( attr.TagString)
{
...
}
}
} Edited by: TeiMar71 on Aug 11, 2009 2:17 PM