- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- Kennzeichnen
- Melden
Hallo zusammen,
ich bräuchte etwas Unterstützung beim Anpassen meiner iLogic-Regel.
Bei uns kommt es öfter vor, dass wir Baugruppen haben, die in einer ähnlichen Art und Weise schon vorhanden sind. Nach dem Kopieren und Umbennen der Baugruppe bzw. Bauteile und Zeichnungen steht jedoch immernoch der Name des ursprünglichen Konstrukteurs in den iProperties.
Um Missverständnisse bei auftretenden Unklarheiten zu vermeiden, habe ich eine kleine iLogic-Regel gebastelt. Beim Ausführen der Regel wird der Benutzername in den entsprechenden iProperties der Baugruppe, Bauteile und Zeichnungen aktualisiert.
Hier mal meine iLogic-Regel:
'Festlegung des Dateityps in der die Regel ausgeführt werden kann
Dim oDoc As Document = ThisDoc.Document
If oDoc.DocumentType <> 12291 Then
MessageBox.Show("Diese Regel ist nur für Baugruppen", "Falscher Dateityp",MessageBoxButtons.OK,MessageBoxIcon.Error)
Exit Sub
End If
iLogicVb.UpdateWhenDone = True
'Aktualisieren der Benutzernamen in den "Autor" und "Konstrukteur" iProperties der Hauptbaugruppe
iProperties.Value("Summary", "Author") = ThisApplication.GeneralOptions.UserName
iProperties.Value("Project", "Designer") = ThisApplication.GeneralOptions.UserName
'Aktualisieren der Benutzernamen in den "Autor" und "Konstrukteur" iProperties der Unterbaugruppen und Bauteilen
Dim subDoc As Document
For Each subDoc In oDoc.AllReferencedDocuments
If subDoc.IsModifiable = True Then
'Verweis auf die "Autor" und "Konstrukteur" iProperties
Dim Author As String =
subDoc.PropertySets.Item("Inventor Summary Information").Item("Author").Value
Dim Designer As String =
subDoc.PropertySets.Item("Design Tracking Properties").Item("Designer").Value
'Definition einer "Autor" und "Konstrukteur" Variable mit dem aktuellen Benutzernamen
Dim NewAuthor As String
NewAuthor = ThisApplication.GeneralOptions.UserName
Dim NewDesigner As String
NewDesigner = ThisApplication.GeneralOptions.UserName
'Übertragung des geänderten Benutzernamens in die "Autor" und "Konstrukteur" iProperties
subDoc.PropertySets("Inventor Summary Information")("Author").Value = NewAuthor
subDoc.PropertySets("Design Tracking Properties")("Designer").Value = NewAuthor
End If
Next
'Aktualisieren der Benutzernamen in den "Autor" und "Konstrukteur" iProperties
'der, zu den Bauteilen gehörenden, Zeichnungen
Dim drawingDoc As DrawingDocument
Dim oFileName As String
For Each subDoc In oDoc.AllReferencedDocuments
oFileName = Left(subDoc.FullFileName, Len(subDoc.FullFileName) -4) & ".idw"
If System.IO.File.Exists(oFileName) Then
'Öffnen der Zeichnungen und Aktualisieren der Benutzernamen in den "Autor" und "Konstrukteur" iProperties
drawingDoc = ThisApplication.Documents.Open(oFileName,True)
drawingDoc.PropertySets("Inventor Summary Information")("Author").Value = ThisApplication.GeneralOptions.UserName
drawingDoc.PropertySets("Design Tracking Properties")("Designer").Value = ThisApplication.GeneralOptions.UserName
'Speichern und Schließen der Zeichnungen nach Aktualisierung der Benutzernamen
drawingDoc.Save
drawingDoc.Close(True)
End If
Next
Soweit so gut.
Die Regel funktioniert eigentlich ohne Probleme und macht was sie soll, solange kein Vault im Einsatz ist.
Da wir aber einen Vault verwenden, kommt es bei Bauteilen und Zeichnungen deren Lebenszyklus-Status im Vault auf "Freigegeben" steht zu Fehlermeldungen.
Jetzt war meine Überlegung die Regel so anzupassen, dass bevor die Bauteile bzw. Zeichnungen bearbeitet werden der Lebenszyklus-Status im Vault geprüft wird und die Bauteile/Zeichnungen, bei denen der Status auf "Freigegeben" steht, sollen dann übersprungen werden.
Ich habe mich schonmal etwas umgesehen und bin in einem anderen Beitrag auf einen Code gestoßen der vielversprechend aussieht.
Hier der Link zum Beitrag: iLogic to read Life Cycle State of Parts
Und hier noch der entsprechende Code:
AddReference "Autodesk.Connectivity.WebServices.dll"
Imports AWS = Autodesk.Connectivity.WebServices
AddReference "Autodesk.DataManagement.Client.Framework.Vault.dll"
Imports VDF = Autodesk.DataManagement.Client.Framework
AddReference "Connectivity.Application.VaultBase.dll"
Imports VB = Connectivity.Application.VaultBase
Dim mVltCon As VDF.Vault.Currency.Connections.Connection
mVltCon = VB.ConnectionManager.Instance.Connection
If mVltCon Is Nothing Then
Messagebox.Show("Not Logged In to Vault! - Login first and repeat executing this rule.")
Exit Sub
End If
Dim VaultPath As String = ThisDoc.PathAndFileName(True)
VaultPath = VaultPath.Replace("C:\$WorkingFolder\", "$/")
'flip the slashes
VaultPath = VaultPath.Replace("\", "/")
Dim VaultPaths() As String = New String() {VaultPath}
Dim wsFiels() As AWS.File = mVltCon.WebServiceManager.DocumentService.FindLatestFilesByPaths(VaultPaths)
Dim mFileIt As VDF.Vault.Currency.Entities.FileIteration = New VDF.Vault.Currency.Entities.FileIteration(conn,wsFiels(0))
Dim lifeCycleInfo As VDF.Vault.Currency.Entities.FileLifecycleInfo = mFileIt.LifecycleInfo
Messagebox.Show(lifeCycleInfo.Statename)
Leider weiß ich nicht, welche Teile des Codes ich genau brauche und welche nicht.
Oder an welche Stelle in meiner iLogic-Regel der Code müsste.
Dafür bin ich in dem ganzen iLogic-Thema noch zu unerfahren.
Falls mir jemand der sich mit der ganzen iLogic-Thematik besser auskennt bei dem Problem helfen könnte wäre ich euch sehr dankbar.
Gelöst! Gehe zur Lösung