| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Auf dem Weg zur digitalen Auftragsmappe. , ein Anwenderbericht
|
Autor
|
Thema: iLogic Zeichnung von Vault öffnen (1337 / mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 22. Sep. 2022 10:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Unter diesem Link bin ich fündig geworden, um alle Zeichnungen einer Baugruppe aus Vault zu laden. Die Regel funktioniert soweit, jedoch gibt es eine Fehlermeldung, dass die "Name".idw.dwf nicht öffnen könne und bricht ab. Die Zeichnung "Name".idw ist zu diesem Zeitpunkt aber bereits offen. Daher schliesse ich, dass der Code ohne Probleme durchlaufen wurde und es erst beim Öffnen der Zeichnung Probleme gibt. Für mich ist es aber nicht nachzuvollziehen, wann er die.dwf Datei öffnen will. Kann mir da jemand weiterhelfen? Code: AddReference "Autodesk.Connectivity.WebServices.dll" Imports ACW = Autodesk.Connectivity.WebServices AddReference "Autodesk.DataManagement.Client.Framework.Vault.dll" AddReference "Autodesk.DataManagement.Client.Framework.dll" Imports VDF = Autodesk.DataManagement.Client.Framework AddReference "Connectivity.Application.VaultBase.dll" Imports VB = Connectivity.Application.VaultBase Public Class ThisRule
Sub Main() Dim oApp As Inventor.Application = ThisApplication Dim oDoc As Document = ThisDoc.Document If TypeOf ThisDoc.Document Is AssemblyDocument Then If ThisDoc.Document.SelectSet.Count > 0 Then oDoc = ThisDoc.Document.SelectSet(1).Definition.Document End If End If Dim docfullfilename As String = oDoc.FullFileName Dim docfilename As String = RPointToBackSlash(oDoc.FullFileName) 'Alle Zeichnungen aus dem Vault abrufen 'Auf Vault-Connection zugreifen und ggf. rausgehen Dim mVltCon As VDF.Vault.Currency.Connections.Connection = VB.ConnectionManager.Instance.Connection If mVltCon Is Nothing Then Exit Sub 'Auf ACW-PropertyDefininition Status zugreifen Dim filePropDefs As ACW.PropDef() = mVltCon.WebServiceManager.PropertyService.GetPropertyDefinitionsByEntityClassId("FILE") Dim ACWNamePropDef As ACW.PropDef For Each def As ACW.PropDef In filePropDefs If def.DispName = "Name" Then ACWNamePropDef = def Exit For End If Next def 'Suchoptionen festlegen Dim namesucheoptionen As New ACW.SrchCond() With { _ .PropDefId = ACWNamePropDef.Id, _ .PropTyp = ACW.PropertySearchType.SingleProperty, _ .SrchOper = 1, _ .SrchRule = ACW.SearchRuleType.Must, _ .SrchTxt = docfilename & " idw" _ } Dim bookmark As String = String.Empty Dim status As ACW.SrchStatus = Nothing Dim results As ACW.File() = mVltCon.WebServiceManager.DocumentService.FindFilesBySearchConditions(New ACW.SrchCond() {namesucheoptionen }, Nothing, Nothing, False, True, bookmark, status) Dim settings As New VDF.Vault.Settings.AcquireFilesSettings(mVltCon) If results Is Nothing Then MessageBox.Show("Zu dem Dokument " & docfilename & " ist keine Zeichnung im Vault vorhanden.", "Info") Else For Each res In results Dim oFileIteration As VDF.Vault.Currency.Entities.FileIteration = New VDF.Vault.Currency.Entities.FileIteration(mVltCon, res) settings.OptionsRelationshipGathering.FileRelationshipSettings.IncludeRelatedDocumentation = True settings.OptionsRelationshipGathering.FileRelationshipSettings.VersionGatheringOption = VDF.Vault.Currency.VersionGatheringOption.Latest settings.AddFileToAcquire(oFileIteration, VDF.Vault.Settings.AcquireFilesSettings.AcquisitionOption.Download) Next End If Dim aquiresults As VDF.Vault.Results.AcquireFilesResults = mVltCon.FileManager.AcquireFiles(settings) 'Alle heruntergeladenen idw's in Liste Dim idwList As New ArrayList For Each aquiresult As VDF.Vault.Results.FileAcquisitionResult In aquiresults.FileResults Dim aquiresultpath As String = aquiresult.LocalPath.FullPath If UCase(aquiresultpath).Contains(".IDW") Then idwList.Add(aquiresultpath) End If Next 'idw's öffnen For Each idw As String In idwList oApp.Documents.Open(idw, True) Next End Sub Function RPointToBackSlash(ByVal strText As String) As String strText = Left(strText, InStrRev(strText, ".") - 1) RPointToBackSlash = Right(strText, Len(strText) - InStrRev(strText, "\")) End Function End Class
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 22. Sep. 2022 10:50 <-- editieren / zitieren --> Unities abgeben:
Gerade fällt es mir wie Schuppen von den Augen - in der ArrayList idwList werden sämtliche Pfade mit ".idw" geführt, also auch .idw.dwf. Habe den Code nun ergänzt mit dem fettgeschriebenen Code: Code: 'Alle heruntergeladenen idw's in Liste Dim idwList As New ArrayList For Each aquiresult As VDF.Vault.Results.FileAcquisitionResult In aquiresults.FileResults Dim aquiresultpath As String = aquiresult.LocalPath.FullPath If UCase(aquiresultpath).Contains(".IDW.DWF") Then Else If UCase(aquiresultpath).Contains(".IDW") Then idwList.Add(aquiresultpath) End If Next
Was aber noch nicht funktioniert, ist das alle Zeichnungen der Baugruppe geöffnet werden. Was übersehe ich da noch? [Diese Nachricht wurde von OibelTroibel am 22. Sep. 2022 editiert.]
[Diese Nachricht wurde von OibelTroibel am 22. Sep. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 22. Sep. 2022 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Moin Soweit ich das sehe holt die Regel nur die Zeichnung des aktuell selektierten Dokumentes (oder der Hauptbaugruppe falls nichts selektiert ist), falls es eine gibt, und nicht alle Zeichungen aller Komponenten in deiner Baugruppe. Weiterhin solltest du statt Contains vielleicht einfach EndsWith benutzen, um alle IDW's zu finden. Und dann damit bereits die Downloadliste settings von den .IDW.DWF frei halten. Da, wie oben erwähnt, nur das aktuell selektierte Dokument bzw. die Haupbaugruppe benutzt wird, orakel ich mal das in der idwList nur maximal eine IDW drin steht. Man könnte den Inhalt von idwList ja mal in einem debug.log rausschreiben lassen. Habt ihr echt DWF's die XYZ.IDW.DWF heißen im Vault? Wer is denn auf die Idee gekommen?
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mcap Mitglied CAD-Supporter
Beiträge: 138 Registriert: 13.11.2014 Lenovo P360 ACAD 2022/24 IV 2022/24 WIN 10/64
|
erstellt am: 22. Sep. 2022 18:20 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Zitat: Original erstellt von rkauskh: ... Habt ihr echt DWF's die XYZ.IDW.DWF heißen im Vault? Wer is denn auf die Idee gekommen?
Hallo Ralf Diese Dateien werden von Vault beim Einchecken erstellt (wenn so konfiguriert). Auch für andere Dateitypen (.ipt.dwf / .iam.dwf etc.). Sie dienen im Vault-Explorer als Viewer-Dateien für die Voransicht. Im Normalfall werden sie in Auflistungen etc. nicht angezeigt. "Selber erstellte" DWFs heissen ganz normal .dwf. ------------------ Gruss Marco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 22. Sep. 2022 21:38 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Die Originalendung so als Teil des Namens stehen zu lassen, find ich trotzdem nicht schön. Ich denke dabei immer an die unter Windows per default deaktivierte Dateiendungsanzeige. Man könnte ja genauso gut den Punkt durch einen Unterstrich ersetzen. ------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 23. Sep. 2022 07:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf Vielen Dank für den Tipp mit "EndsWith", werde ich so umsetzen. Das stimmt, die idwList hat jeweils nur ein idw drin. Für was wird dann die Liste gemacht? Kann man die ersten Zeilen einfach umschreiben, dass es durch alle Baugruppen geht oder durch alle ausgewählten? Mit den Vault-DWF-Einstellungen habe ich mich nicht befasst, daher denke ich, dass es die Standardeinstellungen sind. Nur haben mich die bis jetzt nie gestört, da nicht sichtbar. Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 23. Sep. 2022 22:01 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Hallo Versuch es mal so: Code:
AddReference "Autodesk.Connectivity.WebServices.dll" Imports ACW = Autodesk.Connectivity.WebServices AddReference "Autodesk.DataManagement.Client.Framework.Vault.dll" AddReference "Autodesk.DataManagement.Client.Framework.dll" Imports VDF = Autodesk.DataManagement.Client.Framework AddReference "Connectivity.Application.VaultBase.dll" Imports VB = Connectivity.Application.VaultBase Public Class ThisRule
Sub Main() break Dim oApp As Inventor.Application = ThisApplication Dim oDocs As New List(Of String) Dim oDoc As Document = ThisDoc.Document If TypeOf ThisDoc.Document Is AssemblyDocument Then If ThisDoc.Document.SelectSet.Count > 0 Then Dim oOcc As ComponentOccurrence For Each oOcc In oDoc.SelectSet If Not oDocs.Contains(oOcc.Definition.Document.FullFileName ) Then oDocs.Add(oOcc.Definition.Document.FullFileName) End If Next 'oDoc = ThisDoc.Document.SelectSet(1).Definition.Document Else For Each oRefedDoc As Document In oDoc.AllReferencedDocuments oDocs.Add(System.IO.Path.GetFileNameWithoutExtension(oRefedDoc.FullFileName)) Next End If End If Dim docfullfilename As String = oDoc.FullFileName Dim docfilename As String = System.IO.Path.GetFileNameWithoutExtension(oDoc.FullFileName) 'RPointToBackSlash(oDoc.FullFileName) 'Alle Zeichnungen aus dem Vault abrufen 'Auf Vault-Connection zugreifen und ggf. rausgehen Dim mVltCon As VDF.Vault.Currency.Connections.Connection = VB.ConnectionManager.Instance.Connection If mVltCon Is Nothing Then Exit Sub 'Auf ACW-PropertyDefininition Status zugreifen Dim filePropDefs As ACW.PropDef() = mVltCon.WebServiceManager.PropertyService.GetPropertyDefinitionsByEntityClassId("FILE") Dim ACWNamePropDef As ACW.PropDef For Each def As ACW.PropDef In filePropDefs If def.DispName = "Name" Then ACWNamePropDef = def Exit For End If Next def 'Suchoptionen festlegen Dim namesucheoptionen As New ACW.SrchCond() With { _ .PropDefId = ACWNamePropDef.Id, _ .PropTyp = ACW.PropertySearchType.SingleProperty, _ .SrchOper = 1, _ .SrchRule = ACW.SearchRuleType.Must, _ .SrchTxt = docfilename & " idw" _ } For Each docfilename In oDocs namesucheoptionen.SrchTxt = namesucheoptionen.SrchTxt & " OR " & docfilename & " idw" Next Dim bookmark As String = String.Empty Dim status As ACW.SrchStatus = Nothing Dim results As ACW.File() = mVltCon.WebServiceManager.DocumentService.FindFilesBySearchConditions(New ACW.SrchCond() {namesucheoptionen }, Nothing, Nothing, False, True, bookmark, status) Dim settings As New VDF.Vault.Settings.AcquireFilesSettings(mVltCon) If results Is Nothing Then MessageBox.Show("Zu dem Dokument " & docfilename & " ist keine Zeichnung im Vault vorhanden.", "Info") Else For Each res In results Dim oFileIteration As VDF.Vault.Currency.Entities.FileIteration = New VDF.Vault.Currency.Entities.FileIteration(mVltCon, res) settings.OptionsRelationshipGathering.FileRelationshipSettings.IncludeRelatedDocumentation = True settings.OptionsRelationshipGathering.FileRelationshipSettings.VersionGatheringOption = VDF.Vault.Currency.VersionGatheringOption.Latest settings.AddFileToAcquire(oFileIteration, VDF.Vault.Settings.AcquireFilesSettings.AcquisitionOption.Download) Next End If Dim aquiresults As VDF.Vault.Results.AcquireFilesResults = mVltCon.FileManager.AcquireFiles(settings) 'Alle heruntergeladenen idw's in Liste Dim idwList As New ArrayList For Each aquiresult As VDF.Vault.Results.FileAcquisitionResult In aquiresults.FileResults Dim aquiresultpath As String = aquiresult.LocalPath.FullPath If UCase(aquiresultpath).EndsWith(".IDW") Then idwList.Add(aquiresultpath) End If Next 'idw's öffnen For Each idw As String In idwList oApp.Documents.Open(idw, True) Next End Sub End Class
------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 24. Sep. 2022 14:47 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|