|  |  | 
|  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|  |  | 
|  | KISTERS 3DViewStation - Der Schlüssel zur Einsparung von CAD-Lizenzen, eine Pressemitteilung 
 | 
| Autor | Thema:  Hauptkörper ändern (890 /  mal gelesen) | 
 | dddt1 Mitglied
 Ingenieur
 
  
 
      Beiträge: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 11:13  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Zusammen, habe folgendes Problem: es gibt ein Modell, das den Hauptkörper (leer) und einen Körper ("Körper.1) mit den Geometrien hat.Während der Makroausführung setze ich den Körper.1 als MainBody mithilfe dieses Satzes fest:
 CATIA.ActiveDocument.Part.MainBody = CATIA.ActiveDocument.Part.Bodies.Item(i) um die gewissen Parameter aus dem Körper auszulesen. Es funktioniert einwandfrei. Danach soll der ursprüngliche Körper ("Hauptkörper") wieder zum MainBody gemacht werden. Und das funktioniert nicht. Probiere es so (da der "Hauptkörper" immer auf der erste Position im Strukturbaum steht (s. Bild): CATIA.ActiveDocument.Part.MainBody=aktives_Modell.Bodies.Item(1) Bin für jede Hilfe dankbar! dddt1 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 26. Jan. 2024 11:25  <-- editieren / zitieren -->    Unities abgeben:           Nur für dddt1   
  Servus dddt1 Bei mir funktioniert es wie du es beschrieben hast, aber das Icon im Baum aktualisiert sich nicht richtig. (bei mir aktualisiert sich erst wenn ich den Körper in Bearbeitung setze oder doppelklick)Warum must du den Hauptkörper temporär ändern? (ich vermute dass du dies gar nicht benötigst)
 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: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 11:35  <-- editieren / zitieren -->    Unities abgeben:            
  Danke für eine schnelle Antwort Bernd! Hatte gerade ausprobiert:der Doppelklick oder das "Körper in Bearbeitung setzen" bringen bei mir nichts. Der Körper.1  bleibt als MainBody :-(
 Ich ändere den MainBody, um die Dichte des dem Körper zugewiesenen Materials mit dieser Methode auszulesen :CATIA.ActiveDocument.Part.Density
 Wenn ich einfach vom "normalen" Körper die Dichte auslese, dann bekomme ich eine glatte 1 und nicht die tatsächliche Dichte des Körpers. BGdddt1
 [Diese Nachricht wurde von dddt1 am 26. Jan. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Randle Mitglied
 CAD/PLM Consultant
 
    
 
      Beiträge: 758Registriert: 12.04.2003
 Win10 x64CATIA V5 R18, R19, R21, R27-29
 |    erstellt am: 26. Jan. 2024 11:40  <-- editieren / zitieren -->    Unities abgeben:           Nur für dddt1   
  Hallo, eine alternative wäre evtl. die den Körper.1 mittels boolescher Operation dem Hauptkörper hinzuzufügen und abschließend diese Operation wieder zu löschen. Gruß Randle ------------------Planung ersetzt Fehler durch Irrtum!
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 26. Jan. 2024 11:48  <-- editieren / zitieren -->    Unities abgeben:           Nur für dddt1   
  Servus Alternative Lösungsideen (nicht getestet):
  mit GetMaterialOnBody das Material auslesen (da sollt auch die Dichte irgendwo drin sein)
 über die Liste aller Parameter (ggf auch Sublist vom Körper) die einzelnen Dichten/Material auslesen
 über eine Messung (Inertia) die Dichte des Körper bestimmen
 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: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 12:12  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | dddt1 Mitglied
 Ingenieur
 
  
 
      Beiträge: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 12:59  <-- editieren / zitieren -->    Unities abgeben:            
  Die erste Variante mit dem GetMaterialOnBody funktioniert ! Vielen vielen Dank, Bernd! Leider benötige ich paar andere Parameter...Die meisten auszulesen habe ich hinbekommen. Jetzt stolpere ich beim Volumen des Körpers..wieder eine ähnliche Geschichte..wenn der Körper zum Hauptkörpier nominiert ist, dann wird Volumen ermittelt..sonst ist der Volumen=0.
 BGdddt1
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 26. Jan. 2024 13:01  <-- editieren / zitieren -->    Unities abgeben:           Nur für dddt1   
  Servus Was willst du denn alles von den einzelnen Körpern ermitteln?(um ggf nur einen Weg zu nutzen und nicht 10 verschiedene)
 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: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 13:03  <-- editieren / zitieren -->    Unities abgeben:            
  Hier ist die Lösung für Dichte_ermittlung, falls jemand änliche Frage hätte: Dim Mat_1 as MaterialSet Param = CATIA.ActiveDocument.Part.GetItem("CATMatManagerVBExt")
 Param.GetMaterialOnBody CATIA.ActiveDocument.Part.Bodies.Item(i), Mat_1
 Density = Mat_1.AnalysisMaterial.GetValue("SAMDensity")
 dddt1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | dddt1 Mitglied
 Ingenieur
 
  
 
      Beiträge: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 13:06  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 26. Jan. 2024 13:23  <-- editieren / zitieren -->    Unities abgeben:           Nur für dddt1   
  Servus Du benötigst nur drei dieser Werte (Volumen, Dichte oder Masse lassen sich wenn die beiden anderen bekannt sind berechne).Das Volumen und die Oberfläche solltest du über einer Messung (Measurable) bestimmen können. Dann wäre nur noch Dichte (über Inertia oder Material) oder Masse (über Inertia) offen.
 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: 44Registriert: 27.04.2021
 |    erstellt am: 26. Jan. 2024 14:33  <-- editieren / zitieren -->    Unities abgeben:            
  Das Volumen wird jetzt auch berechnet:   Set Vol = CATIA.ActiveDocument.Part.CreateReferenceFromObject(CATIA.ActiveDocument.Part.Bodies.Item(i))Set SPAWorkbench1 = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
 Set Volumen_Messung = SPAWorkbench1.GetMeasurable(Vol)
 Koerper_Volumen = Round(Volumen_Messung.Volume * 1000000, 3)
 Herzlichen Dank für Deine kompetente und schnelle Hilfe, Bernd! Schönes WE! BGdddt1
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |