Inventor 2023 - iLogic Regel anpassen

florian_duschlMDFS2
Contributor
Contributor

Inventor 2023 - iLogic Regel anpassen

florian_duschlMDFS2
Contributor
Contributor

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.

0 „Gefällt mir“-Angaben
Antworten
Akzeptierte Lösungen (3)
686Aufrufe
31Antworten
Antworten (31)

sara_elsayed15
Community Manager
Community Manager

Hi @florian_duschlMDFS2 


erstmals vielen Dank für dein Post und das Veranschaulichen deines Problems.

Vielleicht kann @RaphaelMichel  hier weiterhelfen? Danke dir, Raphael!

Beste Grüße,
Sara

0 „Gefällt mir“-Angaben

RaphaelMichel
Collaborator
Collaborator

Ich habe vor kurzem mal etwas ähnliches geschrieben, habe aber einen anderen Ansatz gewählt, da es noch keine Connectoren für Vault gab. Ich bin in den nächsten Tagen wieder an meinem Arbeitsplatz und versuche dann zu helfen. 

0 „Gefällt mir“-Angaben

jeremy.goenen
Advocate
Advocate

Hallo, könnte dir diese iProperty dir nicht weiterhelfen?

jeremygoenen_0-1730204832045.png

 

Dein Code wäre dann so:

'Übertragung des geänderten Benutzernamens in die "Autor" und "Konstrukteur" iProperties		
		'Werte für "Design Status" 1 = InBearbeitung / 2 = Unerledigt / 3 = Freigegeben
		If subDoc.PropertySets("Design Tracking Properties").Item("Design Status").Value = 3 Then Continue For
		subDoc.PropertySets("Inventor Summary Information")("Author").Value = NewAuthor
		subDoc.PropertySets("Design Tracking Properties")("Designer").Value = NewAuthor

 

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2
0 „Gefällt mir“-Angaben

RaphaelMichel
Collaborator
Collaborator

Dieses Property wird meines Wissen nicht durch Vault aktualisiert und müsste manuell oder durch ein Script geändert werden.

jeremy.goenen
Advocate
Advocate

Ah ok, also eher nützlich wenn man ohne Vault, oder wie wir mit Vault Basic arbeitet.

Gut zu Wissen Danke

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2

RaphaelMichel
Collaborator
Collaborator

Stimmt, mit Vault Basic wird der Freigabeprozess nicht von Vault verwaltet, dort würde es funktionieren. Sofern man diese Eigenschaft auch pflegt😀

0 „Gefällt mir“-Angaben

florian_duschlMDFS2
Contributor
Contributor

Hallo jeremy.goenen,

 

Ja den Gedanken mit der iProperty hatte ich am Anfang auch schon.

Aber beim Testen musste ich dann feststellen, dass die iProperty nicht mit dem Vault-Status übereinstimmt bzw. sich nicht automatisch anpasst, wie bereits von RaphaelMichel beschrieben.

 

Die Regel zum Auslesen des Lebenszyklus-Status aus dem Anfangspost sieht meiner Meinung nach ganz brauchbar aus. Nur weiß ich eben nicht, ob die vollständige Regel oder nur Teile davon für meinen Fall relevant sind.

 

Auch über die genaue Position innerhalb meiner Regel bin ich mir unsicher.

Also ob die Regel für den Lebenszyklus dann ganz an den Anfang muss oder erst an die Stelle vor der Bauteilbearbeitung.

Da mit der Regel ja eine Verbindung zum Vault-Server bzw. zum entsprechenden Workspace aufgebaut wird, so lese ich das zumindest raus.

 

Viele Grüße 

0 „Gefällt mir“-Angaben

jeremy.goenen
Advocate
Advocate
Akzeptierte Lösung

Ich habe den zweiten Code mal in deinen integriert, meinem Verständnis nach sollte das so funktionieren.

 

 

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
Sub Main 
'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

'Verbindung zum Vaul prüfen
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

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
		
		'Nächstes Dokument falls freigegebener Status
		If isReleasedLifeCycle( mVltCon, subDoc) Then Continue For

		'Ü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
			
		'Nächstes Dokument falls freigegebener Status
		If isReleasedLifeCycle( mVltCon, subDoc) Then Continue For
	
		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

End Sub

Function isReleasedLifeCycle(ByRef mVltCon As Object, doctocheck As Document) As Boolean

Dim VaultPath As String = doctocheck.FullFileName
'hier "C:\$WorkingFolder\" durch deinen Arbeitsbereich ersetzen, bei mir wäre das "C:\LWS\"
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)
If lifeCycleInfo = "Released" Then
	Return True
	Else
		Return False
	End If
	
End Function

 

 

Zeile 1-6 müssen in den Header

jeremygoenen_0-1730232981411.png

 

ich bekomme beim speichern ein Fehler, das er die .dll aus Zeile 1 nicht findet, vielleicht kommt die nur mit Vault Proffessional?

Vergiss nicht den Pfad für deinen Arbeitsbereich richtig zu setzen( Zeile 90)

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2

florian_duschlMDFS2
Contributor
Contributor

Hi jeremy.goenen,

 

erstmal vielen Dank für die schnelle Rückmeldung.

Ich werde das die Tage mal testen. Aber eine Frage hätte ich da vorab noch.

Muss der Teil mit der Statusabfrage, also ab Zeile 86, nicht eigentlich vor der Bearbeitung der Bauteile stehen?

Ich hätte jetzt vermutet, dass die Statusabfrage eher so in Zeile 30 stehen müsste. Oder macht das keinen Unterschied?

Die Fehlermeldung habe ich vorhin auch bekommen, als ich die Regel speichern wollte. Mal schauen wie sich das ganze in Kombination mit Vault verhält.

 

Grüße

0 „Gefällt mir“-Angaben

jeremy.goenen
Advocate
Advocate

Da der Code Teil zum prüfen des Status in zwei schleifen verwendet wird, und ich vermeiden wollte den Pfad für den Arbeitsbereich auf 2 stellen ändern zu müssen, habe ich den Hauptcode in  "Sub Main" gepackt, und aus der Prüfung eine Funktion gemacht die Wahr/Falsch zurückgibt, diese Funktion kann man dann an den benötigten stellen aufrufen,

in dem fall direkt vor der iProp Bearbeitung (Zeile 50), oder direkt am Anfang der Schleife (Zeile 66).

 

Heute morgen bin an einem anderen PC, an dem ich auch keine Vault Professional habe, aber Fehler das die .dll fehlt kommt nicht, also habe die bei vermutlich nicht mit Installiert.

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2
0 „Gefällt mir“-Angaben

RaphaelMichel
Collaborator
Collaborator
Akzeptierte Lösung

Ich habe mal auf Basis deines funktionierenden Scripts meine Erweiterung hinzugefügt. Habe leider momentan keine Möglichkeit es zu testen, daher ohne Gewähr😀 Vor allem der Teil, der die Zeichnung aktualisieren soll, kann ich mir nicht recht vorstellen, dass der bei dir bereits funktioniert hat, geschweige, dass die Erweiterung von mir funktioniert.

 

 

 

'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
        Try
			Dim fio As New System.IO.FileInfo(SubDoc.FullDocumentName)
			If fio.IsReadOnly = False Then
				If subDoc.IsModifiable = True Then
					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
				End If
			End If
		Catch
		End Try
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)
		Try
			Dim fio As New System.IO.FileInfo(drawingDoc.FullDocumentName)
			If fio.IsReadOnly = False Then
				If drawingDoc.IsModifiable = True Then
	
					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
				End If
			End If
		Catch
		End Try
		
		drawingDoc.Close(True)
		
		End If
Next

 

 

florian_duschlMDFS2
Contributor
Contributor

Hallo jeremy.goenen,

 

Ah ok, so ist das gedacht.

Die Regel habe ich jetzt mal in Kombination mit Vault getestet.

Den Pfad für den Arbeitsbereich habe ich auch entsprechend angepasst.

Die Fehlermeldung vom Anfang, bezüglich der fehlenden .dll, erscheint nun nichtmehr.

Aber dafür ist jetzt eine andere Fehlermeldung aufgetaucht. 

 

Hier ein Screenshot der Fehlermeldung:

Fehlermeldung.jpg

 

Grüße

 

0 „Gefällt mir“-Angaben

jeremy.goenen
Advocate
Advocate

Oh entschuldige, meine Fehler 😅

'MessageBox.Show(lifeCycleInfo.Statename)
If lifeCycleInfo = "Released" Then

hinter lifeCycleInfo fehlt Statename so wie in den klammern der Meldungsbox darüber,

ich bin mir auch nicht sicher ob "Released" stimmt, mit dem Meldungsfeld kannst du dir den aktuellen Wert anzeigen lassen.

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2
0 „Gefällt mir“-Angaben

florian_duschlMDFS2
Contributor
Contributor

Hallo RaphaelMichel,

 

auch dir erstmal vielen Dank für die Hilfe.

Deine Ergänzung zu meiner iLogic-Regel habe ich jetzt auch getestet.

Da bringt er mir folgende Fehlermeldung:

Fehlermeldung.jpg

Und zu deiner Frage, ob die ursprüngliche iLogic-Regel bei mir funktioniert hat. Ja sie hat eigentlich genau so funktioniert wie sie sollte. Aber halt nur solange kein Vault verwendet wird. Zusammen mit Vault bringt er mir immer die Fehlermeldung:

Fehler 1.jpg

Fehler 2.jpg

Was nach meiner Vermutung wohl daran liegt, dass er beim Ausführen der Regel versucht auch die Zeichnungen deren Status auf "Freigegeben" steht zu speichern.

Was ja nicht funktionieren kann.

Deshalb war ja der Gedanke mit der Statusabfrage, vor der Bearbeitung der Bauteile und Zeichnungen.

 

Viele Grüße

0 „Gefällt mir“-Angaben

RaphaelMichel
Collaborator
Collaborator

Sorry, ich hatte den falschen Namen verwendet "oSubDoc". Nun sollte das Objekt gefunden werden.

Bei den Zeichnungen wird ja drawingDoc als Befehl zum öffnen des Dokuments definiert und danach wiederverwendet um die Properties zu ändern, was meiner Meinung nach nicht funktionieren kann. Aber vielleicht stehe ich momentan auch auf dem Schlauch. Und leider habe ich gerade keine Möglichkeit das Script zu testen, das macht es auch nochmals schwieriger.

0 „Gefällt mir“-Angaben

florian_duschlMDFS2
Contributor
Contributor

Erstmal Danke an euch Beide für die Verbesserungen. 

 

@RaphaelMichel, leider bin ich heute nichtmehr dazu gekommen, die Regel mit deinen Änderungen zu testen, das werde ich morgen machen.
 
@jeremy.goenen, deine Änderungen konnte ich einarbeiten und testen.
Die iLogic-Regel ließ sich jetzt ohne Probleme speichern.
Aber beim Ausführen kommt es zur gleichen Fehlermeldung wie bei meiner ursprünglichen Regel.
 
Scheinbar werden auch die Bauteile und Zeichnungen bearbeitet, deren Status auf "Freigegeben" steht.
In den entsprechenden Bauteilen werden zwar die iProperties überschrieben, aber die Änderungen nicht im Tresor gespeichert, da es sich ja um freigegebene Bauteile handelt.
Bei den Zeichnungen werden die iProperties auch geändert und beim anschließenden Versuch die Zeichnungen zu speichern, erscheint dann folgenden Fehlermeldung: 
Fehler 1.jpg

Fehler 2.jpg

Das ist auch soweit nachvollziehbar, da die Zeichnungen ebenfalls freigegeben sind.

 

Ich schätze es liegt daran, dass die Statusabfrage zu spät kommt.

Die Bauteile und Zeichnungen werden praktisch bearbeitet bevor der Status bekannt ist bzw. sollte die Regel ja eigentlich erst den Status abfragen und dann die Bauteile/Zeichnungen die "Freigegeben" sind überspringen. Zumindest würde ich das so interpretieren.

 

Ich habe auch testweise den "Released" Status in der Regel geändert, das macht aber keinen Unterschied.

Die Messagebox in der Regel bringt leider auch keine neuen Erkenntnisse, da es einfach nur eine leere Box ist.

Messagebox.jpg

 
0 „Gefällt mir“-Angaben

RaphaelMichel
Collaborator
Collaborator

Arbeitet ihr mit Vault Professional? Darin wäre es einfacher, in der Kopierumgebung einen neuen Regelsatz zu definieren, der die gewünschten Änderungen vornimmt. Dazu den Copy Design öffnen und das "Definieren" Icon wählen. Darin kann ein neuer Regelsatz erstellt werden mit allen Eigenschaften, die du aktualisieren möchtest beim kopieren.

RaphaelMichel_0-1730356744246.png

 

0 „Gefällt mir“-Angaben

jeremy.goenen
Advocate
Advocate
Akzeptierte Lösung

Hallo, die Fehlermeldung ist normal, denn das leere  Meldungsfeld bedeutet der Status wurde nicht als Text gelesen, in dem Fall überspringt der Code die Teile nicht, was ja ja logisch ist.

ersetz mal :

 

 

'MessageBox.Show(lifeCycleInfo.StateName)
If lifeCycleInfo.StateName = "Released" Then
	Return True
	Else
		Return False
	End If

 

 

mit

 

 

'MessageBox.Show(lifeCycleInfo.IsConsumable)
Return lifeCycleInfo.IsConsumable

 

 

das funktioniert bei mir.

 

und laut API ist das genau das wonach du suchst.

jeremygoenen_0-1730360056880.png

 

Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN

Inventor Versionen:
2023.4.3
2025.2

florian_duschlMDFS2
Contributor
Contributor

Hallo zusammen,

 

@RaphaelMichel, die Möglichkeit mit dem Copy Design hört sich auch interessant an, das werd ich mir auf alle Fälle mal ansehen.

 

Aber ich wollte euch noch eine Rückmeldung zu den iLogic-Regeln geben, da ich jetzt endlich zum Testen der verschiedenen Varianten gekommen bin.

 

Ich weiß zwar nicht wie, aber komischerweise funktionieren jetzt alle drei Versionen der Regel.🤔

Also sowohl die angepasste Variante von RaphaelMichel, als auch die beiden Versionen von jeremy.goenen😅

 
Beim Testen der Regel von RaphaelMichel ist mir nur aufgefallen, dass vor dem Ausführen der Regel alle Bauteile in der Baugruppe manuell aus dem Tresor ausgecheckt werden müssen.
Ansonsten werden beim Ausführen der Regel zwar die iProperties in der Baugruppe und in den, zu den Bauteilen gehörenden Zeichnungen, geändert.
Aber die iProperties in den Bauteilen selbst werden nicht angepasst.
Das lässt sich aber umgehen, indem man alle Bauteile zuvor auscheckt, dann funktioniert die Regel ohne Probleme.
 
Bei der ersten Version von jeremy.goenen mit den Zeilen:
'MessageBox.Show(lifeCycleInfo.StateName)
If lifeCycleInfo.StateName = "Released" Then
	Return True
	Else
		Return False
	End If
habe ich festgestellt, dass neben dem Pfad zum Arbeitsbereich auch der Status von "Released" auf "Freigegeben" angepasst werden muss.
Dann funktioniert auch die Messagebox korrekt.
Scheinbar kann die Regel mit dem Begriff "Released" nichts anfangen, weil dann versucht wird auch Bauteile und Zeichnungen deren Status auf "Freigegeben" steht zu bearbeiten.
Das führt dann zu den vorher genannten Fehlermeldungen.
Beim ersten Mal testen hatte ich da anscheinend einen Tippfehler drin, deshalb hats nicht funktioniert.
 
Die zweite Variante von jeremy.goenen mit den geänderten Zeilen:
'MessageBox.Show(lifeCycleInfo.IsConsumable)
Return lifeCycleInfo.IsConsumable
läuft, sobald der Pfad für den Arbeitsbereich richtig angegeben ist, auch ohne Probleme.
 
Jetzt hätte ich nur noch eine Frage an @jeremy.goenen.
Gibt es zwischen der Variante:
'MessageBox.Show(lifeCycleInfo.StateName)
If lifeCycleInfo.StateName = "Released" Then
	Return True
	Else
		Return False
	End If
und der Variante mit:
'MessageBox.Show(lifeCycleInfo.IsConsumable)
Return lifeCycleInfo.IsConsumable
irgendwelche Unterschiede bzw. Vor-oder Nachteile, was für eine der beiden Varianten spricht? Oder macht das bei der Verwendung keinen Unterschied?
 
Nochmals vielen Dank an Euch beide für die Hilfe beim Anpassen meiner Regel. Ich markiere mal eure Beiträge als Lösung, da sogesehen ja alle Varianten funktionieren.
 
Viele Grüße
 
 
0 „Gefällt mir“-Angaben