private static void HatchPoly(_AcDb.ObjectId oid, string layer, int red, int green, int blue, _AcDb.TransactionManager tm) { string patternName = "_SOLID"; bool bAssociativity = false; _AcIntCom.AcadEntity oPoly = Plan2Ext.Globs.ObjectIdToAcadEntity(oid, tm); _AcIntCom.AcadEntity oCopiedPoly = null; if (oPoly is _AcIntCom.AcadPolyline) { _AcIntCom.AcadPolyline poly1 = (_AcIntCom.AcadPolyline)oPoly; oCopiedPoly = (_AcIntCom.AcadEntity)poly1.Copy(); ((_AcIntCom.AcadPolyline)oCopiedPoly).Closed = true; } else if (oPoly is _AcIntCom.AcadLWPolyline) { _AcIntCom.AcadLWPolyline poly2 = (_AcIntCom.AcadLWPolyline)oPoly; oCopiedPoly = (_AcIntCom.AcadEntity)poly2.Copy(); ((_AcIntCom.AcadLWPolyline)oCopiedPoly).Closed = true; } else // 3dpoly { _AcIntCom.Acad3DPolyline poly2 = (_AcIntCom.Acad3DPolyline)oPoly; oCopiedPoly = (_AcIntCom.AcadEntity)poly2.Copy(); ((_AcIntCom.Acad3DPolyline)oCopiedPoly).Closed = true; } //' Create the non associative Hatch object in model space _AcInt.AcadApplication app = (_AcInt.AcadApplication)_AcAp.Application.AcadApplication; //log.Info("1.."); //Autodesk.AutoCAD.Interop.AcadApplication abc = (Autodesk.AutoCAD.Interop.AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication; //log.Info("2.."); _AcIntCom.AcadHatch hatchObj = app.ActiveDocument.ModelSpace.AddHatch(AcPatternType, patternName, bAssociativity, AcHatchObject); _AcIntCom.AcadAcCmColor col1 = new _AcIntCom.AcadAcCmColor(); // app.GetInterfaceObject(COLOROBJECTPROGID) as AcadAcCmColor; //AcadAcCmColor col2 = app.GetInterfaceObject(COLOROBJECTPROGID) as AcadAcCmColor; col1.SetRGB(red, green, blue); hatchObj.TrueColor = col1; _AcIntCom.AcadEntity[] outerLoop = new _AcIntCom.AcadEntity[] { oCopiedPoly }; hatchObj.AppendOuterLoop(outerLoop); SetLayer((_AcIntCom.AcadEntity)hatchObj, layer); if (oCopiedPoly != null) { oCopiedPoly.Delete(); } }
private static void SetLayer(_AcIntCom.AcadEntity oCopiedPoly, string layerName) { Plan2Ext.Globs.CreateLayer(layerName); oCopiedPoly.Layer = layerName; }