// create a display config with a little more information filled. private DisplayConfiguration CreateDisplayConfig() { Database db = Application.DocumentManager.MdiActiveDocument.Database; Transaction trans = db.TransactionManager.StartTransaction(); DisplayRepresentationManager drm = new DisplayRepresentationManager(db); ObjectId currentDisConfId = drm.DisplayConfigurationIdForCurrentViewport; DisplayConfiguration currentDisConf = trans.GetObject(currentDisConfId, OpenMode.ForRead) as DisplayConfiguration; DisplayConfiguration dc = new DisplayConfiguration(); try { DisplaySet ds = new DisplaySet(); ds.SetToStandard(db); ds.SubSetDatabaseDefaults(db); // top dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, 1), DictionaryDisplaySet.GetStandardPlanId(db))); // for bottom. No DictionaryDisplaySet.GetStandardXxxId for Plan Diagnostic, so get it from the name. ObjectId id = DictionaryDisplaySet.GetStandardSet("Plan Diagnostic", db); if (id != ObjectId.Null) { dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, -1), id)); } else // if not found, let's use Reflected. { dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, -1), DictionaryDisplaySet.GetStandardReflectedId(db))); //buttom } dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(-1, 0, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // left dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(1, 0, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // right dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, -1, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // front dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 1, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // back // try adding DefaultViewDependentViewSet here. dc.DefaultViewDependentViewSet = DictionaryDisplaySet.GetStandardModelId(db); DictionaryDisplayConfiguration dictDisplayConfigs = new DictionaryDisplayConfiguration(db); string newName = GetNewName(); dictDisplayConfigs.AddNewRecord(newName, dc); trans.AddNewlyCreatedDBObject(dc, true); trans.Commit(); } catch (System.Exception) { trans.Abort(); } finally { trans.Dispose(); } return(dc); }
//////////////////////////// //// Display Configuration //////////////////////////// private void DisplayConfigs() { //' access the display system from the database object Database db = Application.DocumentManager.MdiActiveDocument.Database; Transaction trans = db.TransactionManager.StartTransaction(); try { // Access the display system from the document object DictionaryDisplayConfiguration dictDisplayConfigs = new DictionaryDisplayConfiguration(db); // The total number of display configurations registered. Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("There are " + dictDisplayConfigs.Records.Count + " display configs:\n"); // List them foreach (ObjectId dcId in dictDisplayConfigs.Records) { DisplayConfiguration dc = trans.GetObject(dcId, OpenMode.ForWrite) as DisplayConfiguration; Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Name : " + dc.Name + "\n" + "Description : " + dc.Description + "\n"); } // Add a new config with the name "MyConfig" with a description in it. Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nLet's add a new DisplayConfiguration:\n"); DisplayConfiguration displayconfig = new DisplayConfiguration(); displayconfig.Description = "This is MyConfig"; if (!dictDisplayConfigs.Has("MyConfig", trans)) { dictDisplayConfigs.AddNewRecord("MyConfig", displayconfig); trans.AddNewlyCreatedDBObject(displayconfig, true); } // Add another one "FORUSE1" Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(displayconfig.Name + " : " + displayconfig.Description + "\n"); DisplayConfiguration displayconfig1 = new DisplayConfiguration(); displayconfig1.Description = "This is for use"; if (!dictDisplayConfigs.Has("FORUSE1", trans)) { dictDisplayConfigs.AddNewRecord("FORUSE1", displayconfig1); trans.AddNewlyCreatedDBObject(displayconfig1, true); } // rename MyConfig to a new name MyNewConfigureXxx Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nLet's rename this new DisplayConfiguration:\n"); string newName = GetNewName(); dictDisplayConfigs.Rename("MyConfig", newName, trans); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("After Renamed:\nName: " + displayconfig.Name + "\nDescription: " + displayconfig.Description + "\n"); // report the total number of display config again. Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("There are " + dictDisplayConfigs.Records.Count + " display configurations now.\n"); // the ObjectId of the new disp config? ObjectId nid = dictDisplayConfigs.GetAt(newName); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("The current ObjectId for new display configuration is:" + nid.ToString() + "\n"); // the current active config? DisplayRepresentationManager drm = new DisplayRepresentationManager(db); ObjectId currentDisConfId = drm.DisplayConfigurationIdForCurrentViewport; DisplayConfiguration currentDisConf = trans.GetObject(currentDisConfId, OpenMode.ForRead) as DisplayConfiguration; Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("The Current DisplayConfiguration is " + currentDisConf.Name + "\n"); ListDisplayConfig(currentDisConf); // create a new disp config with more detailed information. Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Let's create a new DisplayConfiguration for detail:\n"); DisplayConfiguration newDc = CreateDisplayConfig(); // print it out ListDisplayConfig(newDc); trans.Commit(); } catch (System.Exception e) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Exception: " + e.Message + "\n"); trans.Abort(); } finally { trans.Dispose(); } }