| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: iLogic iProperty nur schreiben wenn geändert (661 / mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 15. Nov. 2023 16:11 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 2630 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 15. Nov. 2023 17:18 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
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
Beiträge: 602 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 16. Nov. 2023 08:18 <-- editieren / zitieren --> Unities abgeben:
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 >>)
|