Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  iLogic iProperty nur schreiben wenn geändert

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY GeForce RTX® 4090, RTX® 4080 16GB, und RTX® 4080 12GB; PNY stellt die neue Generation der NVIDIA GeForce RTX 40 GPUs vor
Autor Thema:  iLogic iProperty nur schreiben wenn geändert (335 / mal gelesen)
OibelTroibel
Mitglied
Konstrukteur


Sehen Sie sich das Profil von OibelTroibel an!   Senden Sie eine Private Message an OibelTroibel  Schreiben Sie einen Gästebucheintrag für OibelTroibel

Beiträge: 595
Registriert: 18.04.2014

ACAD/Inventor 2018-21

erstellt am: 15. Nov. 2023 16:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen

Ralf hat mir im Sommer ein iLogic-Code Beispiel gemacht, dass die Abmessung aller Bauteile und Unterbaugruppen in die jeweiligen benutzerdefinierten iProperties schreibt. Nun habe ich das Script etwas angepasst, sodass geprüft wird ob die Abmessung geändert hat und schreibt nur dann den Wert in die Abmessung. Aber anscheinend habe ich es nicht korrekt umgesetzt, da die Bauteile trotzdem bearbeitet werden, auch wenn die Abmessung nicht geändert wurde. Sieht ihr wo mein Fehler (oder Mehrzahl ) ist?

Code:
Sub Main()
Dim oADoc As AssemblyDocument = ThisDoc.Document
Dim oAsmDef As AssemblyComponentDefinition = oADoc.ComponentDefinition
Dim oRefDoc As Document
iProperties.Value("Custom", "Abmessung") = Round(Measure.ExtentsLength,1) & "x" & Round(Measure.ExtentsWidth,1) & "x" & Round(Measure.ExtentsHeight,1)

For Each oRefDoc In oADoc.AllReferencedDocuments
Try
Dim fio As New System.IO.FileInfo(oRefDoc.FullDocumentName)
If fio.IsReadOnly = False Then
If oRefDoc.IsModifiable = True Then
'Abmessungen auslesen
Dim oRefDef As ComponentDefinition = oRefDoc.ComponentDefinition
Dim oMinP As Point = oRefDef.RangeBox.MinPoint
Dim oMaxP As Point  = oRefDef.RangeBox.MaxPoint
Dim oXDiff As Double = Round((oMaxP.X - oMinP.X)*10,0)
Dim oYDiff As Double = Round((oMaxP.Y - oMinP.Y)*10,0)
Dim oZDiff As Double = Round((oMaxP.Z - oMinP.Z)*10,0)
Dim oSize As String = oXDiff.ToString & "x" & oYDiff.ToString & "x" & oZDiff.ToString

Try
sTester = oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value
Catch
oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add(oSize, "Abmessung")
End Try
If Not oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value = oSize Then
oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value = oSize
End If
End If
End If
Catch

End Try
Next
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 15. Nov. 2023 17:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für OibelTroibel 10 Unities + Antwort hilfreich

Moin

Ich weiß es, ich weiß es - was krieg ich jetzt?   

Code:

If Not oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value = oSize Then


Der Ausdruck wird IMMER wahr sein. Du vergleichst da nicht, sondern schreibst den Inhalt der Variable oSize in das iProp "Abmessung" als Wert. Strings vergleicht man besser z.B. mit

Code:
If Not oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value.ToString.Equals(oSize) Then


Lesestoff

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

OibelTroibel
Mitglied
Konstrukteur


Sehen Sie sich das Profil von OibelTroibel an!   Senden Sie eine Private Message an OibelTroibel  Schreiben Sie einen Gästebucheintrag für OibelTroibel

Beiträge: 595
Registriert: 18.04.2014

ACAD/Inventor 2018-21

erstellt am: 16. Nov. 2023 08:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf

Klar kriegst du was - 10 Ü's gehen raus   Und wenn du mal im schweizer Alpstein sein solltest gibt es eine feine Mahlzeit mit Bier  

Herzlichen Dank für den Hinweis, darauf hätte ich selbst kommen können - leider bin ich aber nicht  

Edit: Komischerweise werden noch immer alle Dateien aktualisiert. Eine andere Regel sollte auch nicht reinspielen. Anscheinend gibt die If-Anfrage noch immer True aus, auch wenn sich die Abmessung nicht geändert hat. Weist du da weiter?

Edit2: Habe es gerade selbst herausgefunden - oSize ist ja gerundet

[Diese Nachricht wurde von OibelTroibel am 16. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz