|   |   | 
  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|   |   | 
  | KISTERS 3DViewStation: verbesserte Effizienz durch optimierte Bedienoberfläche, eine Pressemitteilung
  | 
| 
Autor
 | 
Thema:  AddNewAssemble nur ein Mal funktioniert (681 /  mal gelesen)
 | 
 
                        Sylas Mitglied
 
   
  
        Beiträge: 360 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28 
                         | 
                        
                         
                                                 
                        erstellt am: 31. Dez. 2021 01:18       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo zusammen! Ich probiere gerade ein Makro schreiben welches neues Body einfugst und eventuell neue Assembly macht. Es schein mir das AddNewAssembly Methode funct nur ein (erstes) Mal. Guck mal an die Code unter bitte, und sag mir was habe ich Falsch gemacht    
  Code:
  Sub CATMain() Dim oSel Dim oBodyToAssemble As Body Dim oPartBody As Body Dim oFilter(0) As Variant Dim oDummySel As Selection Set oDummySel = CATIA.ActiveDocument.Selection Set oSel = oDummySelDim part1 As Part oFilter(0) = "Part" Status = oSel.SelectElement2(oFilter, "Wybierz part", True) Set part1 = oSel.Item(1).Value Dim shapeFactory1 As ShapeFactory Set shapeFactory1 = part1.ShapeFactory Dim bodies1 As Bodies Set bodies1 = part1.Bodies  Dim body0 As Body Dim body1 As Body
 Set body0 = part1.MainBody Dim oDummy As Object start: Set body1 = bodies1.Add() Status2 = MsgBox("Czy ma to być główne body?", vbYesNo, "Zmienić główne body?") If Status2 = vbYes Then     part1.MainBody = body1     body1.Name = "PartBody"     body0.Name = "DXF"     shapeFactory1.AddNewAssemble body0     part1.Update     oSel.Clear     oSel.Search "(Name=Assemble* & CATPrtSearch.Assemble),in"     Set oDummy = oSel.Item(1).Value     oDummy.Name = body0.Name     oSel.Clear     part1.Update     Status = MsgBox("Powtórzyć operację?", vbYesNo, "Powórzyć operację?")     If Status = vbYes Then         GoTo start     Else         part1.InWorkObject = part1.MainBody         End     End If Else     body1.Name = InputBox("Podaj nazwę body: ", "Nazwa body")     shapeFactory1.AddNewAssemble body1     part1.Update     oSel.Clear     oSel.Search "(Name=Assemble* & CATPrtSearch.Assemble),in"     Set oDummy = oSel.Item(1).Value     oDummy.Name = body1.Name     oSel.Clear     part1.Update     Status = MsgBox("Powtórzyć operację?", vbYesNo, "Powórzyć operację?")     If Status = vbYes Then         GoTo start     Else         part1.InWorkObject = part1.MainBody         End     End If End If End Sub
  
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        bgrittmann Moderator Konstrukteur
         
  
        Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19 
                         | 
                        
                         
                                                 
                        erstellt am: 31. Dez. 2021 08:15       <-- editieren / zitieren -->           Unities abgeben:            Nur für Sylas  
                        
  Servus Ich muss zugeben mir ist der Ablauf des Makros nicht ganz klar. Kommt eine Fehlermeldung? Wie lautet diese? Ist der richtige Körper beim AddNewAssemble in Bearbeitung? Warum verwendest du Search? Geht da nicht auch zB Set MyAssemble = shapeFactory1.AddNewAssemble(body0) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Sylas Mitglied
 
   
  
        Beiträge: 360 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 20:46       <-- editieren / zitieren -->           Unities abgeben:           
                          Zitat: Original erstellt von bgrittmann: ServusIch muss zugeben mir ist der Ablauf des Makros nicht ganz klar. Kommt eine Fehlermeldung? Wie lautet diese? Ist der richtige Körper beim [i]AddNewAssemble in Bearbeitung? Warum verwendest du Search? Geht da nicht auch zB Set MyAssemble = shapeFactory1.AddNewAssemble(body0) Gruß Bernd [/i] 
  Hallo Bernd     Das Makro soll so laufen: 1. Fugt neues Body zu 2.Fragt, ob neues Body soll MainBody (PartBody) sein 2a. Wenn Ja - wechselt alteres Body mit neues. Macht neues Assembly (mit altes MainBody). 2b. Wenn Nein - macht neues Assembly mit neues Body. 3.Frag ob das alles ist. Wenn Ja - endest. Wenn Nein - geht zu Punkt 1 Änders Namen hier und da     Mit zweites Assemly ich kriege Fehlermeldung:
   Edit: Ich habe gerade gepruft, das Ich kriege das selbst Meldung, wenn ich springe MainBody Entscheindung uber     [Diese Nachricht wurde von Sylas am 03. Jan. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        bgrittmann Moderator Konstrukteur
         
  
        Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 20:51       <-- editieren / zitieren -->           Unities abgeben:            Nur für Sylas  
                         | 
                        
                        Sylas Mitglied
 
   
  
        Beiträge: 360 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 21:03       <-- editieren / zitieren -->           Unities abgeben:           
                         | 
                        
                        bgrittmann Moderator Konstrukteur
         
  
        Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 21:33       <-- editieren / zitieren -->           Unities abgeben:            Nur für Sylas  
                         | 
                        
                        Sylas Mitglied
 
   
  
        Beiträge: 360 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 21:45       <-- editieren / zitieren -->           Unities abgeben:           
                          Zitat: Original erstellt von bgrittmann: Und in beiden Fällen ist der richtige Körper in Bearbeitung? (für doch das Makro schrittweise aus)
  Ich habe das Body bevor "If" hinzufugen, daswegen, bei jedes Fall, es geht um das gleiches Body...  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                       
 
                        bgrittmann Moderator Konstrukteur
         
  
        Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19 
                         | 
                        
                         
                                                 
                        erstellt am: 03. Jan. 2022 21:48       <-- editieren / zitieren -->           Unities abgeben:            Nur für Sylas  
                        
  Kannst du dem  body1 den  body1 hinzufügen? Vermutlich nicht. Die Boole'sche Operation wird immer im aktuellen in Bearbeitung befindlichen Körper erzeugt. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  |