Thursday, October 15, 2009

Get 3D Polyline Vertices in AutoCAD .Net


using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

public void Get3DPolylinesVertices()

{

Document doc = AcadApp.DocumentManager.MdiActiveDocument;

Database db = doc.Database;

Transaction tr = db.TransactionManager.StartTransaction();

using (tr)

{

BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);

BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

foreach (ObjectId id in btr)

{

Entity ent = (Entity) tr.GetObject(id, OpenMode.ForRead);

if (ent is Polyline3d)

{

Polyline3d polyline3d = ent as Polyline3d;

foreach (ObjectId vertexId in polyline3d)

{

PolylineVertex3d vertex3d =

(PolylineVertex3d)tr.GetObject(vertexId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);

vertex3d.Position // This is one vertices of 3d polyline...

}

}

}

tr.Commit();

}

}

ArcGIS API for Flex Samples

View ArcGIS API for Flex samples here…

http://resources.esri.com/help/9.3/arcgisserver/apis/flex/samples/index.html

ArcGIS API for Silverlight Samples

View ArcGIS API for Silverlight samples here…

http://resources.esri.com/help/9.3/arcgisserver/apis/silverlight/samples/start.htm

View your drawings in Google Earth

http://labs.autodesk.com/utilities/google_earth_extension_beta

Attach XData to all Model Space entities in AutoCAD .Net

using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;


[CommandMethod("AddXData")]

public void AddXData()

{

Document doc = AcadApp.DocumentManager.MdiActiveDocument;

Editor ed = doc.Editor;

Database db = doc.Database;

Transaction tr = db.TransactionManager.StartTransaction();

using (tr)

{

BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);

BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

string XDAppName = "UNIQUEID";

// Register XData Application Name

RegAppTable regTable = (RegAppTable) tr.GetObject(db.RegAppTableId, OpenMode.ForWrite);

RegAppTableRecord regTableRec = new RegAppTableRecord();

regTableRec.Name = XDAppName;

regTable.Add(regTableRec);

tr.AddNewlyCreatedDBObject(regTableRec, true);

int counter = 1;

foreach (ObjectId id in btr)

{

Entity ent = (Entity) tr.GetObject(id, OpenMode.ForWrite);

using (ResultBuffer rb = new ResultBuffer(new TypedValue(1001, XDAppName), new TypedValue(1000, counter.ToString())))

{

ent.XData = rb;

}

counter++;

}

tr.Commit();

}

}