Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro SW-Daten in PDM einchecken und ausgecheckt lassen

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
  
Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg
Autor Thema:  Makro SW-Daten in PDM einchecken und ausgecheckt lassen (2016 mal gelesen)
Lubber
Mitglied



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

Beiträge: 39
Registriert: 21.01.2011

erstellt am: 12. Dez. 2019 07:04    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

Guten Morgen Forum!

ich hätte hier mal eine Frage/ein Problem bei dem Ihr mir vielleicht weiter helfen könnt.

Ich habe ein Makro mit dem ich Teile/Baugruppen/(Zeichnungen) bei Betätigung in die IsoAnsicht bringe, speicher und schließe.
Nun würde ich diese gerne um die Funktion "in PDM Enterprise einchecken und ausgecheckt lassen" erweitern.
Ich hatte es mal versucht diese Prozedur mal mit dem Macrorecorder aufzuzeichnen. Aber das brachte mir keinen Erfolg.
Habt Ihr hierfür eine Idee?
So sieht mein Macro bis jetzt aus was Ansicht/speichern und schließen angeht:

Code:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long
Dim Annotation As Object
Dim Gtol As Object
Dim DatumTag As Object
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object

Sub main()

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
Part.ShowNamedView2 "*Isometrisch", 7
Part.Save2 False
Part.ViewZoomtofit2
Part.Save2 False
Name = Part.GetPathName()
swApp.CloseDoc Name
End Sub


Gruß,
Lubber

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 12. Dez. 2019 08:09    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 Lubber 10 Unities + Antwort hilfreich

Code:
Dim eVault As EdmVault5
Dim eFile As IEdmFile5
Dim Dateipfad As String

'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "XXXXXXXXX", 0 '<- Tresorname einsetzen

    Dateipfad = "YYYYYYYYYY"
   
    'Einchecken
    Set eFile = eVault.GetFileFromPath(Dateipfad)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If


Eventuell musst du auch statt EdmUnlock_KeepLocked auch mit den Bits arbeiten, falls du mehrere Optionen gleichzeitig aktivieren willst:

http://help.solidworks.com/2020/english/api/epdmapi/epdm.interop.epdm~epdm.interop.epdm.edmunlockflag.html?verRedirect=1

Gruß, Jens

------------------
CSWE =)

[Diese Nachricht wurde von CAD-Maler am 12. Dez. 2019 editiert.]

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

Lubber
Mitglied



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

Beiträge: 39
Registriert: 21.01.2011

erstellt am: 12. Dez. 2019 12:04    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

Servus Jens,

Danke für die Antwort.
Aber beim definieren der Variablen
Dim eVault As EdmVault5
Dim eFile As IEdmFile5

bekomme ich schon die Fehlermeldung "Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert.

Warum?
Und die zweite Frage: Brauche ich den PDM Login hier in dem Code? Weil in dem Moment wo ich das Makro ausführen möchte bin ich doch eh im PDM angemeldet.

Das Hauptproblem ist das ich ne komplette VBA-Pfeife bin -.-  !

Gruß
Lubber

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 12. Dez. 2019 14: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 Nur für Lubber 10 Unities + Antwort hilfreich

Hast du unter Verweise die PDMWorks Enterprise Type Library aktiviert?

Zu 2.: probiers doch! 

Gruß, Jens

------------------
CSWE =)

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

Lubber
Mitglied



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

Beiträge: 39
Registriert: 21.01.2011

erstellt am: 13. Dez. 2019 08:10    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

Guten Morgen Jens,

Yepp, da hat der Hacken bei Verweise noch gefehlt.
Was müsste ich jetzt dann bei Dateipfad definieren wenn ich den aktuellen beibehalten will? Ich habe was von ModelDoc2.GetPathName gelesen, aber ich weiß nicht wie und wo ich den einbinden müsste. Oder gibt es da noch andere Möglichkeiten?
Sorry dafür, wahrscheinlich ist dieses Thema für mich als Anfänger noch ne ganze Nummer zu groß  !
Würde mich aber trotzdem nochmal über Deine Hilfe freuen.
Für's neue Jahr habe ich mal ein paar VBA Schulungen beantragt. Vielleicht habe ich ja dann mehr Glück und Erfolg  .
Gruß
Lubber

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 13. Dez. 2019 10:22    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 Lubber 10 Unities + Antwort hilfreich

Das hast du doch in deinem Code schon drin?

Code:
Name = Part.GetPathName()

Damit kannst du jetzt entweder

Code:
    Dateipfad = Name

oder auch gleich

Code:
    Set eFile = eVault.GetFileFromPath(Name)

schreiben und das Dateiname= weglassen. Da sparste halt eine Variable.;)

Ich hab di das mal kurz zusammengefasst:

Code:
Dim swApp  As SldWorks.SldWorks
Dim Part    As SldWorks.ModelDoc2
Dim eVault  As EdmVault5
Dim eFile  As IEdmFile5
Dim Name    As String

Sub main()

    Set swApp = Application.SldWorks    '<- Du hast ja schon ein SWX offen, da brauchst du nicht erst ein neues erstellen, sondern kannst dich an das bestehende andocken
    Set Part = swApp.ActiveDoc
   
    Name = Part.GetPathName()
   
    Part.ShowNamedView2 "*Isometrisch", 7
    Part.ViewZoomtofit2
    Part.Save2 False    '<- Das Speichern brauchst du nur einmal
   
    swApp.CloseDoc Name
   
    'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "XXXXXXXXX", 0 '<- Tresorname einsetzen

    'Einchecken
    Set eFile = eVault.GetFileFromPath(Name)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

End Sub


Gruß, Jens

------------------
CSWE =)

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

Lubber
Mitglied



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

Beiträge: 39
Registriert: 21.01.2011

erstellt am: 13. Dez. 2019 11:20    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

Jens,

Du bist ein Held!

Funktioniert hervorragend!!

Das einzige ist, aber da komm ich evtl. ja noch selber drauf:

Wenn ich die Codezeile mit CloseDocName raus nehme
kommt ein Laufzeitfehler dass das Dokument von einem anderen Programm geöffnet ist.

Ansonsten...Perfekt!

Danke Dir! Du hast einen blutigen VBA Beginner heute sehr glücklich gemacht  !

Schönes Wochenende!

Gruß
Lubber

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 13. Dez. 2019 11:46    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 Lubber 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Lubber:
Das einzige ist, aber da komm ich evtl. ja noch selber drauf:

Wenn ich die Codezeile mit CloseDocName raus nehme
kommt ein Laufzeitfehler dass das Dokument von einem anderen Programm geöffnet ist.


Das ist Standard im PDM. Man kann z.B. keine Dateien im Windows Explorer einchecken, solange sie in einem anderem Programm geöffnet sind, auch per API nicht.

Gruß, Jens

------------------
CSWE =)

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

Ingo Kremer
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 02.06.2015

Windows 10
Solid Works 2020

erstellt am: 26. Feb. 2024 16:36    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 Lubber 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!

Dieser Beitrag ist zwar schon älter, aber genau das was wir suchen.
Nun möchten wir noch die passende Zeichnung zum Model mit einchecken.

Was muss den da im Code geändert werden?

Gruß
Ingo

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

erstellt am: 28. Feb. 2024 11:08    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 Lubber 10 Unities + Antwort hilfreich

Hallo Ingo,

erst einmal ein herzliches Willkommen im WBF 

Ist die Zeichnung im Hintergrund geöffnet? Hat sie den gleichen Namen wie
die BG oder das ET?

------------------
==========
Gruß
Andreas
==========

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

Ingo Kremer
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 02.06.2015

Windows 10
Solid Works 2020

erstellt am: 28. Feb. 2024 11:15    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 Lubber 10 Unities + Antwort hilfreich

Hallo Andreas,

danke für die nette Begrüßung.
Ja die Zeichnung ist im Hintergrund geöffnet und hat den gleichen Namen wie das Teil oder die Baugruppe.

Gruß
Ingo

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

KSAH
Mitglied
Freiberufler


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

Beiträge: 113
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 28. Feb. 2024 11:41    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 Lubber 10 Unities + Antwort hilfreich

Mit PDM kenne ich mich nicht aus. Aber auch eine geschlossene Zeichnung kann man finden, wenn sie im gleichen Order vom Modell liegt und denselben Namen hat.

Über GetPathName einen String des Pfades holen. Sieht zB so aus:
C:\Ordner\Teil.sldprt
Mit Left Right oder Mid den hinteren Teil abschneiden. Über InStrRev den Punkt von hinten suchen.
SLDRW hinten an hängen und mit Opendoc die Zeichnung öffenen.


SWPart ist das aktuelle Modell
DIM strZeichnung as String
DIM swZeichnung as Modeldoc2

strZeichnung=Left(swPart.GetPathName, InStrRev(swPart.GetPathName, ".")) & "SLDDRW"
set swZeichnung=swApp.OpenDoc(stZeichnung, swDocDRAW)

Ist die Zeichnung offen, bekommt man trotzdem das Objekt zurückgeliefert und die Zeicnung geht in den Vordergrund.

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

riesi
Mitglied
CAD-Admin


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

Beiträge: 1073
Registriert: 06.05.2002

SWX Premium 2020-Sp5

erstellt am: 28. Feb. 2024 12: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 Lubber 10 Unities + Antwort hilfreich

Ein paar Hürden sind dabei zu meistern:


  •   Es muss beim Auslösen des Makros vom Model ausgehend, geprüft werden, ob abhängige Zeichnungen gerade geöffnet sind. Das wäre dann erstmal eine Schleife über alle geöffneten Zeichnungen und anschließend nochmal eine Schleife innerhalb der Zeichnungsableitung, ob eine Ansicht das gerade aktuelle Model referenziert.
  •   Es muss geprüft werden, ob die Zeichnung im PDM schon angelegt worden ist. Im Falle einer Neuanlage müsste das in der Programmierung entsprechend anders behandelt werden.
  • Wie im vorherigen Post, muss zum Einchecken die Zeichnungen geschlossen sein oder der FileLock aufgehoben werden. Das geht auch via Api, allerdings sind Zeichnungen anders zu behandeln, als Modelle. Ist in der API-Hilfe dokumentiert.

Zu dem letzten Punkt habe ich in diesem Thread ein Beispiel veröffentlicht:

API - geöffnete Zeichnung mit Schreibrechten auschecken

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

erstellt am: 28. Feb. 2024 12:07    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 Lubber 10 Unities + Antwort hilfreich

Hallo Ingo,

auf die Schnelle ohne großes "Fehlerabfangen":

Code:
Option Explicit

Dim swApp  As SldWorks.SldWorks
Dim Part    As SldWorks.ModelDoc2
Dim eVault  As EdmVault5
Dim eFile  As IEdmFile5
Dim Name    As String
Dim ZName  As String

Sub main()

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
 
    Name = Part.GetPathName()
    ZName = Left(Name, Len(Name) - 6) & "slddrw"
 
    Part.ShowNamedView2 "*Isometrisch", 7
    Part.ViewZoomtofit2
    Part.Save2 False
 
    swApp.CloseDoc Name
    swApp.CloseDoc ZName
 
    'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "Test", 0 '<- Tresorname einsetzen

    'Einchecken
    Set eFile = eVault.GetFileFromPath(Name)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If
   
    Set eFile = eVault.GetFileFromPath(ZName)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

End Sub


Voraussetzung ist, dass die BG oder das ET das aktive Modell ist.

------------------
==========
Gruß
Andreas
==========

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

riesi
Mitglied
CAD-Admin


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

Beiträge: 1073
Registriert: 06.05.2002

SWX Premium 2020-Sp5

erstellt am: 28. Feb. 2024 12:32    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 Lubber 10 Unities + Antwort hilfreich

Vorm Einchecken würde ich die Zeichnung speichern. So macht es auch das PDM-Addin.

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

Ingo Kremer
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 02.06.2015

Windows 10
Solid Works 2020

erstellt am: 28. Feb. 2024 13:16    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 Lubber 10 Unities + Antwort hilfreich

Hallo Andreas,

leider werden das Bauteil und die Zeichnung nur geschlossen aber nicht eingecheckt.
> ET ist das aktive Modell
> Zeichnung ist im Hintergrund geöffnet
> beide Dateien sin ausgecheckt

so sieht das jetzt bei mir aus:

Dim swApp  As SldWorks.SldWorks
Dim Part    As SldWorks.ModelDoc2
Dim eVault  As EdmVault5
Dim eFile  As IEdmFile5
Dim Name    As String
Dim ZName  As String

Sub main()

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc

    Name = Part.GetPathName()
    ZName = Left(Name, Len(Name) - 6) & "slddrw"

    swApp.CloseDoc Name
    swApp.CloseDoc ZName

    'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "unser-PDM", 0


    'Einchecken Bauteil
    Set eFile = eVault.GetFileFromPath(Name)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If
   
    'Einchecken Zeichnung
    Set eFile = eVault.GetFileFromPath(ZName)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

   
End Sub

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

erstellt am: 28. Feb. 2024 13:49    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 Lubber 10 Unities + Antwort hilfreich


2024-02-28PDM.jpg

 
Hallo Ingo,

die Dateien werden eingecheckt, bleiben aber ausgecheckt. So war
die Vorgabe... Du kannst es an der Historie erkennen, dass dort ein
Eintrag "Einchecken erfolgreich" existiert. Außerdem erhältst du eine
neue Version deiner Dateien.

EDIT: Rechtschreibfehler korrigiert... 

[Diese Nachricht wurde von ad_man am 28. Feb. 2024 editiert.]

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 28. Feb. 2024 14:31    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 Lubber 10 Unities + Antwort hilfreich

Das habe ich übersehen, Asche auf mein Haupt 

Zitat:
Original erstellt von riesi:
Vorm Einchecken würde ich die Zeichnung speichern. So macht es auch das PDM-Addin.

Dann hier die Version mit dem Speichern von Modell und Zeichnung:

Code:
Option Explicit

Dim swApp  As SldWorks.SldWorks
Dim Part    As SldWorks.ModelDoc2
Dim Drawing As SldWorks.ModelDoc2
Dim eVault  As EdmVault5
Dim eFile  As IEdmFile5
Dim Name    As String
Dim ZName  As String
Dim lErrors  As Long

Sub main()

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc

    Name = Part.GetPathName()
    ZName = Left(Name, Len(Name) - 6) & "slddrw"

    Part.ShowNamedView2 "*Isometrisch", 7
    Part.ViewZoomtofit2
    Part.Save2 False

    swApp.CloseDoc Name
   
    Set Drawing = swApp.ActivateDoc3(ZName, False, swRebuildOnActivation_e.swRebuildActiveDoc, lErrors)
    Drawing.Save2 False
   
    swApp.CloseDoc ZName

    'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "Test", 0 '<- Tresorname einsetzen

    'Einchecken
    Set eFile = eVault.GetFileFromPath(Name)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If
 
    Set eFile = eVault.GetFileFromPath(ZName)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

End Sub



------------------
==========
Gruß
Andreas
==========

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

Ingo Kremer
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 02.06.2015

Windows 10
Solid Works 2020

erstellt am: 28. Feb. 2024 15:11    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 Lubber 10 Unities + Antwort hilfreich


Ihr seit die besten. Top. Herzlichen dank.
Hat alles geklappt.
die Dateien werden eingecheckt, bleiben aber ausgecheckt
Habe ich geändert von EdmUnlock_KeepLocked auf Edmlock_KeepLocked
(Danke an Andreas)

Abschließend noch eine Frage:
Wenn die Zeichnung das Aktive Dokument ist und nicht das Teil/Baugruppe
Was muss geändert werden und wie?

Vermutlich diese Zeile, oder?
Set Part = swApp.ActiveDoc

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

erstellt am: 28. Feb. 2024 15: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 Lubber 10 Unities + Antwort hilfreich

Das ist nicht nur mit einer Zeile zu erledigen. Z.B. musst du den
Modellnamen aus dem Zeichnungsnamen zusammensetzen. Dazu musst du
erst einmal ermitteln, ob es ein ET oder eine BG ist. Dann muss wieder
die Left-Funktion ran und die letzten 6 Zeichen abtrennen. Anschließend
muss SLDPRT oder SLDASM angefügt werden. Vielleicht finde ich nachher ein
wenig Zeit und bastel da mal etwas zusammen 

------------------
==========
Gruß
Andreas
==========

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1366
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 28. Feb. 2024 19: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 Lubber 10 Unities + Antwort hilfreich

So, hier mal das Ergebnis:

Code:
Option Explicit

Dim swApp    As SldWorks.SldWorks
Dim swModel  As SldWorks.ModelDoc2
Dim swPart    As SldWorks.ModelDoc2
Dim swDraw    As SldWorks.ModelDoc2
Dim swDrawing As SldWorks.DrawingDoc
Dim swView    As SldWorks.View
Dim eVault    As EdmVault5
Dim eFile    As IEdmFile5
Dim MName    As String
Dim ZName    As String
Dim lErrors  As Long
Dim intTyp    As Integer

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    'Modelltyp ermitteln
    intTyp = swModel.GetType()

    If intTyp = swDocumentTypes_e.swDocDRAWING Then
        Set swDrawing = swModel
       
        ' ersten View der Zeichnung holen, FirstView ist immer
        ' das Blatt, danach die erste Ansicht
        Set swView = swDrawing.GetFirstView
        Set swView = swView.GetNextView
       
        ' Name von darin referenziertem Modell
        MName = swView.GetReferencedModelName

        ' Zeichnung speichern und schließen
        ZName = swModel.GetPathName()
        swModel.Save2 False
        swApp.CloseDoc ZName
 
        ' Modell aus Zeichnung aktivieren, speichern und schließen
        Set swPart = swApp.ActivateDoc3(MName, False, swRebuildOnActivation_e.swRebuildActiveDoc, lErrors)
        swPart.ShowNamedView2 "*Isometrisch", 7
        swPart.ViewZoomtofit2
        swPart.Save2 False
        swApp.CloseDoc MName
    Else
        MName = swModel.GetPathName()
        ZName = Left(MName, Len(MName) - 6) & "slddrw"

        ' Modell ausrichten, speichern und schließen
        swModel.ShowNamedView2 "*Isometrisch", 7
        swModel.ViewZoomtofit2
        swModel.Save2 False

        swApp.CloseDoc MName
 
        Set swDraw = swApp.ActivateDoc3(ZName, False, swRebuildOnActivation_e.swRebuildActiveDoc, lErrors)
        swDraw.Save2 False
        swApp.CloseDoc ZName
    End If

    'Login PDM
    Set eVault = New EdmVault5
    eVault.LoginAuto "Test", 0 '<- Tresorname einsetzen

    'Einchecken
    Set eFile = eVault.GetFileFromPath(MName)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

    Set eFile = eVault.GetFileFromPath(ZName)

    If eFile.IsLocked Then
        eFile.UnlockFile 2, "Einchecken erfolgreich", EdmUnlock_KeepLocked
    End If

End Sub


Ist aber sicherlich noch ausbaufähig, aber funktioniert erst einmal 

------------------
==========
Gruß
Andreas
==========

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