| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | SOLIDWORKS Visualize Standard - Online-Live, ein Seminar am 27.07.2026
|
|
Autor
|
Thema: API: Zeichenansichten (1502 mal gelesen)
|
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001
|
erstellt am: 09. Jul. 2001 10:24 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Zusammen, Ich hab eine Frage zu meinem ersten "richtigen" API Programm Wie kann ich per API in einer Drawing die Anzahl der Ansichten feststellen, und dann auch noch eine bestimmte auswählen? Also es sind z.B 5 Ansichten auf einem Blatt und will die 3. auswählen! Über einen Hinweis oder ein paar Zeilen Code würde ich mich freuen, da ich im Moment ziemlich auf dem Schlauch sitze! Vielen Dank im Voraus  Gruß gismo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 09. Jul. 2001 12:11 <-- editieren / zitieren --> Unities abgeben:          Nur für gismo
Hi gismo, um die Anzahl rauszukriegen mußt du einen Loop über alle Views machen. Dabei mußt du bedenken, dass das Blatt selbst immer (?) der erste View ist. um später eine bestimmte Ansicht zu aktivieren läufst du dann wieder die Schleife ab, bist du den View mnit dem passenden Namen hast. Als Basis kannst du eine einfache Schleife nehmen:
Code:
Dim swApp As Object Dim DrawingDoc as Object Dim View as Object Dim ViewName as String Dim ViewCount as Long Dim meldung as StringSub main() ' erstmal SolidWorks ansprechen Set swApp = CreateObject ("SldWorks.Application") ' an aktives Dokument anklinken, ggf. prüfen ob es auch eine ' Zeichnung ist, sonst abbrechen Set DrawingDoc = swApp.ActiveDoc ' der erste View ist immer das Blatt selbst Set View = DrawingDoc.GetFirstView ' zum durchblättern den Namen des Views mit dem gemerkten ' vom letzten View vergleichen, ansonsten den nächsten aufrufen While View Is Not Nothing ' Namen des aktuellen Views merken ViewName = View.Name meldung = meldung & chr$(13) & chr$(10) & ViewName ViewCount = ViewCount + 1 ' nächster View aufrufen Set View = View.GetNextView Wend Call Msgbox(meldung & chr$(13) & chr$(10) & "Anzahl: " & ViewCount) End Sub
Ich hoffe du kommst damit einen Schritt weiter, ciao Stefan ------------------ -- Inoffizielle Solidworks Hilfeseite http://solidworks.cad.de EMail: Stefan.Berlitz@solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001
|
erstellt am: 09. Jul. 2001 12:56 <-- editieren / zitieren --> Unities abgeben:         
Danke Stefan, es ist schon klasse, wie Du sowas aus dem Ärmel schüttelst. Ich hab mir den ganzen Vormittag den Kopf zerbrochen, dabei ist das doch so einfach  !! Grüsse aus dem sonnigen Schwarzwald und tschüss bis zum nächsten Problem gismo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001 HP Z Book17 G5; 32GB Ram; Quadro P4200 WIN10 Pro; Alle SWX ;)
|
erstellt am: 09. Jul. 2001 17:59 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich bins nochmal. Stefan, Dein Beispiel funktioniert tadellos. Allerdings nur in einem Makro. Ich hab den Code in in ein VB6 Projekt eingefügt... und es tut sich nichts. Das Programm findet keine Ansichten  Vielleicht hab ich auch nur einen Fehler in meinem Code: Dim ViewName As String Dim View As Object Dim ViewCount As Long Dim Meldung As String Dim SwApp As Object Dim ModelDoc As Object Dim DrawingDoc As Object
'Deklarationen aus der swconst.bas Public Enum swDocumentTypes_e swdocPart = 1 swDocASSEMBLY = 2 swdocDrawing = 3 End Enum
Private Sub Command1_Click() 'An das aktive Solidworks-Modell anklinken. Wenn noch kein SWX 'lief, wird eins geladen Set SwApp = CreateObject("SldWorks.Application") 'Session sicherheitshaber sichtbar machen SwApp.Visible = True Set DrawingDoc = SwApp.activedoc 'wenn nichts geladen ist direkt wieder raus If DrawingDoc Is Nothing Then Call MsgBox("Keine Datei geöffnet!", vbOKOnly) Exit Sub End If 'jetzt überprüfen, ob das aktive Dokument eine Drawing ist If DrawingDoc.gettype() <> swdocDrawing Then 'Keine Drawing, keine Arbeit Call MsgBox("Aktives Dokument ist keine Drawing", vbOKOnly) Exit Sub End If 'der erste View ist das Blatt selbst Set View = DrawingDoc.GetFirstView 'jetzt Ansichten zählen While View Is Nothing 'Namen des aktuellen views merken ViewName = View.Name Meldung = Meldung & Chr$(13) & Chr$(10) & ViewName ViewCount = ViewCount + 1 'nächsten view aufrufen Set View = View.GetNextView Wend Call MsgBox(Meldung & Chr$(13) & Chr$(10) & "Anzahl: " & ViewCount) End Sub Danke fürs Reinschauen 
Gruß gismo
[Diese Nachricht wurde von gismo am 09. Juli 2001 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 09. Jul. 2001 20:02 <-- editieren / zitieren --> Unities abgeben:          Nur für gismo
|
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001
|
erstellt am: 09. Jul. 2001 21:13 <-- editieren / zitieren --> Unities abgeben:         
|
Armin B Mitglied Software Engineer ERP/PLM/CAD
 
 Beiträge: 209 Registriert: 04.09.2000 Sw 2015 SP3
|
erstellt am: 10. Jul. 2001 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für gismo
|