| 
|  |  |  |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |  |  |  |  |  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung 
 |  
| Autor | Thema:  Pfad erstellen (1493 /  mal gelesen) |  | OibelTroibel Mitglied
 Konstrukteur
 
    
 
      Beiträge: 602Registriert: 18.04.2014
 ACAD/Inventor 2018-21 |    erstellt am: 16. Apr. 2020 14:59  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo zusammen Ich habe ein Code, welcher von einer Baugruppe eine alle enthaltenen Zeichnungsableitungen checkt und diese als PDF in eine parametrisierte Ordnerstruktur abspeichert. Leider werden die Ordner nur erstellt, wenn nicht zu viele Zwischenordner erstellt werden müssen. Das heisst wenn vom Zielpfad C:\1\2\3\4\5\6\7\ nur C:\1\2\3\4\5 vorhanden ist werden die Ordner 6\7\ nicht erstellt und das PDF nicht exportiert, ist aber C:\1\2\3\4\5\6\ vorhanden, wird 7\ erstellt und das PDF exportiert. Komischerweise exportiere ich mit einem sehr ähnlichen Code alle Bauteile einer Baugruppe in die selbe Ordnerstruktur und der Zielpfad wird erstellt unabhängig wie viele Zwischenordner erstellt werden müssen. Ich habe folgende Snippets getestet: Code:If Dir(Zielpfad, vbDirectory) = "" Then
 MkDir Zielpfad
 End If
 
 Code:If Not objFso.FolderExists(Zielpfad) Then objFso.CreateFolder Zielpfad
 
 Den ersten Code verwende ich beim Step-Export und funktioniert wunderbar. Beim PDF Export funktioniert es nur, wenn ich zuerst die Step-Daten exportiere und danach die PDFs, da dann die Ordner bereits erstellt sind. Hat jemand eine Ahnung warum das so sein könnte?Den ganzen Code kann ich leider nicht veröffentlichen.
 Beste GrüsseRaphael
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | rkauskh Moderator
 Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
 
        
 
  
 
      Beiträge: 2933Registriert: 15.11.2006
 Windows 10 x64, AIP 2020-2025 |    erstellt am: 17. Apr. 2020 05:00  <-- editieren / zitieren -->    Unities abgeben:           Nur für OibelTroibel   
  Moin Der mkdir-Befehl kann nicht mehrere Ordnerebenen gleichzeitig anlegen. Mit dem Schnipsel Code spekuliere ich nicht über mögliche Ursachen, warum es mal geht und mal nicht.Du kannst in einer kurzen Schleife stückweise deinen Zielpfad prüfen und ggf. erstellen:
 Code:
 Privat Sub MultiPathCreate()
 Dim ZielPfad As String
 Dim TeilPfad As String
 Dim Pfadteile
 Dim i
 ZielPfad = "c:\ebene1\ebene2\ebene3" Pfadteile = Split(ZielPfad, "\")TeilPfad = Pfadteile(0)
 For i = 1 To UBound(Pfadteile)
 TeilPfad = TeilPfad & "\" & Pfadteile(i)
 If Dir(TeilPfad, vbDirectory) = "" Then MkDir TeilPfad
 Next
 End Sub
 
 Oder du nutzt externe dll's, die die gleiche Funktionalität beinhalten.
 Code:
 Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
 Sub CreateMultiplePath()Dim strPath As String
 strPath = "c:\ebene1\ebene2\ebene3\" If MakeSureDirectoryPathExists(strPath) <> 0 ThenMsgBox "Der Pfad : " & strPath & " wurde erfolgreich angelegt!"
 End If
 End Sub
 
 ------------------MfG
 Ralf
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | OibelTroibel Mitglied
 Konstrukteur
 
    
 
      Beiträge: 602Registriert: 18.04.2014
 ACAD/Inventor 2018-21 |    erstellt am: 17. Apr. 2020 08:22  <-- editieren / zitieren -->    Unities abgeben:            
  Guten Morgen Ralf Vielen Dank für deine Hilfe. Ich werde es mit deiner Schleife machen und gleich versuchen. Ist es möglich, dass das Step-Export Sample von der API-Hilfe den Pfad erstellt?
 Code:Public Sub StepExport(Zielpfad, oRefDoc)
 
 Dim oSTEPTranslator As TranslatorAddIn
 Set oSTEPTranslator = ThisApplication.ApplicationAddIns.ItemById("{90AF7F40-0C01-11D5-8E83-0010B541CD80}")
 
 If oSTEPTranslator Is Nothing Then
 MsgBox "Verbindung zum STEP-Translator fehlgeschlagen."
 Exit Sub
 End If
 
 Dim oContext As TranslationContext
 Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
 Dim oOptions As NameValueMap
 Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
 If oSTEPTranslator.HasSaveCopyAsOptions(oRefDoc, oContext, oOptions) Then
 'Step Protokoll definieren
 '2 = AP 203 - Konfigurationsgesteuerte Konstruktion
 '3 = AP 214 - Automobil-Konstruktion
 '4 = AP 242 - Auf verwaltetem Modell basierende 3D-Konstruktion
 oOptions.Value("ApplicationProtocolType") = 4
 
 ' verfügbare Optionen
 oOptions.Value("Author") = ThisApplication.GeneralOptions.UserName
 'oOptions.Value("Authorization") = ""
 'oOptions.Value("Description") = ""
 'oOptions.Value("Organization") = ""
 
 oContext.Type = kFileBrowseIOMechanism
 
 Dim oDocRevision As Property
 Dim Revision As String
 Set oDocRevision = oRefDoc.PropertySets.Item("Inventor Summary Information").Item("Revision Number")
             Dim oData As DataMediumSet oData = ThisApplication.TransientObjects.CreateDataMedium
 
 If oDocRevision.Value = "" Then
 oData.FileName = Zielpfad & oRefDoc.DisplayName & ".stp"
 Else
 Revision = "_Rev-" + CStr(oDocRevision.Value)
 oData.FileName = Zielpfad & oRefDoc.DisplayName & Revision & ".stp"
 End If
 
 'Dokument publizieren
 Call oSTEPTranslator.SaveCopyAs(oRefDoc, oContext, oOptions, oData)
 End If
 End Sub
 
 Mir ist nämlich aufgefallen, dass die Ordnerstruktur erst nach dem
 Code:Call oSTEPTranslator.SaveCopyAs(oRefDoc, oContext, oOptions, oData)
 
  erstellt wird und das über mehrere Ordner. Mit dem PDF Export Sample kein ich aber gleiches Verhalten nicht beobachten, bzw. gibts den Ordner nicht, wird dieser auch nicht erstellt und somit das PDF nicht exportiert. Code:Public Sub PDFExport(Zielpfad, oRefDoc)
 ' Get the PDF translator Add-In.
 Dim PDFAddIn As TranslatorAddIn
 Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
     Dim oContext As TranslationContextSet oContext = ThisApplication.TransientObjects.CreateTranslationContext
 oContext.Type = kFileBrowseIOMechanism
     ' Create a NameValueMap objectDim oOptions As NameValueMap
 Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
     ' Create a DataMedium objectDim oData As DataMedium
 Set oData = ThisApplication.TransientObjects.CreateDataMedium
     ' Check whether the translator has 'SaveCopyAs' optionsIf PDFAddIn.HasSaveCopyAsOptions(oRefDoc, oContext, oOptions) Then
         ' Options for drawings...         oOptions.Value("All_Color_AS_Black") = 0         'oOptions.Value("Remove_Line_Weights") = 0'oOptions.Value("Vector_Resolution") = 400
 'oOptions.Value("Sheet_Range") = kPrintAllSheets
 'oOptions.Value("Custom_Begin_Sheet") = 2
 'oOptions.Value("Custom_End_Sheet") = 4
 End If
     Dim oDocRevision As PropertyDim Revision As String
 Set oDocRevision = oRefDoc.PropertySets.Item("Inventor Summary Information").Item("Revision Number")
     If oDocRevision.Value = "" ThenoData.FileName = Zielpfad & oRefDoc.DisplayName & ".pdf"
 Else
 Revision = "_Rev-" + CStr(oDocRevision.Value)
 oData.FileName = Zielpfad & oRefDoc.DisplayName & Revision & ".pdf"
 End If
     If Not objFso.FolderExists(Zielpfad) Then objFso.CreateFolder Zielpfad'Publish document.
 Call PDFAddIn.SaveCopyAs(oRefDoc, oContext, oOptions, oData)
 End Sub
 
 Das 
 Code:If Dir(Zielpfad, vbDirectory) = "" Then
 MkDir Zielpfad
 End If
 
 Habe ich im Hauptprogramm vorgelagert aber hat wohl bei PDF- und Step-Export kein Erfolg. Beste GrüsseRaphael
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | rkauskh Moderator
 Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
 
        
 
  
 
      Beiträge: 2933Registriert: 15.11.2006
 Windows 10 x64, AIP 2020-2025 |    erstellt am: 18. Apr. 2020 08:02  <-- editieren / zitieren -->    Unities abgeben:           Nur für OibelTroibel   
  Moin Was die Translatoren intern alles machen behält Autodesk für sich. Das der eine den kompletten Zielpfad erstellt und der andere nicht, halte ich durchaus für möglich. Ich vermute mal, die beiden Translatoren wurden in verschiedenen Jahren und von verschiedenen Programmierern erstellt. Da ist gleiches Programmverhalten eher Zufall.    ------------------MfG
 Ralf
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Anzeige.:
 Anzeige: (Infos zum Werbeplatz >>)
  |