Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Zeichnung gezielt mit erstem Blatt öffnen

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
  
Im Fokus: CAD Automation & CPQE
Autor Thema:  API - Zeichnung gezielt mit erstem Blatt öffnen (1930 mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.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 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,
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 = swDocDRAWING
swDocSpecification.ReadOnly = True
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True
swDocSpecification.SheetName = "Blatt1"

Set myDwgDoc = swApp.OpenDoc7(swDocSpecification)

longstatus = swDocSpecification.Error
longwarnings = 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



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

Beiträge: 100
Registriert: 14.08.2018

erstellt am: 03. Jul. 2019 08:27    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 Andi Beck 10 Unities + Antwort hilfreich

[Diese Nachricht wurde von LeonardStark am 03. Jul. 2019 editiert.]

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

StMoll
Mitglied
CAD Administrator


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

Beiträge: 43
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 03. Jul. 2019 09:51    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 Andi Beck 10 Unities + Antwort hilfreich

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


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 03. Jul. 2019 10:28    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 Andi Beck 10 Unities + Antwort hilfreich

Hi Andi,

Schau dir mal das Beispiel an.
Über den DocumentManager kommst an die Blätter und deren Namen ran.

Gruß, Carsten

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.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 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 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



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.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 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 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ätter
        Set 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


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

Beiträge: 43
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 03. Jul. 2019 13:06    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 Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

das klingt erschreckend logisch aber da zeigt sich dann meine, noch, fehlende Erfahrung. 

Vielen Dank für den Beispielcode.

Grüße,
StMoll

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 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 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 Andi Beck 10 Unities + Antwort hilfreich

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)

@StMoll
und 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


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 03. Jul. 2019 14:14    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 Andi Beck 10 Unities + Antwort hilfreich

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


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell 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 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 Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi

Anderer Ansatz
Die 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 = swModel
    vSheetNames = 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



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.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 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 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



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.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 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

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

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