Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API GetDocumentDependencies2

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
  
PLM TechnologieForum Bamberg
Autor Thema:  API GetDocumentDependencies2 (1562 mal gelesen)
Christoph Weise
Mitglied
Technischer Produktdesigner / Konstruktion / CAD-Admin


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

Beiträge: 204
Registriert: 22.03.2015

Dell 3650
Intel I7 11700k
32 GB RAM
Nvidia RTX A4000 16GB
Win 10 22H2 64-bit
SolidWorks 2022SP5
QuickPress 6.3.3
PortaX 2.27
SAP ERP 6.0

erstellt am: 21. Dez. 2015 10:54    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 habe ein Programm geschrieben das Baugruppen kopieren kann (bitte keine Diskussion über die Sinnhaftigkeit)
Dazu werden alle Teile kopiert. Um die Informationen zum Kopieren zu bekommen verwende ich die GetDocumentDependencies2 Methode. Mein Problem ist das bei ein paar Baugruppen nicht ausgelesen werden können und die Variable "depends" leer bleibt und somit der Code abgebrochen wird.

Meine Frage ist was ist falsch an der Ausführung? bei den meisten geht's ja.

Hier ist noch der betroffene Codeausschnitt:

Code:
Sub Copy_parts()

    Dim swApp As SldWorks.SldWorks
    Dim source As String
    Dim target As String
    Dim sourcefile As String
    Dim traverse As Boolean
    Dim search As Boolean
    Dim addreadonlyinfo As Boolean
    Dim depends As Variant
    Dim sourcefiles() As String
    Dim targetfiles() As String
    Dim idx As Integer
    Dim sourcecount As Integer
    Dim copyopt As Long
    Dim errors As Long
    Dim doc As SldWorks.ModelDoc2
   
   

    'Set swApp = Application.SldWorks
    Set swApp = CreateObject("SldWorks.Application")
    Set doc = swApp.ActiveDoc
   

    source = swApp.GetCurrentWorkingDirectory
   
   
    sourcefile = Right(doc.GetPathName, (Len(doc.GetPathName) - InStrRev(doc.GetPathName, "\")))
    Debug.Print "sourcefile = "; sourcefile
   

    Ordnername = "C:\Temp\" & Left(sourcefile, Len(sourcefile) - 7)
    Debug.Print "Ordnername = " & Ordnername
   
   
    'Ordner erstellen fals noch nicht vorhanden.
    If Not Dir(Ordnername, vbDirectory) <> "" Then MkDir Ordnername
   
    target = Ordnername & "\"
   
    Debug.Print "target = " & target
   

   

    traverse = True
    search = True
    addreadonlyinfo = False
   

    depends = swApp.GetDocumentDependencies2(sourcefile, traverse, search, addreadonlyinfo)

If IsEmpty(depends) Then

    Debug.Print FehlerMerker
    If FehlerMerker = 1 Then
        MsgBox "Baugruppe konnten nicht ausgelesen werden."
        End
    End If
    Quickpress_Beenden
    MsgBox "Datei bitte schließen und neu laden (evtl. war Quickpress aktiv)"
    End
   
End If


Noch zur Info:

Das ganze ist in Excel geschrieben und wird über SolidWorks ausgeführt
Falls das Zusatzmodul Quickpress aktiv ist funktioniert die Funktion auch nicht, wird aber abgefangen und ist hier nicht der Fall.

Mit den Werten

Code:
    traverse = True
    search = True
    addreadonlyinfo = False

hab ich schon rumgespielt und bin zu keinem Ergebniss gekommen.


Meine Vermutung ist das die Variable swApp falsch befüllt ist (die Funktion swApp.GetCurrentWorkingDirectory funktioniert aber)

Falls noch andere Informationen benötigt werden einfach fragen.

Vielen Dank im voraus

Gruß Christoph

------------------
Wer einen Fehler findet darf ihn behalten,
wer zwei findet kann beide behalten,
ab fünf Fehler gibs Rabatt :-)

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

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: 22. Dez. 2015 11:40    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 Christoph Weise 10 Unities + Antwort hilfreich

Hallo Christoph,

reine Spekulation von meiner Seite: wenn ich das richtig lese, holst du dir das aktive Dokument aus dem angeklinkten SolidWorks und extrahierst davon den Dateinamen ohne Pfad. Das würde ja schon mal einen Fehler geben, wenn du ein "leeres" SolidWorks erwischt hättest.

Mit diesem Namen gehst du jetzt in die GetDocumentDependencies2, also ohne Pfad, aber mit searchflag = true. Laut den Bemerkungen wird dann das Arbeitsverzeichnis von SolidWorks auf das Verzeichnis des Dokuments gesetzt. Ich bin mir jetzt nicht sicher, was passiert, wenn entweder der Pfad gar nicht aufgelöst werden kann (weil du den abgetrennt hast) und das aktuelle Arbeitsverzeichnis gar nicht das ist, wo dieses Dokument gespeichert ist. Von daher würde ich versuchen sicherheitshalber mit SldWorks::SetCurrentWorkingDirectory das Arbeitsverzeichnis vorher auf den Pfad meines Dokumentes zu setzen.

Vielleicht hilft das ja weiter 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Christoph Weise
Mitglied
Technischer Produktdesigner / Konstruktion / CAD-Admin


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

Beiträge: 204
Registriert: 22.03.2015

Dell 3650
Intel I7 11700k
32 GB RAM
Nvidia RTX A4000 16GB
Win 10 22H2 64-bit
SolidWorks 2022SP5
QuickPress 6.3.3
PortaX 2.27
SAP ERP 6.0

erstellt am: 23. Dez. 2015 09: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

Danke Stefan
Baugruppe ist immer geladen aber dein zweiter Tipp war goldrichtig   
Das Arbeitsverzeichnis war nicht richtig gesetzt.
Nach dem setzen läuft der Code einwandfrei durch.

Frohe Weihnachten

Gruß Christoph

------------------
Wer einen Fehler findet darf ihn behalten,
wer zwei findet kann beide behalten,
ab fünf Fehler gibs Rabatt :-)

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