Author Topic: Has anyone used the DisplayRepresentationManager?  (Read 2061 times)

0 Members and 1 Guest are viewing this topic.

commodore

  • Newt
  • Posts: 51
Has anyone used the DisplayRepresentationManager?
« on: January 15, 2011, 10:16:17 AM »
I am trying to set the display configuration on a new viewport that I created with my program but I cant get the GetDisplayConfigurationId or SetDisplayConfigurationId methods to show up in intellisense. They appear in the object browser.
My import statement
Imports AecDB = Autodesk.Aec.DatabaseServices

and just to test it Im trying.. Dim aaa As ObjectId = AecDB.DisplayRepresentationManager.GetDisplayConfigurationId(ShtVP.ObjectId)

Am I even going in the right direction to change the display configuration on a viewport?

Jeff H

  • Needs a day job
  • Posts: 6150
Re: Has anyone used the DisplayRepresentationManager?
« Reply #1 on: January 19, 2011, 11:35:00 PM »
I have been meaning to learn the AEC API.

This does not work in modelspace


So far you
- create a new instance of the DisplayRepresentationManager object passing in the current database
- use the DisplayConfigurationIdForCurrentViewport property of the DisplayRepresentationManager  to get objectId of current display config
- create a new instance of the DictionaryDisplayConfiguration object passing in the current database to access different Display reps
- Use GetAt and pass in name of Display Config to grab Objectid
- Use SetDisplayConfigurationId passing in The viewportId and Id of display config to change to



Code: [Select]


Imports System
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.Aec.DatabaseServices
Imports ObjectId = Autodesk.AutoCAD.DatabaseServices.ObjectId

<Assembly: CommandClass(GetType(AutoCAD_VB_plug_in5.MyCommands))>

Namespace AutoCAD_VB_plug_in5

   
    Public Class MyCommands

       
        <CommandMethod("ChangeDisplayConfig")> _
        Public Sub ChangeDisplayConfig()
            Dim doc As Document = Application.DocumentManager.MdiActiveDocument
            Dim db As Database = doc.Database
            Dim ed As Editor = doc.Editor

            Using trx As Transaction = db.TransactionManager.StartTransaction()

                Dim disRepMngr As New DisplayRepresentationManager(db)
                Dim currentDisplayConfig As DisplayConfiguration = disRepMngr.DisplayConfigurationIdForCurrentViewport.GetObject(OpenMode.ForRead)
                ed.WriteMessage(vbCrLf & "The current displayConfig is " & currentDisplayConfig.Name)


                Dim dictDisplConfigs As New DictionaryDisplayConfiguration(db)



                If dictDisplConfigs.Has("Electrical - Lighting", trx) Then

                    Dim newDisplyConfigId As ObjectId = dictDisplConfigs.GetAt("Electrical - Lighting")


                    disRepMngr.SetDisplayConfigurationId(ed.ActiveViewportId, newDisplyConfigId)

                End If

                trx.Commit()

            End Using

« Last Edit: January 19, 2011, 11:46:01 PM by Jeff H »

commodore

  • Newt
  • Posts: 51
Re: Has anyone used the DisplayRepresentationManager?
« Reply #2 on: January 20, 2011, 08:40:12 AM »
Thanks Jeff,
That works great!
Coincidently I had just found the sample "C:\Program Files\AutoCAD MEP 2010\Sample\VB.NET\AecDisplaySampleMgd" this morning, but your example is right to my point.


Jeff H

  • Needs a day job
  • Posts: 6150
Re: Has anyone used the DisplayRepresentationManager?
« Reply #3 on: February 24, 2011, 04:59:16 AM »
Do not know if you figured it out or already knew but,
to work in model space or set model space's
you use the DisplayRepresentationManager.DefaultDisplayConfigurationId property

Code updated and C# code added


Code: [Select]
    <CommandMethod("ChangeDisplayConfigVB")> _
        Public Sub ChangeDisplayConfigVB()

            Dim doc As Document = Application.DocumentManager.MdiActiveDocument
            Dim db As Database = doc.Database
            Dim ed As Editor = doc.Editor

            Using trx As Transaction = db.TransactionManager.StartTransaction()

                Dim disRepMngr As New DisplayRepresentationManager(db)
                Dim currentDisplayConfig As DisplayConfiguration = disRepMngr.DisplayConfigurationIdForCurrentViewport.GetObject(OpenMode.ForRead)
                ed.WriteMessage(vbCrLf & "The current displayConfig is " & currentDisplayConfig.Name)

                Dim dictDisplConfigs As New DictionaryDisplayConfiguration(db)

                If dictDisplConfigs.Has("Electrical - Lighting", trx) Then

                    Dim newDisplyConfigId As ObjectId = dictDisplConfigs.GetAt("Electrical - Lighting")

                    Try
                        disRepMngr.SetDisplayConfigurationId(ed.ActiveViewportId, newDisplyConfigId)
                    Catch ex As System.Exception
                        disRepMngr.DefaultDisplayConfigurationId = newDisplyConfigId
                    End Try

                End If

                currentDisplayConfig = disRepMngr.DisplayConfigurationIdForCurrentViewport.GetObject(OpenMode.ForRead)
                ed.WriteMessage(vbCrLf & "The current displayConfig is " & currentDisplayConfig.Name)

                trx.Commit()

            End Using

        End Sub

Code: [Select]

        [CommandMethod("ChangeDisplayConfigCS")]
        public void ChangeDisplayConfigCS()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            using (Transaction trx = db.TransactionManager.StartTransaction())
            {

                DisplayRepresentationManager disRepMngr = new DisplayRepresentationManager(db);

                DisplayConfiguration currentDisplayConfig = disRepMngr.DisplayConfigurationIdForCurrentViewport.GetObject(OpenMode.ForRead) as DisplayConfiguration;
                ed.WriteMessage("\nThe current displayConfig is " + currentDisplayConfig.Name);


                DictionaryDisplayConfiguration dictDisplConfigs = new DictionaryDisplayConfiguration(db);


                if (dictDisplConfigs.Has("Electrical - Lighting", trx))
                {
                    ObjectId newDisplyConfigId = dictDisplConfigs.GetAt("Electrical - Lighting");

                    try
                    {
                        disRepMngr.SetDisplayConfigurationId(ed.ActiveViewportId, newDisplyConfigId);
                    }
                    catch (System.Exception)
                    {
                        disRepMngr.DefaultDisplayConfigurationId = newDisplyConfigId;
                    }
                }

                currentDisplayConfig = disRepMngr.DisplayConfigurationIdForCurrentViewport.GetObject(OpenMode.ForRead) as DisplayConfiguration;
                ed.WriteMessage("\nThe current displayConfig is " + currentDisplayConfig.Name);


                trx.Commit();

            }





        }