Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API If Ansicht Zeichnung ausgeblendet Then

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
On-Demand-Webinare zu SOLIDWORKS PDM (SOLIDWOKS PDM)
Autor Thema:  API If Ansicht Zeichnung ausgeblendet Then (454 mal gelesen)
Thor16
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Thor16 an!   Senden Sie eine Private Message an Thor16  Schreiben Sie einen Gästebucheintrag für Thor16

Beiträge: 82
Registriert: 27.08.2019

SolidWorks 2022
Windows 10 x64

erstellt am: 05. Mai. 2021 10:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich versuche gerade ein Makro von Stefan Berlitz etwas abzuwandeln. Mit dem Makro wird bei allen Ansichten die Anzeigeart von Entwurfsqualität auf hohe Qualität umgeschaltet.
Ich möchte es genau anders herum, d. h. von hoher Qualität auf Entwurfsqualität umschalten. Das soll aber nur bei Ansichten erfolgen, welche in der Zeichnung ausgeblendet sind. Da liegt mein Problem. Wie kann ich prüfen, ob die aktuelle Ansicht ausgeblendet ist und wie kann ich das in eine If Then Anweisung einbinden?

Hat von euch einer eine Idee wie das funktioniert?

Viele Grüße Torsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 05. Mai. 2021 14:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Thor16 10 Unities + Antwort hilfreich

Hallo,

ob eine Ansicht sichtbar oder eben nicht ist kannst du über die Methode "GetVisible Method (IView)" prüfen.

PS: Das Makro oder ein Link zum Original wäre sehr Hilfreich, wir kennen ja jetzt nicht Stefans Macros alle auswendig und wissen daher nicht was schon gegeben ist.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 05. Mai. 2021 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thor16
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Thor16 an!   Senden Sie eine Private Message an Thor16  Schreiben Sie einen Gästebucheintrag für Thor16

Beiträge: 82
Registriert: 27.08.2019

SolidWorks 2022
Windows 10 x64

erstellt am: 05. Mai. 2021 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Bernd,

vielen Dank für deine Antwort! Das war genau das, was ich gesucht habe.

Nachfolgend der Code von dem geänderten Makro.

Code:
' **********************************************************************
' * Macro iterates through all views of all sheets of active drawing
' * and set the display mode to "high quality". This is espacially
' * useful for exporting, since there is no option in the "Save as"
' * dialog to autoconvert to high-quality prior to saving.
' * It is also useful for SW2003 FastHLR views (which is the same as
' * SW2004 draft mode views)
' *
' * Makro durchläuft alle Ansichten auf allen Blättern der aktiven
' * Zeichnung und stellt die Anzeigeart derausgeblendeten Ansichten auf
' * "Entwurfsqualität".
' *
' * 12.09.2003 Stefan Berlitz
' * http://solidworks.cad.de
' * http://swtools.cad.de
' *
' * 05.05.2021 TKL
' *
' **********************************************************************

Dim swApp As Object

Dim DrawingDoc As Object

Dim ActiveSheet As Object
Dim ActiveSheetName As String
Dim Names As Variant
Dim SheetCount As Long

Dim View As Object
Dim ViewName As String
Dim ViewCount As Long

Dim displayMode As Integer
Dim displayEdgesInShadedMode As Boolean
Dim displayUseParentDisplayMode As Boolean

Dim i As Long              ' loop counter
Dim msgtext(2) As String    ' some texts for multi-language support

Const swDocNONE = 0        ' Used to be TYPE_NONE
Const swDocPart = 1        ' Used to be TYPE_PART
Const swDocASSEMBLY = 2    ' Used to be TYPE_ASSEMBLY
Const swDocDRAWING = 3      ' Used to be TYPE_DRAWING
Const swDocSDM = 4          ' Solid data manager.

Sub main()
    ' get the SolidWorks Object
    ' an SolidWorks anklinken
    Set swApp = CreateObject("SldWorks.Application")
    ' choose active language
    ' und die Spracheinstellung überprüfen
    CheckLanguage
    '
    ' get active document, should be a drawing
    ' das aktive Dokument holen, sollte eine Drawing sein
    Set DrawingDoc = swApp.ActiveDoc
    '
    ' if no active document, exit; it is userfriendly to
    ' pop up an error message ;-)
    ' kein Dokumewnt -> User benachrichtigen
    If DrawingDoc Is Nothing Then
        MsgBox msgtext(0)
        Exit Sub
    End If
    '
    ' check if a drawing is active
    ' dito wenn es keine Zeichnung ist
    If (DrawingDoc.GetType <> swDocDRAWING) Then
        MsgBox msgtext(1)
        Exit Sub
    End If
    '
    ' Now iterate through sheets. We should remember which sheet was
    ' active so we can avtivate it after the process
    ' Jetzt durch alle Blätter laufen. Wir merken uns das gerade aktive
    ' Blatt um anschließend dahin zurück zu kehren
    Set ActiveSheet = DrawingDoc.GetCurrentSheet
    ActiveSheetName = ActiveSheet.GetName
    '
    ' get the sheet count and loop over all sheets
    ' dann die Anzahl der Blätter holen und alle nacheinander anspringen
    SheetCount = DrawingDoc.GetSheetCount
    Names = DrawingDoc.GetSheetNames

    For i = 0 To SheetCount - 1

        ' activate sheet
        ' nächstes Blatt aktivieren
        DrawingDoc.ActivateSheet Names(i)

        ' now iterate over the drawing views; the first view is
        ' always the sheet itself and there is never a model in
        ' it, but it's easier to check every view the same way
        ' alle Ansichten nacheiander durchlaufen; die erste View ist immer
        ' das Blatt selbst und enthält kein Modell, aber der Einfachheit
        ' halber machen wir für alle Ansichten das Gleiche
        Set View = DrawingDoc.GetFirstView

        ' as long as there is a valid view
        ' solange es noch eine Ansicht gibt
        While Not View Is Nothing
            ' check whether view is displayed facetted (= draft quality)
            ' überprüfen, ob der View überhaupt facettiert (= Entwurfsmodus) ist
            '
            'If View.GetFacettedHlrDisplay = False Then
            If View.GetVisible = False Then
                ' get the current display mode (wireframe, HLG or HLR)
                ' dann den aktuelle Anzeigeart holen
                displayMode = View.GetDisplayMode
                ' and whether the edges should be displayed if view is shaded
                ' und überprüfen, ob die Kanten bei schattierter Ansicht dargestellt werden
                displayEdgesInShadedMode = View.GetDisplayEdgesInShadedMode
                '
                ' set the view to non-facetted
                ' die Ansicht auf Entwurfsqualität setzen
                '
                displayUseParentDisplayMode = View.GetUseParentDisplayMode
                View.SetDisplayMode3 False, displayMode, True, True
            Else
                View.SetDisplayMode3 False, displayMode, False, displayEdgesInShadedMode
            End If
            ' ... and go for the next view
            ' ... und die nächste Ansicht
            Set View = View.GetNextView
        Wend
    Next i

    ' reactivate sheet which was active
    ' dann das vorher aktuelle Blatt reaktivieren
    DrawingDoc.ActivateSheet ActiveSheetName

MsgBox msgtext(2)

End Sub

Private Sub CheckLanguage()

    ' check which language to apply. To make another language
    ' copy one of Subs called XyzString and make your changes
    '
    ' Hier ausgucken welche Sprache benutzt wird. Um weitere
    ' Sprachen zu unterstützen unten einer der Subs kopieren
    ' Anpassungen machen und aufrufen

    ' Set swApp = CreateObject("SldWorks.Application") ' set by Sub main()
    Select Case swApp.GetCurrentLanguage
    Case "german"
        msgtext(0) = "Kein Dokument offen, was sollte ich denn wohl tun?"
        msgtext(1) = "Nur sinnvoll bei Zeichnungen"
        msgtext(2) = "Bearbeitung abgeschlossen!"
'    Case "english"
        ' english is default, so change there
'    Case "spanish"
'    Case "french"
'    Case "italian"
'    Case "japanese"
    Case Else
        ' english is default
        msgtext(0) = "Nothing opened, so what should I look at?"
        msgtext(1) = "Only useful with drawing"
        msgtext(2) = "Editing finished!"
    End Select

End Sub


Viele Grüße Torsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz