using System; using System.Collections.Generic; using System.Linq; using System.Text; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.Aec.Building.ApplicationServices; using Autodesk.Aec.Building.DatabaseServices; using Autodesk.Aec.Building.Piping.DatabaseServices; using Autodesk.Aec.PropertyData.DatabaseServices; using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application; using AecPropDb = Autodesk.Aec.PropertyData.DatabaseServices; [assembly: CommandClass(typeof(CLMEP2012.CLMEPCommands))] namespace CLMEP2012 { public class CLMEPCommands { [CommandMethod("CLMEPTest", "CLMEP2", CommandFlags.Modal)] public void CLMEP2() { Transaction trans = ActiveDwg.TransactionManager.StartTransaction(); try { bool stat = ListAllPipeSystemDefinitionAndPipePartRoutingPreferences(); if (!stat) return; ActiveDwg.Editor.WriteMessage("\n-------------------------"); //Chilled Water //Standard PipeSystemDefinition sysDef = GetPipeSystemDefinition("Chilled Water"); if (sysDef == null) return; ActiveDwg.Editor.WriteMessage("\nPipeSystemDefinition: {0}", sysDef.Name); ActiveDwg.Editor.WriteMessage("\nDescription: {0}", sysDef.Description); ActiveDwg.Editor.WriteMessage("\n-------------------------"); //Generic Threaded //Grooved PipePartRoutingPreferencesStyle routePref = GetPipePartRoutingPreferencesStyle("Generic Threaded"); if (routePref == null) return; ActiveDwg.Editor.WriteMessage("\nPipePartRoutingPreferencesStyle: {0}", routePref.Name); ActiveDwg.Editor.WriteMessage("\nDescription: {0}", routePref.Description); } catch (Autodesk.AutoCAD.Runtime.Exception ex) { ActiveDwg.Editor.WriteMessage("\nCLMEP1 - AutoCAD Exception: " + ex.ErrorStatus.ToString()); } catch (System.Exception ex) { ActiveDwg.Editor.WriteMessage("\nCLMEP1 - System Exception: " + ex.Message); } finally { trans.Commit(); trans.Dispose(); } } public bool ListAllPipeSystemDefinitionAndPipePartRoutingPreferences() { if (ActiveDwg.TransactionManager.NumberOfActiveTransactions == 0) { ActiveDwg.Editor.WriteMessage("\nNo active transactions"); return false; } try { DBDictionary NOD = ActiveDwg.Database.NamedObjectsDictionaryId.GetObject(OpenMode.ForRead) as DBDictionary; //foreach (DBDictionaryEntry entry in NOD) // ActiveDwg.Editor.WriteMessage("\n{0} - {1}", entry.Key, entry.Value.ObjectClass.Name); if (NOD.Contains("AECB_PIPESYSTEMDEFS")) { DBDictionary dict = NOD.GetAt("AECB_PIPESYSTEMDEFS").GetObject(OpenMode.ForRead) as DBDictionary; foreach (DBDictionaryEntry entry in dict) { PipeSystemDefinition sysDef = entry.Value.GetObject(OpenMode.ForRead) as PipeSystemDefinition; ActiveDwg.Editor.WriteMessage("\nPipeSystemDefinition: {0}", sysDef.Name); } } else { ActiveDwg.Editor.WriteMessage("\nAECB_PIPESYSTEMDEFS dictionary not found"); } if (NOD.Contains("AECB_PIPE_PARTROUTINGPREFERENCES_STYLES")) { DBDictionary dict = NOD.GetAt("AECB_PIPE_PARTROUTINGPREFERENCES_STYLES").GetObject(OpenMode.ForRead) as DBDictionary; foreach (DBDictionaryEntry entry in dict) { PipePartRoutingPreferencesStyle routePref = entry.Value.GetObject(OpenMode.ForRead) as PipePartRoutingPreferencesStyle; ActiveDwg.Editor.WriteMessage("\nPipePartRoutingPreferencesStyle: {0}", routePref.Name); } } else { ActiveDwg.Editor.WriteMessage("\nAECB_PIPE_PARTROUTINGPREFERENCES_STYLES dictionary not found"); } return true; } catch (Autodesk.AutoCAD.Runtime.Exception ex) { ActiveDwg.Editor.WriteMessage("\nAutoCAD Exception: " + ex.ErrorStatus.ToString()); return false; } catch (System.Exception ex) { ActiveDwg.Editor.WriteMessage("\nSystem Exception: " + ex.Message); return false; } } public PipeSystemDefinition GetPipeSystemDefinition(string defName) { if (ActiveDwg.TransactionManager.NumberOfActiveTransactions == 0) { ActiveDwg.Editor.WriteMessage("\nNo active transactions"); return null; } try { DBDictionary NOD = ActiveDwg.Database.NamedObjectsDictionaryId.GetObject(OpenMode.ForRead) as DBDictionary; if (!NOD.Contains("AECB_PIPESYSTEMDEFS")) { ActiveDwg.Editor.WriteMessage("\nAECB_PIPESYSTEMDEFS dictionary not found"); return null; } DBDictionary dict = NOD.GetAt("AECB_PIPESYSTEMDEFS").GetObject(OpenMode.ForRead) as DBDictionary; if (!dict.Contains(defName)) { ActiveDwg.Editor.WriteMessage("\nSystem Def '{0}' not found", defName); return null; } return dict.GetAt(defName).GetObject(OpenMode.ForRead) as PipeSystemDefinition; } catch (Autodesk.AutoCAD.Runtime.Exception ex) { ActiveDwg.Editor.WriteMessage("\nAutoCAD Exception: " + ex.ErrorStatus.ToString()); return null; } catch (System.Exception ex) { ActiveDwg.Editor.WriteMessage("\nSystem Exception: " + ex.Message); return null; } } public PipePartRoutingPreferencesStyle GetPipePartRoutingPreferencesStyle(string prefName) { if (ActiveDwg.TransactionManager.NumberOfActiveTransactions == 0) { ActiveDwg.Editor.WriteMessage("\nNo active transactions"); return null; } try { DBDictionary NOD = ActiveDwg.Database.NamedObjectsDictionaryId.GetObject(OpenMode.ForRead) as DBDictionary; if (!NOD.Contains("AECB_PIPE_PARTROUTINGPREFERENCES_STYLES")) { ActiveDwg.Editor.WriteMessage("\nAECB_PIPE_PARTROUTINGPREFERENCES_STYLES dictionary not found"); return null; } DBDictionary dict = NOD.GetAt("AECB_PIPE_PARTROUTINGPREFERENCES_STYLES").GetObject(OpenMode.ForRead) as DBDictionary; if (!dict.Contains(prefName)) { ActiveDwg.Editor.WriteMessage("\nSystem Def '{0}' not found", prefName); return null; } return dict.GetAt(prefName).GetObject(OpenMode.ForRead) as PipePartRoutingPreferencesStyle; } catch (Autodesk.AutoCAD.Runtime.Exception ex) { ActiveDwg.Editor.WriteMessage("\nAutoCAD Exception: " + ex.ErrorStatus.ToString()); return null; } catch (System.Exception ex) { ActiveDwg.Editor.WriteMessage("\nSystem Exception: " + ex.Message); return null; } } } } /* * POSSIBLE LIST OF DICTIONARY'S WITHIN THE Database NamedObjectsDictionary: AbsT_Fabrication_Styles - AcDbDictionary AbsT_Hanger_Styles - AcDbDictionary ACAD_CIP_PREVIOUS_PRODUCT_INFO - AcDbXrecord ACAD_COLOR - AcDbDictionary ACAD_GROUP - AcDbDictionary ACAD_LAYOUT - AcDbDictionary ACAD_MATERIAL - AcDbDictionary ACAD_MLEADERSTYLE - AcDbDictionary ACAD_MLINESTYLE - AcDbDictionary ACAD_PLOTSETTINGS - AcDbDictionary ACAD_PLOTSTYLENAME - AcDbDictionaryWithDefault ACAD_SCALELIST - AcDbDictionary ACAD_TABLESTYLE - AcDbDictionary ACAD_VISUALSTYLE - AcDbDictionary AcAec - AcDbDictionary AcDbVariableDictionary - AcDbDictionary AEC_2D_SECTION_STYLES - AcDbDictionary AEC_AREA_GROUP_DEFS - AcDbDictionary AEC_AREA_MODIFIERS - AcDbDictionary AEC_AREA_PROPOSALNAMES - AcDbDictionary AEC_AREA_STYLES - AcDbDictionary AEC_AREAGROUP_STYLES - AcDbDictionary AEC_CLASSIFICATION_SYSTEM_DEFS - AcDbDictionary AEC_CLEANUP_GROUP_DEFS - AcDbDictionary AEC_CURTAIN_WALL_LAYOUT_STYLES - AcDbDictionary AEC_CURTAIN_WALL_UNIT_STYLES - AcDbDictionary AEC_DIM_STYLES - AcDbDictionary AEC_DISP_REP_CONFIGURATIONS - AcDbDictionary AEC_DISP_REP_SETS - AcDbDictionary AEC_DISP_REPS - AcDbDictionary AEC_DISPLAY_PROPS_DEFAULTS - AcDbDictionary AEC_DISPLAYTHEME_STYLES - AcDbDictionary AEC_DOOR_STYLES - AcDbDictionary AEC_ENDCAP_STYLES - AcDbDictionary AEC_LAYERKEY_STYLES - AcDbDictionary AEC_LIST_DEFINITIONS - AcDbDictionary AEC_MASKBLOCK_DEFS - AcDbDictionary AEC_MASS_ELEM_STYLES - AcDbDictionary AEC_MATERIAL_DEFS - AcDbDictionary AEC_MVBLOCK_DEFS - AcDbDictionary AEC_OPENING_ENDCAP_STYLES - AcDbDictionary AEC_POLYGON_STYLES - AcDbDictionary AEC_PROFILE_DEFS - AcDbDictionary AEC_PROPERTY_FORMAT_DEFS - AcDbDictionary AEC_PROPERTY_SET_DEFS - AcDbDictionary AEC_RAILING_STYLES - AcDbDictionary AEC_ROOFSLAB_STYLES - AcDbDictionary AEC_ROOFSLABEDGE_STYLES - AcDbDictionary AEC_SCHEDULE_TABLE_STYLES - AcDbDictionary AEC_SLAB_STYLES - AcDbDictionary AEC_SLABEDGE_STYLES - AcDbDictionary AEC_SPACE_MODIFIERS - AcDbDictionary AEC_SPACE_STYLES - AcDbDictionary AEC_STAIR_STYLES - AcDbDictionary AEC_STAIR_WINDER_STYLES - AcDbDictionary AEC_STAIR_WINDER_TYPES - AcDbDictionary AEC_STRUCTURALMEMBER_STYLES - AcDbDictionary AEC_VARS - AcDbDictionary AEC_WALL_STYLES - AcDbDictionary AEC_WALLMOD_STYLES - AcDbDictionary AEC_WINDOW_ASSEMBLY_STYLES - AcDbDictionary AEC_WINDOW_STYLES - AcDbDictionary AEC_ZONE_DEFS - AcDbDictionary AEC_ZONE_STYLES - AcDbDictionary AECB_CABLETARY_RISEDROP_STYLES - AcDbDictionary AECB_CABLETRAY_PARTCATPREF_STYLES - AcDbDictionary AECB_CABLETRAY_STYLES - AcDbDictionary AECB_CIRCUITS - AcDbDictionary AECB_CONDUIT_PARTCATPREF_STYLES - AcDbDictionary AECB_CONDUIT_RISEDROP_STYLES - AcDbDictionary AECB_CONDUIT_STYLES - AcDbDictionary AECB_CONNECTOR_STYLES - AcDbDictionary AECB_DEMAND_FACTOR_STYLES - AcDbDictionary AECB_DEVICE_STYLES - AcDbDictionary AECB_DEVICECATEGORYDEFS - AcDbDictionary AECB_DUCT_PARTCATPREF_STYLES - AcDbDictionary AECB_DUCT_RISEDROP_STYLES - AcDbDictionary AECB_DUCT_STYLES - AcDbDictionary AECB_DUCTCUSTOMFITTING_STYLES - AcDbDictionary AECB_DUCTSYSTEMDEFS - AcDbDictionary AECB_ELECSYSTEMDEFS - AcDbDictionary AECB_ESPACE_STYLE - AcDbDictionary AECB_FITTINGDEFS - AcDbDictionary AECB_FIXTUREUNITTABLEDEFS - AcDbDictionary AECB_LABELCURVE_STYLES - AcDbDictionary AECB_PANEL_STYLES - AcDbDictionary AECB_PANELCATEGORYDEFS - AcDbDictionary AECB_PIPE_PARTCATPREF_STYLES - AcDbDictionary AECB_PIPE_PARTROUTINGPREFERENCES_STYLES - AcDbDictionary AECB_PIPE_RISEDROP_STYLES - AcDbDictionary AECB_PIPE_SINGLELINEGRAPHICS_STYLES - AcDbDictionary AECB_PIPE_STYLES - AcDbDictionary AECB_PIPECUSTOMFITTING_STYLES - AcDbDictionary AECB_PIPEFITTING_STYLES - AcDbDictionary AECB_PIPESYSTEMDEFS - AcDbDictionary AECB_PLUMBING_RISEDROP_STYLES - AcDbDictionary AECB_PLUMBINGSYSTEMDEFS - AcDbDictionary AECB_PROFILE_DEFS - AcDbDictionary AECB_SANITARYPIPETABLEDEFS - AcDbDictionary AECB_SCHEMATIC_PIPE_STYLES - AcDbDictionary AECB_SCHEMATIC_STYLES - AcDbDictionary AECB_SCHEMATICPIPEFITTING_STYLES - AcDbDictionary AECB_SCHEMATICPIPEFITTINGCATEGORYDEFS - AcDbDictionary AECB_SCHEMATICSYMBOL_STYLES - AcDbDictionary AECB_SCHEMATICSYMBOLCATEGORYDEFS - AcDbDictionary AECB_SCHEMATICSYSTEMDEFS - AcDbDictionary AECB_SUPPLYPIPETABLEDEFS - AcDbDictionary AECB_TAGSDEFS - AcDbDictionary AECB_VOLTAGEDEFINITIONS - AcDbDictionary AECB_WIRE_STYLES - AcDbDictionary AecbPipe60 - AcDbDictionary AECS_MEMBER_NODE_SHAPE - AcDbDictionary */