|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus  der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | 
|  |  | 
|  | Planbar einfach – Produktplanung ohne Pingpong mit 3DEXPERIENCE., ein Webinar am 18.11.2025 
 | 
| Autor | Thema:  API - Zeichnung gezielt mit erstem Blatt öffnen (2384 /  mal gelesen) | 
 | Andi Beck Ehrenmitglied V.I.P. h.c.
 Konstrukteur
 
 
  
 
      Beiträge: 2655Registriert: 02.10.2006
 Firma: SW 2024-5.0 + PDM Prof.Windows 10 Pro 64bit, i9-11900
 32 GbRAM, Quadro P2200
 Home:
 SW 2025-1.0
 Passungstabelle von Heinz
 Windows 11 Pro 64bit,
 i7-12700K, 32 GbRAM,
 GeForce GTX 1050Ti
 Samsung C34H892, 3440x1440 Pixel
 |    erstellt am: 02. Jul. 2019 22:34  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo, ich setze mich gerade mit dem OpenDoc7 Befehl auseinander, weil mir unter SW2019 der OpenDoc6 Befehl Probleme beschert. Mit dem OpenDoc6 Befehl wird eine Zeichnung mit dem Blatt geladen, wie zuletzt gespeichert.Über weitere Befehle kann ich nun zum 1sten Blatt wechseln, falls nicht sowieso damit geöffnet wurde.
 Mit folgendem Code kann ich nun gezielt mit "Blatt1" öffnen. Code:
 Dim swApp           	As SldWorks.SldWorks
 Dim myDwgDoc        	As SldWorks.ModelDoc2
 Dim DwgPath         	As String
 Dim swDocSpecification  As SldWorks.DocumentSpecification
 Dim longstatus          As Long
 Dim longwarnings        As Long
 Set swApp = Application.SldWorks
 DwgPath = "C:\1Arbeitsverzeichnis\00-05-01-009-01.SLDDRW" Set swDocSpecification = swApp.GetOpenDocSpec(DwgPath) swDocSpecification.DocumentType = swDocDRAWINGswDocSpecification.ReadOnly = True
 swDocSpecification.Silent = True
 swDocSpecification.ConfigurationName = ""
 swDocSpecification.DisplayState = ""
 swDocSpecification.IgnoreHiddenComponents = True
 swDocSpecification.SheetName = "Blatt1"
 Set myDwgDoc = swApp.OpenDoc7(swDocSpecification) longstatus = swDocSpecification.Errorlongwarnings = swDocSpecification.Warning
 
 
 Dies funktioniert allerdings nur, wenn auch das erste Blatt "Blatt1" heißt.Ist der Name "Sheet1", wird wie gespeichert geöffnet.
 Ich vermisse hier einen Befehl firstsheet etc.Hat jemand eine Idee, wie das gezielt zuverlässig gehen kann, ohne das ich einen 2ten Schritt mit Blattwechsel gehen muss?
 Grüße, Andi  ------------------Hast du kein Problem?
 Such dir eins. ( Und löse es )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | LeonardStark Mitglied
 
 
   
 
      Beiträge: 110Registriert: 14.08.2018
 |    erstellt am: 03. Jul. 2019 08:27  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   | 
                        | StMoll Mitglied
 CAD Administrator
 
  
 
      Beiträge: 43Registriert: 22.01.2019
 SolidWorks 2018 SP 5.0Windows 10 Enterprise
 HP Z440 Workstation
 NVIDIA Quadro K2200
 |    erstellt am: 03. Jul. 2019 09:51  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   
  Guten Morgen, gibt es eine feste Nomenklatur für die Bezeichnungen? Wenn es nur 2-3 mögliche Varianten gibt (Blatt1, Sheet1, usw.) dann könnte man es doch mit einer IF-Funktion lösen.
 Über GetSheetNames die Namen auslesen und abgleichen.
 Nur eine Idee. Meine API Kenntnisse sind leider noch im Entstehen begriffen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Carsten1210 Mitglied
 staatl. geprüfter Holztechniker
 
     
 
      Beiträge: 1362Registriert: 24.07.2002
 AutoCAD ACA 2024Solidworks 2022 Sp5
 Enterprise PDM 2022 Sp5
 Pascam Woodworks
 Visual Studio 2017 Pro
 Windows 10 64Bit
 Dell Precision 3660
 Intel Core i9-12900K
 32 GB Arbeitsspeicher
 2x Dell U2415
 |    erstellt am: 03. Jul. 2019 10:28  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   | 
                        | Andi Beck Ehrenmitglied V.I.P. h.c.
 Konstrukteur
 
 
  
 
      Beiträge: 2655Registriert: 02.10.2006
 Firma: SW 2024-5.0 + PDM Prof.Windows 10 Pro 64bit, i9-11900
 32 GbRAM, Quadro P2200
 Home:
 SW 2025-1.0
 Passungstabelle von Heinz
 Windows 11 Pro 64bit,
 i7-12700K, 32 GbRAM,
 GeForce GTX 1050Ti
 Samsung C34H892, 3440x1440 Pixel
 |    erstellt am: 03. Jul. 2019 11:56  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Carsten, das hatte ich befürchtet, dass ich nur über den DocumentManager an die Informationen komme. Da müsste ich mir erst mal einen Lizenz-Key besorgen, da ich da bisher noch drum rum gekommen bin. Das Beispiel ist für NET programmiert.Weißt du ob das auch mit VBA funktioniert?
 Grüße und vielen Dank, Andi ------------------Hast du kein Problem?
 Such dir eins. ( Und löse es )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Andi Beck Ehrenmitglied V.I.P. h.c.
 Konstrukteur
 
 
  
 
      Beiträge: 2655Registriert: 02.10.2006
 Firma: SW 2024-5.0 + PDM Prof.Windows 10 Pro 64bit, i9-11900
 32 GbRAM, Quadro P2200
 Home:
 SW 2025-1.0
 Passungstabelle von Heinz
 Windows 11 Pro 64bit,
 i7-12700K, 32 GbRAM,
 GeForce GTX 1050Ti
 Samsung C34H892, 3440x1440 Pixel
 |    erstellt am: 03. Jul. 2019 12:26  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo StMoll, schön das du dich auch mit Vorschlägen meldest, obwohl du nicht so viel Erfahrung hast. Das allgemeine Problem ist, dass du normalerweise erst Informationen auslesen kannst, wenn das Dokument bereits geladen ist.Dann ist aber mein Ansinnen schon gelaufen, wenn eine aufwendige Zeichnung für den Aufbau 2 Minuten Zeit braucht.
 Der Wechsel zum Blatt1 braucht dann auch noch mal solange, und dies möchte ich ja vermeiden.
 Der Vorschlag von Carsten zielt darauf, noch vor dem Laden des Dokumentes die benötigten Informationen zu holen.Dazu ist aber die Document-Manager-API nötig, wozu du eine Lizenz von SW benötigst, die aber umsonst ist.
 Ein Beispielcode zum wechseln auf das erste Blatt wäre dieser: Code:
 Dim swDraw                  As SldWorks.DrawingDoc
 Dim swSheet                 As SldWorks.Sheet
 Dim vSheetNames             As Variant
 Dim bRet                    As Boolean
         vSheetNames = swDraw.GetSheetNames              'Namen aller ZeichenblätterSet swSheet = swDraw.Sheet(vSheetNames(0))      'der Name des ersten Zeichenblattes
 bRet = swDraw.ActivateSheet(vSheetNames(0))     'öffnen des ersten Zeichenblattes
 
 
   Also, immer schön am Ball bleiben und neugierig bleiben. Mahlzeit, Andi ------------------Hast du kein Problem?
 Such dir eins. ( Und löse es )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | StMoll Mitglied
 CAD Administrator
 
  
 
      Beiträge: 43Registriert: 22.01.2019
 SolidWorks 2018 SP 5.0Windows 10 Enterprise
 HP Z440 Workstation
 NVIDIA Quadro K2200
 |    erstellt am: 03. Jul. 2019 13:06  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   | 
                        | Christian_W Ehrenmitglied V.I.P. h.c.
 Konstrukteur (Dipl-Ing)
 
       
 
      Beiträge: 3396Registriert: 04.04.2001
 CSWP 12/2015<P>SWX2021sp5 Win10/11(SWX2016, SWX2012)
 proAlpha6.2e00/calinkV9
 (Tactonworks)
 (Medusa7, NesCAD2010,
 solidEdge19)
 |    erstellt am: 03. Jul. 2019 13:50  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   
 Zitat:…
 Der Vorschlag von Carsten zielt darauf, noch vor dem Laden des Dokumentes die benötigten Informationen zu holen.
 Dazu ist aber die Document-Manager-API nötig, wozu du eine Lizenz von SW benötigst, die aber umsonst ist …
 
 
 @Andi falls du die Blattnamen irgendwo im PDM oder so abgelegt hast … (ist bei uns mit calink aber auch nicht gegeben) @StMollund diese Documentmanager Lizenz hat 2 unangenehme Eigenschaften:
 - man darf sie nicht einfach so weitergeben
 - man muss für eine neue Version auch einen neuen Key einbauen.
 Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Carsten1210 Mitglied
 staatl. geprüfter Holztechniker
 
     
 
      Beiträge: 1362Registriert: 24.07.2002
 AutoCAD ACA 2024Solidworks 2022 Sp5
 Enterprise PDM 2022 Sp5
 Pascam Woodworks
 Visual Studio 2017 Pro
 Windows 10 64Bit
 Dell Precision 3660
 Intel Core i9-12900K
 32 GB Arbeitsspeicher
 2x Dell U2415
 |    erstellt am: 03. Jul. 2019 14:14  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   
  Hi Andi, Das sollte auch mit VBA gehen. Da mal einfach den Kram mit den Bildern weglassen.Den Key bekommst du eigentlich auch problemlos (meist) innerhalb von einem Arbeitstag.
 Du musst nur Wissen was du da alles haben willst weil der je nach Umfang unterschiedlich lang ist.
 Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | HenryV Mitglied
 Konstrukteur, Engineering
 
    
 
      Beiträge: 824Registriert: 18.05.2005
 SolidWorks 2022 x64 SP5.0Dell Precision 5820
 Intel Xeon W-2125 4x4GHz
 NVIDIA Quadro P2000 5GB
 32GB RAM
 2x Dell U2412M, 24" TFT
 Windows 10 Enterprise x64 22H2
 Microsoft 365 E5
 Microsoft Visual Studio Enterprise 2022
 |    erstellt am: 03. Jul. 2019 17:42  <-- editieren / zitieren -->    Unities abgeben:           Nur für Andi Beck   
  Hallo Andi Anderer AnsatzDie Zeichnung in der Schnellansicht laden. (swDocSpecification.Selective = True)
 Die Blattnamen einlesen. (vSheetNames = swDraw.GetSheetNames)
 Zeichnung schliessen (swApp.QuitDoc swModel.GetTitle)
 Blattnamen zuweisen(swDocSpecification.SheetName = vSheetNames(0))
 Zeichnung erneut öffnen (swDocSpecification.Selective = False)
 Code:Option Explicit
 Dim swApp As SldWorks.SldWorks
 Dim swModel As SldWorks.ModelDoc2
 Dim swDraw As DrawingDoc
 Dim vSheetNames As Variant
 Dim swDocSpecification As SldWorks.DocumentSpecification
 Dim sName As String
 Dim longstatus As Long, longwarnings As Long
 Sub main()
 Dim sName As String
 Dim longstatus As Long, longwarnings As Long
     sName = "C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\advdrawings\foodprocessor.slddrw"
 Set swApp = Application.SldWorks
 
 Set swDocSpecification = swApp.GetOpenDocSpec(sName)
 swDocSpecification.DocumentType = swDocDRAWING
 swDocSpecification.Silent = True
 swDocSpecification.Selective = True
 
 Set swModel = swApp.OpenDoc7(swDocSpecification)
 longstatus = swDocSpecification.Error
 longwarnings = swDocSpecification.Warning
     Set swDraw = swModelvSheetNames = swDraw.GetSheetNames
 
 swApp.QuitDoc swModel.GetTitle
 
 swDocSpecification.Selective = False
 swDocSpecification.ReadOnly = True
 swDocSpecification.ConfigurationName = ""
 swDocSpecification.DisplayState = ""
 swDocSpecification.IgnoreHiddenComponents = True
 
 swDocSpecification.SheetName = vSheetNames(0)
 
 Set swModel = swApp.OpenDoc7(swDocSpecification)
 longstatus = swDocSpecification.Error
 longwarnings = swDocSpecification.Warning
 
 End Sub
 
 Gruss Andreas ------------------21 ist nur die halbe Antwort.
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Andi Beck Ehrenmitglied V.I.P. h.c.
 Konstrukteur
 
 
  
 
      Beiträge: 2655Registriert: 02.10.2006
 Firma: SW 2024-5.0 + PDM Prof.Windows 10 Pro 64bit, i9-11900
 32 GbRAM, Quadro P2200
 Home:
 SW 2025-1.0
 Passungstabelle von Heinz
 Windows 11 Pro 64bit,
 i7-12700K, 32 GbRAM,
 GeForce GTX 1050Ti
 Samsung C34H892, 3440x1440 Pixel
 |    erstellt am: 04. Jul. 2019 07:06  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Andreas, Not macht erfinderisch, toller Ansatz, und das alles nur, weil mal wieder der direkte Befehl fehlt. Muss ich mal einen Vergleich starten, wieviel Zeit da verlustig geht.Da 99.9 % unserer Zeichnungen mit Blatt1 bezeichnet sind, werde ich das abwägen, ob das lohnt.
 Grüße auch, Andi ------------------Hast du kein Problem?
 Such dir eins. ( Und löse es )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | Andi Beck Ehrenmitglied V.I.P. h.c.
 Konstrukteur
 
 
  
 
      Beiträge: 2655Registriert: 02.10.2006
 Firma: SW 2024-5.0 + PDM Prof.Windows 10 Pro 64bit, i9-11900
 32 GbRAM, Quadro P2200
 Home:
 SW 2025-1.0
 Passungstabelle von Heinz
 Windows 11 Pro 64bit,
 i7-12700K, 32 GbRAM,
 GeForce GTX 1050Ti
 Samsung C34H892, 3440x1440 Pixel
 |    erstellt am: 07. Jul. 2019 11:00  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:Original erstellt von Andi Beck:
 
 Muss ich mal einen Vergleich starten, wieviel Zeit da verlustig geht.
 
 Hallo,habe nun einen Vergleich gemacht und bin doch etwas überrascht.
 Die Version von Andreas ist fast immer um ca. 1 bis 2 Sekunden schneller. Einzig wenn die Zeichnung bereits geladen war, ist die direkte Definition des Blattes schneller.
 Warum das so ist, keine Ahnung, aber erfreulich ist es.
 (Die Zeiten habe ich Handgestoppt.)
 Schönen Sonntag auch, Andi ------------------Hast du kein Problem?
 Such dir eins. ( Und löse es )
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |