public static void testingNode(ACDN.Document doc)
{
Autodesk
.AutoCAD.DynamoApp.Services.DocumentContext ctx
= new Autodesk
.AutoCAD.DynamoApp.Services.DocumentContext(doc
.AcDocument); Database db = ctx.Database;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTable blockTable = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
BlockTableRecord btr = trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
List
<Entity
> ents
= new List
<Entity
>(); Polyline3d outputPolyline3D1
= new Polyline3d
(); Polyline3d outputPolyline3D2
= new Polyline3d
();
outputPolyline3D1.SetDatabaseDefaults();
btr.AppendEntity(outputPolyline3D1);
trans.AddNewlyCreatedDBObject(outputPolyline3D1, true);
outputPolyline3D2.SetDatabaseDefaults();
btr.AppendEntity(outputPolyline3D2);
trans.AddNewlyCreatedDBObject(outputPolyline3D2, true);
ents.Add(outputPolyline3D1);
ents.Add(outputPolyline3D2);
Point3d inputPoint1
= new Point3d
(0,
0,
0); Point3d inputPoint2
= new Point3d
(10,
0,
0); Point3d inputPoint3
= new Point3d
(10,
10,
0); Point3d inputPoint4
= new Point3d
(0,
10,
0);
Point3d inputPoint5
= new Point3d
(0,
0,
10); Point3d inputPoint6
= new Point3d
(10,
0,
10); Point3d inputPoint7
= new Point3d
(10,
10,
10); Point3d inputPoint8
= new Point3d
(0,
10,
10);
PolylineVertex3d outputPolylineVertex1
= new PolylineVertex3d
(inputPoint1
); PolylineVertex3d outputPolylineVertex2
= new PolylineVertex3d
(inputPoint2
); PolylineVertex3d outputPolylineVertex3
= new PolylineVertex3d
(inputPoint3
); PolylineVertex3d outputPolylineVertex4
= new PolylineVertex3d
(inputPoint4
); PolylineVertex3d outputPolylineVertex5
= new PolylineVertex3d
(inputPoint5
); PolylineVertex3d outputPolylineVertex6
= new PolylineVertex3d
(inputPoint6
); PolylineVertex3d outputPolylineVertex7
= new PolylineVertex3d
(inputPoint7
); PolylineVertex3d outputPolylineVertex8
= new PolylineVertex3d
(inputPoint8
);
outputPolyline3D1.AppendVertex(outputPolylineVertex1);
trans.AddNewlyCreatedDBObject(outputPolylineVertex1, true);
outputPolyline3D1.AppendVertex(outputPolylineVertex2);
trans.AddNewlyCreatedDBObject(outputPolylineVertex2, true);
outputPolyline3D1.AppendVertex(outputPolylineVertex3);
trans.AddNewlyCreatedDBObject(outputPolylineVertex3, true);
outputPolyline3D1.AppendVertex(outputPolylineVertex4);
trans.AddNewlyCreatedDBObject(outputPolylineVertex4, true);
outputPolyline3D2.AppendVertex(outputPolylineVertex5);
trans.AddNewlyCreatedDBObject(outputPolylineVertex5, true);
outputPolyline3D2.AppendVertex(outputPolylineVertex6);
trans.AddNewlyCreatedDBObject(outputPolylineVertex6, true);
outputPolyline3D2.AppendVertex(outputPolylineVertex7);
trans.AddNewlyCreatedDBObject(outputPolylineVertex7, true);
outputPolyline3D2.AppendVertex(outputPolylineVertex8);
trans.AddNewlyCreatedDBObject(outputPolylineVertex8, true);
outputPolyline3D1.Closed = true;
outputPolyline3D2.Closed = true;
Autodesk.AutoCAD.ApplicationServices.DocumentCollection docColl = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
Autodesk.AutoCAD.ApplicationServices.Document testDoc = docColl.MdiActiveDocument;
Autodesk.AutoCAD.EditorInput.Editor testEdit = testDoc.Editor;
//I don't understand why "testEdit.Command()" throws invalid input
var ss = Autodesk.AutoCAD.EditorInput.SelectionSet.FromObjectIds(ents.Select(entitiesToCreate => entitiesToCreate.ObjectId).ToArray());
testEdit.Command("_.loft", ss, " ", "Cross sections only");
//This works but is not synchronous
//testEdit.SetImpliedSelection(ents.Select(ent => ent.ObjectId).ToArray());
//testDoc.SendStringToExecute("._loft c ", false, false, false);
trans.Commit();
}
}