| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | |  | Autodesk AutoCAD: Crashkurs - Online, ein Seminar am 08.12.2025
|
|
Autor
|
Thema: iLogic RangeBox bringt Fehlermeldung bei Baugruppen Zeichnungen (327 / mal gelesen)
|
TRL Mitglied Konstruktionsassistent
 Beiträge: 8 Registriert: 12.03.2024 Inventor 2022, iLogic
|
erstellt am: 03. Mrz. 2025 15:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe mir vor einer ganzen weile eine RangeBox zusammen gesucht aus diversen Forenbeiträgen mit der ich meine 3 Parameter Bruttobreite, Bruttotiefe, Bruttohöhe mit den Abmaßen füllen kann. Das ganze funktioniert auch prima in allen Bauteilen und Baugruppen. Das ganze führe ich als Globale Regel aus bei Bauteilen und Baugruppen. Ich habe allerdings jetzt festgestellt das gelegentlich in Baugruppenzeichnungen nun Fehlermeldungen auftauchen. Ich habe leider nicht mal ansatz weise viel ahnung von iLogic benötige aber etwas was diese Paramter sauber erzeugt. Er meldet folgendes: Fehler in Zeile 27 in Regel RangeBox xyz, in Document xxxxxx.idw Mitglied nicht gefunden. (Ausnahme von HRESULT:0x80020003(DISP_E_MEMBERNOTFOUND)) Weiter Informationen in der Fehlermeldung sind noch : System.Runtime.InteropServices.COMException (0x80020003): Mitglied nicht gefunden. (Ausnahme von HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) bei Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack) bei Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack) bei ThisRule.Main() in Externe Regel: RangeBox xyz:Zeile 34. bei Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem) bei iLogic.RuleEvalContainer.ExecRuleEval(String execRule) Mein Code schaut wie folgt aus. Sub Main() Try If iProperties.Value("Custom", "Bruttobreite") = True Then Else iProperties.Value("Custom", "Bruttobreite") = "" End If Catch End Try Try If iProperties.Value("Custom", "Bruttotiefe") = True Then Else iProperties.Value("Custom", "Bruttotiefe") = "" End If Catch End Try Try If iProperties.Value("Custom", "Bruttohöhe") = True Then Else iProperties.Value("Custom", "Bruttohöhe") = "" End If Catch End Try oCompDef = ThisApplication.ActiveDocument.ComponentDefinition '' Hier meldet es den Fehler in Zeile 27 Ax= Round(10*(oCompDef.RangeBox.MaxPoint.X - oCompDef.RangeBox.MinPoint.X),2) Ay= Round(10*(oCompDef.RangeBox.MaxPoint.Y - oCompDef.RangeBox.MinPoint.Y),2) Az= Round(10*(oCompDef.RangeBox.MaxPoint.Z - oCompDef.RangeBox.MinPoint.Z),2) iProperties.Value("Custom", "Bruttobreite") = Ax iProperties.Value("Custom", "Bruttotiefe") = Ay ''Zeile 34 iProperties.Value("Custom", "Bruttohöhe") = Az InventorVb.DocumentUpdate() End Sub Der Fehler scheint auch nicht immer zu kommen.
Kann mir hier jemand weiterhelfen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
      

 Beiträge: 2933 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 04. Mrz. 2025 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für TRL
Moin Doch, ich glaube der Fehler kommt in jeder IDW. Ein Zeichnungsdokument hat keine ComponentDefinition auf die man zugreifen könnte. Was willst du auch mit Länge, Breite, Höhe einer Zeichnung? Wenn überhaupt, musst du dir das referenzierte Dokument der Zeichnung holen. Das macht aber null Sinn, da die Abmessungen schon beim Speichern des referenzierten Bauteil-/Baugruppendokumentes geschrieben wurden. Lass die Regel in Bauteilen und Baugruppen beim Speichern laufen, das reicht. Ich empfehle in Abmessungsproperties kein NULL-Werte zu verwenden. Leere Felder bei Zahlenangaben können in Drittanbieterprogrammen zu Rechnfehlern führen. Es wäre besser eine 0 zu schreiben. Aber wenn es leer sein soll, könnte man es auch kürzen. Code:
Sub Main()If Measure.ExtentsLength = 0 Then iProperties.Value("Custom", "Bruttobreite") = "" Else iProperties.Value("Custom", "Bruttobreite") = Round(Measure.ExtentsLength, 2) End If If Measure.ExtentsWidth = 0 Then iProperties.Value("Custom", "Bruttotiefe") = "" Else iProperties.Value("Custom", "Bruttotiefe") = Round(Measure.ExtentsWidth,2) End If If Measure.ExtentsHeight = 0 Then iProperties.Value("Custom", "Bruttohöhe") = "" Else iProperties.Value("Custom", "Bruttohöhe") = Round(Measure.ExtentsHeight,2) End If End Sub
Mit einer 0 könnte man es so schreiben:
Code:
Sub Main() Try iProperties.Value("Custom", "Bruttobreite") = Round(Measure.ExtentsLength, 2) iProperties.Value("Custom", "Bruttotiefe") = Round(Measure.ExtentsWidth, 2) iProperties.Value("Custom", "Bruttohöhe") = Round(Measure.ExtentsHeight, 2) Catch MsgBox("Fehler beim Erstellen der Abmessungen in " & System.IO.Path.GetFileName(ThisDoc.Document.FullFileName , MsgBoxStyle.Critical, "iLogic Abmessungen") End Try End Sub
P.S.: Bitte nicht ohne Grund Try-Catch Anweisungen mit leerem Catch Zweig verwenden. Du rennst so in einen Fehler, nichts passiert und du merkst nichts davon. Wenn in deinem Fall das Leeren der iProps fehlschlägt, dürfte mit hoher Wahrscheinlichkeit auch das anschließende Schreiben eines neuen Wertes fehlschlagen. Dann bekommst du deinen Fehler dort geworfen. Hier mag es noch überschaubar sein, in größeren Codes leitet dich so etwas an eine völlig falsche Stelle im Code, wo angeblich der Fehler liegen soll.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TRL Mitglied Konstruktionsassistent
 Beiträge: 8 Registriert: 12.03.2024 Inventor 2022, iLogic
|
erstellt am: 04. Mrz. 2025 11:35 <-- editieren / zitieren --> Unities abgeben:         
Erst mal danke für den hinweiß mit den Nullen. Leider ist es es das ich eigentlich überhaupt keine ahnung von der Materie habe. Ich möchte eigentlich auch garnicht das es in Zeichnungen ausgeführt wird. Ich vermute bald ich habe die Ereignisauslöser hier falsch eingestellt. Sie ist als Externe Regelabgespeichert und ich habe die Ereignisauslöser für Bauteile und Baugruppen eingestellt. Als auslöse Ereignis habe ich "Vor dem speichern von Dokument", "Beliebige" Modellparameteränderung" und "Beliebige Änderung von Benutzerparametern" ausgewählt. Eventuell kommtes durch das Speichern der Zeichnung auch zu einem speichern des Modells in dem moment? Oder wie verhindere ich das es in Zeichnungen ausgeführt wird? Hintergrund ist das ich gerade tausende Bauteile und Baugruppen für ein neues PDM System aufarbeite (welches die 3 Parameter verarbeitet). Die 3 Parameter gab es vorher bei uns nicht und ich setze sie gerade in jede Datei (Bauteile und Baugruppen). Die Bauteile sind im großteil Parametrisch so das es auch oft zu neuen Teilen mit neuen abmessungen kommt und die Parameter sollten in dem fall mit automatisch aktualisiert werden.
[Diese Nachricht wurde von TRL am 04. Mrz. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
      

 Beiträge: 2933 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 04. Mrz. 2025 11:53 <-- editieren / zitieren --> Unities abgeben:          Nur für TRL
Moin ThisApplication.ActiveDocument ist immer die Datei deren Name im Inventor oben in der Titelleiste steht. Ich vermute bei dir, dass die Zeichnung geöffnet ist und das verknüpfte 3D-Modell gespeichert wird. Du musst dabei in deiner Regel die Zeile
Code: oCompDef = ThisApplication.ActiveDocument.ComponentDefinition
ersetzen mit Code: oCompDef = ThisDoc.Document.ComponentDefinition
Das benutzt nicht das aktive Dokument, sondern das Dokument von dem aus die Regel aufgerufen wurde. Nimm die beiden Ereignisauslöser für die Parameteränderung wieder raus. Du löst deine Regel sonst mehrfach aus, das kostet nur Performance und Zeit. Einmal vor dem Speichern genügt. Das Bauteile und Baugruppen auch verdreht im Koordinatensystem liegen können und die Abmessungen dann, sagen wir mal suboptimal ermittelt werden ist dir bewusst? Òder das sichtbare Skizzen und Arbeitselemente in der Abmessungsermittlung berücksichtigt werden? ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TRL Mitglied Konstruktionsassistent
 Beiträge: 8 Registriert: 12.03.2024 Inventor 2022, iLogic
|
erstellt am: 04. Mrz. 2025 12:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo, das mit dem verdrehten Kordninatensystem ist mir bekannt, aber das bringt auch nix wenn die Konstrukteure jedes mal auf einer anderen Ebene anfangen zu konstruieren . Das mit den sichtbaren Arbeitselementen und Skizzen habe ich noch nicht gewusst. Danke für den Hinweiß. Ob es vieleicht gescheitere Lösungen gibt für diesen Fall weiß ich leider nicht, ich war schon froh das ich nach Stundenlangen suchen in foren und ausprobieren dann endlich eine Lösung gefunden hatte die funktionierte. Es ist leider relativ schwer für Neulinge das Thema iLogic zu verstehen oder Erklärungen zu finden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
      

 Beiträge: 2933 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 04. Mrz. 2025 13:18 <-- editieren / zitieren --> Unities abgeben:          Nur für TRL
Moin Für deinen Fall bringt es wenig, aber man könnte mit einem Benutzerkoordinatensystem die Ausrichtung korrigieren, wenn man dieses als Basis für die Amessungen hernimmt. Das jetzt nachträglich in alle Bauteile und Baugruppen zu packen ... ist eher eine Strafe als ein Aufgabe. Die Skizzen und Arbeitsebenen könnte man mit der Objektsichtbarkeit (ThisDoc.Document.ObjectVisibility.AllWorkFeatures = False) ausknipsen. Eventuell muss man noch mehr der möglichen Optionen auf Sichtbar=False stellen, das hab ich nicht im Kopf. Hier im "Inventor VBA" und "Inventor .Net" Forum ist das Thema Abmessungen schon mehrfach diskutiert worden. Da tauchen dann auch Problemstellungen wie "ein gewundener Schlauch oder ein Rohrmäander hat andere Abmessungen als die BoundingBox ausgibt" oder "zählen beim Blechteil die Abwicklungsmaße oder die gekanteten" auf. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |