Benutzerdefinierten iProperti Wert mit iLogic ändern

Benutzerdefinierten iProperti Wert mit iLogic ändern

Anonymous
Not applicable
918 Views
6 Replies
Message 1 of 7

Benutzerdefinierten iProperti Wert mit iLogic ändern

Anonymous
Not applicable

Hallo,

im Zuge einer Umstellung wollen wir zukünftig in abgesetzten Teilelisten nur 2 Spalten der Benennung darstellen. In Benennung 1 kommt auch Benennung 1. Aber in Benennung 2 sollen die Benennung 2-4 zusammen geschrieben werden. Das geht ja mit =<Benenennug2> <Benennung3> <Benenennug2>. Für neu angelegte Zeichnungen ist das kein Problem, da habe ich das iProperti angelegt. Wenn ich aber ältere Dateien öffne gibt es dieses iProperti nicht und die Spalte 2 bleibt leer. Mein Gedanke dazu war, beim Start eine iLogicregel laufen zu lassen, die das iPropertie anlegt und gleich die Formel als Wert einträgt.

Da ich nicht wirklich Ahnung von iLogic habe und mir das nur mühevoll etwas angelesen habe komme ich hier nicht weiter.

Ich habe es soweit hinbekommen, dass das iPropertie angelegt wird. Aber ich weiß nicht wie ich die Formel da rein bekomme.

Wahrscheinlich kein großes Ding für Leute die Ahnung haben 🙂

Oder gibt es einen leichteren/anderen Weg?

0 Likes
Accepted solutions (1)
919 Views
6 Replies
Replies (6)
Message 2 of 7

TomaszDąbrowski
Enthusiast
Enthusiast

Kannst du mehr erklaren?

Willst du diese iLogicregel in einer Zusammensetzung laufen?

Was ist "Bennenung2", "Benennung3"? Ist es eine andere iProperty?

Wie heissen die Benutzerdefinierten iProperties?

0 Likes
Message 3 of 7

Anonymous
Not applicable

Hallo,

die Benennung2 und Benennung3 sind iProperties, die aus unserem ERB in die iProperties zurückgeschrieben werden. Dort gibt es die Benennung 1-4.

Über die Regel soll nun das neue iPropertie Benennung2-3 angelegt werden und mit der Formel =<Benennung2> <Benennung3> gefüllt werden.

Dieses iPropertie möchte ich dann in der abgesetzten Teileliste verwenden.

In der Teileliste kann ich ja pro Spalte nur ein iProperie abfragen bzw anzeigen.

0 Likes
Message 4 of 7

TomaszDąbrowski
Enthusiast
Enthusiast

Ich weiss nicht, ob ich es gut verstehe.

Diese Regel sollst du in einer Zussammenfassung laufen. Es wird in alle Partien:

- prufen ob Benennung2, Benennung3 und Benennung2-3 existieren

- wenn sie nich existieren, machen sie

- verandern Benennung2-3 fur <Benennung2> <Benennung3>

Habe ich es gut verstanden?

Dim oDoc As AssemblyDocument = ThisDoc.Document

Dim IUDP As PropertySet
Dim Prop1 As String = "Benennung2"
Dim Prop2 As String = "Benennung3"
Dim Prop3 As String = "Benennung2-3"

For Each oOcu As ComponentOccurrence In oDoc.ComponentDefinition.Occurrences
	IUDP = oOcu.Definition.Document.PropertySets.Item("Inventor User Defined Properties")
	Try
		x = IUDP.item(Prop1)
	Catch
		IUDP.add("",Prop1)
	End Try
	Try
		x = IUDP.item(Prop2)
	Catch
		IUDP.add("",Prop2)
	End Try
	Try
		x = IUDP.item(Prop3)
	Catch
		IUDP.add("",Prop3)
	End Try
	IUDP.Item(Prop3).value=IUDP.Item(Prop1).value & " " & IUDP.Item(Prop2).value
Next

 

0 Likes
Message 5 of 7

Anonymous
Not applicable

Danke für Deine Hilfe.

Ich habe noch ein wenig gestöbert und mit deinem Ansatz verglichen. So sieht meine Lösung aus, die anscheinend auch gut funktioniert.

Die Namen der iProperties sind ein wenig anders als in der Anfrage.

 

Dim sProp11 As String = "BENENNUNG_2-3"
Dim sDestCode11 As String
Dim sProp12 As String = "BENENNUNG_2-4"
Dim sDestCode12 As String
Dim sProp13 As String = "Zeichnungsmaterial"
Dim sDestCode13 As String
oCustomPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
Try
            'get current custom property value
                sDestCode11 = iProperties.Value("Custom", sProp11)
				iProperties.Value("Custom", sProp11) = sDestCode11
				sDestCode12 = iProperties.Value("Custom", sProp12)
				iProperties.Value("Custom", sProp12) = sDestCode12
				sDestCode13 = iProperties.Value("Custom", sProp13)
				iProperties.Value("Custom", sProp13) = sDestCode13
				

Catch
            'get current custom property value
                oCustomPropertySet.Add("", sProp11)
				'Bez = iProperties.Value("Custom", sProp11)
				iProperties.Value("Custom", sProp11) = sDestCode11
				oCustomPropertySet.Add("", sProp12)
				'Bez = iProperties.Value("Custom", sProp12)
				iProperties.Value("Custom", sProp12) = sDestCode12
				oCustomPropertySet.Add("", sProp13)
				'Bez = iProperties.Value("Custom", sProp13)
				iProperties.Value("Custom", sProp13) = sDestCode13
End Try


iProperties.Value("Custom", "BENENNUNG_2-3") = "=<BENENNUNG2> <BENENNUNG3>"
iProperties.Value("Custom", "BENENNUNG_2-4") = "=<BENENNUNG2> <BENENNUNG3><BENENNUNG4>"
iProperties.Value("Custom", "Zeichnungsmaterial") = "=<Material>  mm"

 

0 Likes
Message 6 of 7

TomaszDąbrowski
Enthusiast
Enthusiast

Gut dass es funkzioniert.

Aber do sollst merken, dass in Try funkzion du machst 3 Bedinungen. Es wird funkzionieren nur wenn entweder alle 3 Parameter existieren oder alle 3 Parameter nicht existieren. Wenn z.B. ein Parameter exisiert und 2 nicht, wird es nicht fukzionieren.

0 Likes
Message 7 of 7

Anonymous
Not applicable
Accepted solution

Das ist ein guter Einwand, vielen Dank noch dafür.

Das würde auch erklären, warum das Programm manchmal einen Fehler anzeigt.

2021-09-24_10h14_03.jpg

Ich werde das mal ändern.

In deinem Code hattest du das auch einzeln abgearbeitet.

0 Likes