loft

loft

Anonymous
Not applicable
1,180 Views
2 Replies
Message 1 of 3

loft

Anonymous
Not applicable
hi

to make a loft object

i have problem with addsubentitypath to make loft

is there any way to make a lofted object without using subentitypath

for eample in lofting two cyrcle

thank all
0 Likes
1,181 Views
2 Replies
Replies (2)
Message 2 of 3

Anonymous
Not applicable
I'm not of much help but I was wondering if you could explain what a loft object is?
0 Likes
Message 3 of 3

cadMeUp
Collaborator
Collaborator
You can try this code and adapt it:


[CommandMethod("TestLoftCircles", CommandFlags.Modal)]
public static void TestLoftObjekt()
{
Editor editor = AcadApp.DocumentManager.MdiActiveDocument.Editor;
Database db = AcadApp.DocumentManager.MdiActiveDocument.Database;
TransMan transMgr = db.TransactionManager;

using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

Circle Circle1 = new Circle(new Point3d(0, 0, 0), new Vector3d(0, 0, 1), 8);
Circle Circle2 = new Circle(new Point3d(1, 3, 7.5), new Vector3d(0, 0, 1), 2);
Circle Circle3 = new Circle(new Point3d(2, 2, 15), new Vector3d(0, 0, 1), 5);

btr.AppendEntity(Circle1);
btr.AppendEntity(Circle2);
btr.AppendEntity(Circle3);
trans.AddNewlyCreatedDBObject(Circle1, true);
trans.AddNewlyCreatedDBObject(Circle2, true);
trans.AddNewlyCreatedDBObject(Circle3, true);

CircularArc3d cirArc1 = new CircularArc3d(Circle1.Center, Circle1.Normal, Circle1.Radius);
CircularArc3d cirArc2 = new CircularArc3d(Circle2.Center, Circle2.Normal, Circle2.Radius);
CircularArc3d cirArc3 = new CircularArc3d(Circle3.Center, Circle3.Normal, Circle3.Radius);

int numPoints = 5;
Point3d[] sps1 = cirArc1.GetSamplePoints(numPoints);
Point3d[] sps2 = cirArc2.GetSamplePoints(numPoints);
Point3d[] sps3 = cirArc3.GetSamplePoints(numPoints);

int numCurves = numPoints - 1;
Entity[] guideCurves = new Entity[numCurves];
for (int i = 0; i < numCurves; i++)
{
Point3dCollection pnts = new Point3dCollection();
pnts.Add(sps1);
pnts.Add(sps2);
pnts.Add(sps3);

Spline sp = new Spline(pnts, 2, 0);
guideCurves.SetValue(sp, i);
}

LoftedSurface loftedSurface = new LoftedSurface();
LoftOptions loftOps = new LoftOptions();

Entity[] crossSections = { Circle1, Circle2, Circle3 };
loftedSurface.CreateLoftedSurface(crossSections, guideCurves, null, loftOps);

ObjectId loftId = btr.AppendEntity(loftedSurface);
trans.AddNewlyCreatedDBObject(loftedSurface, true);

Circle1.Erase();
Circle2.Erase();
Circle3.Erase();

trans.Commit();
}
}