Autor
|
Thema: AddNewAssemble nur ein Mal funktioniert (494 / mal gelesen)
|
Sylas Mitglied
Beiträge: 322 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: 11780 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: 322 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: 11780 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: 322 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: 11780 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: 322 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: 11780 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 |