| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
|
Autor
|
Thema: Prüfen, ob Material zugewiesen ist (297 / mal gelesen)
|
dddt1 Mitglied Ingenieur

 Beiträge: 36 Registriert: 27.04.2021
|
erstellt am: 01. Mai. 2025 21:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo liebe Community, seit eine Zeit benutze ich einen Codeschnipsel von der Seite Tech-ecke.de, wo ein zugewiesenes Material ausgelesen wird: CATIA.ActiveDocument.Part.Parameters.Item("PartBody\Material").Value Funktioniert super, solange ein Material dahinten steckt. Solange da kein Material zugewiesen ist, kommt folgende Fehlermeldung: Run-time error '-2147467259 (80004005)': Klasse nicht registriert Wollte eine Prüfungsroutine einführen, ob ein Material dem Part zugewiesen ist, bekomme es mit mir bekannten Methoden nicht hin. Bitte um eure Hilfe. Beste Grüße dddt1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarcL68 Mitglied Group Leader Mechanical Design

 Beiträge: 28 Registriert: 21.08.2013 Windows 10 Entreprise Version 10.0.17763 HP ZBook 17G2 i7-4610M; 3.0GHz;(RAM)16,00 Go NVIDIA Quadro 3000M CATIA V5R2012 SP3 - V5R2018
|
erstellt am: 02. Mai. 2025 07:54 <-- editieren / zitieren --> Unities abgeben:          Nur für dddt1
Hallo, Hier eine Prufungs: On Error Resume Next CATIA.ActiveDocument.Part.Parameters.Item("PartBody\Material").Value if Err.Number <> 0 then 'kein material Parameter end if Err.clear ------------------ Gruss Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
  
 Beiträge: 755 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 02. Mai. 2025 09:17 <-- editieren / zitieren --> Unities abgeben:          Nur für dddt1
|
dddt1 Mitglied Ingenieur

 Beiträge: 36 Registriert: 27.04.2021
|
erstellt am: 02. Mai. 2025 21:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo Marc, danke für schnelle und geholfene Antwort! So kann ich den Runtime-Fehler umgehen und mein Code hat funktioniert. Vielen Dank! Dann kann das Thema als gelöst und geschlossen erklärt werden. Beste Grüße dddt1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dddt1 Mitglied Ingenieur

 Beiträge: 36 Registriert: 27.04.2021
|
erstellt am: 02. Mai. 2025 21:38 <-- editieren / zitieren --> Unities abgeben:         
|
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12061 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Mai. 2025 19:20 <-- editieren / zitieren --> Unities abgeben:          Nur für dddt1
Servus dddt1 Kleiner Hinweis: das Abfragen des Parameters ist nicht eindeutig. Es schlägt ggf fehl, wenn: - eine andere Sprache des UI eingestellt ist
- der Mainbody umbenannt wurde
- Material hinzugefügt wurde und dann wieder gelöscht wird (der Parameter bleibt erhalten und hat als Wert None/Kein)
Kannst du diese möglichen Fehler ausschließen (durch Settings, Konstruktionsrichtlinien,...) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Moderator
 
 Beiträge: 499 Registriert: 26.03.2014 CATIA V5 R26
|
erstellt am: 04. Mai. 2025 08:38 <-- editieren / zitieren --> Unities abgeben:          Nur für dddt1
|
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12061 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Mai. 2025 08:51 <-- editieren / zitieren --> Unities abgeben:          Nur für dddt1
Servus Nein, der Parametername ist abhängig von Sprache und vom tatsächlichen Namen des Körpers. Workaround: Code: Function HasBodyMaterialApplied(oBody as Body, oPart as Part) as boolean Dim oAppliedMaterial As Material Dim oManager As MaterialManager Set oManager = oPart.GetItem("CATMatManagerVBExt") oManager.GetMaterialOnBody oBody, oAppliedMaterial if oAppliedMaterial is Nothing then HasBodyMaterialApplied = false Else HasBodyMaterialApplied = true end if End Function
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dddt1 Mitglied Ingenieur

 Beiträge: 36 Registriert: 27.04.2021
|
erstellt am: 05. Mai. 2025 21:33 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, danke für den Hinweis. Unten sind die Vermerke zu jedem Punkt: Zum 1.: Als Sprache wird immer VBA benutzt. Zum 2.: Den Mainbody hatte ich umbenannt, die Routine hat trotz der Umbenennung funktioniert. Zum 3.: Das Material hatte ich mehrmals zu- und ab-gewiesen. Die Routine hat funktioniert. Beste Grüße dddt1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |