Forum:AutoCAD ObjectARX und .NET
Thema:Name des VISUELLESTIL des VPORT = 5
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
Dirk.B

Beiträge: 532 / 0

AutoCAD 2019/2020
CAD+T 2020
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

Hallo Zusammen!

Kann mir jemand auf die Sprünge helfen, wie ich unter .net den aktuellen VISUELLESTIL ermitteln und als String Variable speichern kann?

Code:

'//;; so ähnlich
Dim XXXX As String = ViewPort.Visual.StyleName

Setzen ist nicht das Problem:

Code:

  Private Sub set_old_visstyle(ByVal oldvis As String)

        Dim VSKa As String = Nothing

        Dim app As AcadApplication = Application.AcadApplication

        Application.SetSystemVariable("CVPORT", 5)

        Select Case oldvis
            Case "2dWireframe"
                VSKa = "2DD"
            Case "3dWireframe"
                VSKa = "DR"
            Case "3D Hidden"
                VSKa = "V"
            Case "Realistic"
                VSKa = "R"
            Case "Conceptual"
                VSKa = "K"
            Case "Shaded"
                VSKa = "S"
            Case "Shaded with edges"
                VSKa = "C"
            Case "Shades of Gray"
                VSKa = "G"
            Case "Sketchy"
                VSKa = "I"
            Case "X-Ray"
                VSKa = "Ö"
        End Select


        With app.ActiveDocument
            .SendCommand("vsa" & vbCr & VSKa & vbCr)
        End With
    End Sub


Ich möchte den aktuellen Namen (oldvis) speichern, an eine Variable übergeben,
dann zwischendurch den Stil ändern und anschließend mit dem vorher gespeichertem Namen wieder setzen.

------------------
Gruß

Dirk

Dirk.B

Beiträge: 532 / 0

AutoCAD 2019/2020
CAD+T 2020
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

Guten Morgen Zusammen!

Wie ich die vorhandenen Visual Styles auslese habe ich.

Code:

        <CommandMethod("VisualStyleIterator")>
        Public Shared Sub VisualStyleIterator_Method()
            Dim database As Database = HostApplicationServices.WorkingDatabase

            Using transaction As Transaction = database.TransactionManager.StartTransaction()
                Dim dbDictionary As DBDictionary = CType(transaction.GetObject(database.VisualStyleDictionaryId, OpenMode.ForRead), DBDictionary)

                For Each dictEntry As DBDictionaryEntry In dbDictionary
                    Dim entry As DBVisualStyle = CType(transaction.GetObject(dictEntry.Value, OpenMode.ForRead), DBVisualStyle)
                    Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(String.Format(vbLf & "Visual style name: {0}", entry.Name))

                Next

                transaction.Commit()
            End Using
        End Sub


Aber wie komme ich nun an den activen und kann den an eine Variable übergeben?

------------------
Gruß

Dirk

KlaK

Beiträge: 2188 / 81

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2014
Plateia, Canalis
Visual Basic

Hallo Dirk,

Interessante Geschichte, leider muß ich dazu schreiben dass ich bisher gar nichts mit den Visuellen Stilen programmiert hane aber das Thema hat mich doch etwas interessiert.
Bei der Internetsuche kam ich auf diesen Beitrag, der Dir vielleicht weiterhelfen könnte.

Dort wird für ein Ansichtsfenster ein neuer Visueller Stil ohne Sendcommand festgelegt ( obj.VisualStyleID ). Theoretisch sollte man also dort auch die Nummer des Aktiven herauslesen können. Die zugehörigen Namen hast Du ja schon aus dem Dictionary.

Vielleicht hilft's Dir ja weiter ...

Grüße
Klaus 

Dirk.B

Beiträge: 532 / 0

AutoCAD 2019/2020
CAD+T 2020
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

Hallo Klaus!

Sorry, dass ich mich erst jetzt bei dir melde.
Danke für deinen Beitrag.

Ich habe es für mich nun so gelöst und das funktioniert recht gut.

Speichern des aktuellen Wert / VISUELLESTIL in einer Variablen in einem Module (Module1):

Code:

Public Shared Sub get_old_visid()
    Dim MyApp As Autodesk.AutoCAD.Interop.AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
    Module1.OldVisID = System.Convert.ToInt32(MyApp.ActiveDocument.ActivePViewport.VisualStyle)
End Sub

Und anschließend setze ich den alten Wert wieder:

Code:

Public Shared Sub set_old_visid(ByVal VisID As Integer)
Dim NEWVSK As String = Nothing
Dim MyApp As Autodesk.AutoCAD.Interop.AcadApplication = _
Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
Select Case VisID
Case 1                  '//;; = "2D Drahtkörper"
NEWVSK = "2DD"
Case 11                '//;; = "Drahtkörper"
NEWVSK = "DR"
Case 5                  '//;; = "Verdeckt"
NEWVSK = "V"
Case 6                  '//;; = "Realistisch"
NEWVSK = "R"
Case 4                  '//;; = "Konzeptuell"
NEWVSK = "K"
Case 7                  '//;; = "Schattiert"
NEWVSK = "S"
Case 8                  '//;; = "Schattierung mit Kante"
NEWVSK = "C"
Case 9                  '//;; = "Grautöne"
NEWVSK = "G"
Case 10                '//;; = "Skizzenhaft"
NEWVSK = "I"
Case 12                '//;; = "Röntgen"
NEWVSK = "Ö"
End Select
MyApp.ActiveDocument.SendCommand("vsa" & vbCr & NEWVSK & vbCr)
End Sub

------------------
Gruß

Dirk