Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Prüfen, ob Material zugewiesen ist

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 CATIA & Co.
  
Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
Autor Thema:  Prüfen, ob Material zugewiesen ist (297 / mal gelesen)
dddt1
Mitglied
Ingenieur


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

Beiträge: 36
Registriert: 27.04.2021

erstellt am: 01. Mai. 2025 21:21    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 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


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

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 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 dddt1 10 Unities + Antwort hilfreich

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


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

Beiträge: 755
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 02. Mai. 2025 09:17    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 dddt1 10 Unities + Antwort hilfreich

Hallo,
kann man so machen, aber statt
Code:
Err.clear
besser
Code:
On Error Goto 0
verwenden.
Gruß Randle

------------------
Planung ersetzt Fehler durch Irrtum!

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

dddt1
Mitglied
Ingenieur


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

Beiträge: 36
Registriert: 27.04.2021

erstellt am: 02. Mai. 2025 21:35    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 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


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

Beiträge: 36
Registriert: 27.04.2021

erstellt am: 02. Mai. 2025 21:38    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

Danke für den Tipp, Randle!

Beste Grüße

dddt1

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12061
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 03. Mai. 2025 19:20    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 dddt1 10 Unities + Antwort hilfreich

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



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

Beiträge: 499
Registriert: 26.03.2014

CATIA V5 R26

erstellt am: 04. Mai. 2025 08:38    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 dddt1 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von bgrittmann:
Es schlägt ggf fehl, wenn:

  • der Mainbody umbenannt wurde


Ist Partbody nicht die universelle Bezeichnung für den Main Body?

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12061
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 04. Mai. 2025 08:51    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 dddt1 10 Unities + Antwort hilfreich

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


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

Beiträge: 36
Registriert: 27.04.2021

erstellt am: 05. Mai. 2025 21:33    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 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

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)2025 CAD.de | Impressum | Datenschutz