AutoCAD Architecture Customization
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Programati cally add geometry to a duct fitting
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
87 Views, 1 Replies
01-30-2013 05:48 PM
I am trying to add geometry programatically to a duct fitting. This is because the content builder is incapable of correctly building some types of fittings. I found some old code from an Autodesk University class that shows how to add geometry to a AEC object. I have modified it a little to be able to work with a duct fitting but it does not work. The code compiles fine and runs fine without any errors. The geometry is just not added.
Does anyone have any ideas?
[CommandMethod("ACAClassCode", "ExModelerModifyBody", CommandFlags.Modal)]
public void ModifyBody()
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Edit or;
// get a mass element to modify.
PromptEntityOptions prEntOpts = new PromptEntityOptions("\nSelect duct fitting to modify");
prEntOpts.SetRejectMessage("\nSelected entity must be of type duct fitting");
//prEntOpts.AddAllowedClass(typeof(Autodesk.Aec.Da tabaseServices.MassElement), false);
prEntOpts.AddAllowedClass(typeof(DuctFitting), false);
PromptEntityResult prEntRes = ed.GetEntity(prEntOpts);
if (prEntRes.Status != PromptStatus.OK)
return;
Autodesk.AutoCAD.DatabaseServices.TransactionManag er tm = db.TransactionManager;
using (Transaction trans = tm.StartTransaction())
{
// Open the duct fitting
//Autodesk.Aec.DatabaseServices.MassElement me = (Autodesk.Aec.DatabaseServices.MassElement)trans.G etObject(prEntRes.ObjectId, OpenMode.ForWrite);
DuctFitting me = (DuctFitting)trans.GetObject(prEntRes.ObjectId, OpenMode.ForWrite);
// Get the body from the duct fitting.
Autodesk.Aec.Modeler.Body bBase = me.Body;
// setup a location to hold the new body.
Autodesk.Aec.Modeler.Body bNew = null;
// create two new bodies
Autodesk.Aec.Modeler.Body b1 = Autodesk.Aec.Modeler.Body.Cone(new LineSegment3d(new Point3d(0, 0, 0), new Point3d(0, 0, 5)), 2, 1.5, 10);
Autodesk.Aec.Modeler.Body b2 = Autodesk.Aec.Modeler.Body.Sphere(new Point3d(0, 0, 5), 0.5, 10);
// perform a bolean union via the plus operator... In this case we are unioining the two new bodys we created above.
bNew = b1 + b2;
// Now take the oginal body and subtract our new body.
// bNew = bBase - bNew;
bNew = bBase + bNew;
// finally, since we are working on a copy, we need to assign the final body back to the mass element.
//me.SetBody(bNew, true);
me.Body.Combine(bNew);
trans.Commit();
}
}
Re: Programati cally add geometry to a duct fitting
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
01-30-2013 05:49 PM in reply to:
Keith.Brown
I thought I would mention that I know that .net is capable of adding geometry programatically to a fitting. I have seen the end result personally so that I know it works. I know that 3D solids were used but I am just unable to figure it out. Any help would be appreciated.

