Autor
|
Thema: Brauche Hilfe Makro umbenennen Geo Sets im Part (4396 mal gelesen)
|
ausie-r-n Mitglied
Beiträge: 11 Registriert: 16.01.2008 Catia V5 R16 Service Pack 5 Build Step 16 Hot Fix 94
|
erstellt am: 11. Feb. 2010 08:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich muß zu meiner Schande gestehen, daß ich von Makro Programmierung keine Ahnung habe und deshalb benötige ich Eure Hilfe. Ich suche ein Makro mit dem ich alle Geometrical Sets in einem Cat Part umbenennen kann. Dabei kann es sein, daß unter den Geo Sets noch weitere Geo Sets hängen. Diese können aber müssen nicht umbenannt werden. Ich habe für Body mal so ein Makro gefunden das super funktioniert (s.u.) aber ich habe es nicht hin bekommen es umzuschreiben für Geo Sets. Kann mir jemand helfen ?? Gruß Ausie-r-n Hier das Makro für die Bodys: Language = "VBSCRIPT" Sub CATMain() Dim productDocument1 As PartDocument Set productDocument1 = CATIA.ActiveDocument Dim selection1 As selection Set selection1 = productDocument1.selection selection1.Search "CATPrtSearch.BodyFeature,all" Dim Imax As Integer Imax = selection1.Count For I = 1 To Imax selection1.Item(I).Value.Name = "Body." & CStr(I) & ".temp_rename" Next For I = 1 To Imax selection1.Item(I).Value.Name = "Body." & CStr(I) Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 11. Feb. 2010 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
|
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 11. Feb. 2010 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
Hallo , schau mal hier. Das Makro beendet alle geometrischen Sets eines Parts um. Code:
Sub CATMain() '***Abfrage Dokumente*** Dim intCATWindows As Windows Dim intDoc As Document Dim intObjTypeStr As String Set intCATWindows = CATIA.Windows If intCATWindows.Count = 0 Then Box = MsgBox("Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgeführt werden und wird beendet!", vbCritical, "Keine Dokument geladen") Exit Sub End If Set intDoc = CATIA.ActiveDocument intObjTypeStr = TypeName(intDoc) If intObjTypeStr <> "PartDocument" Then MsgBox "Das aktive Dokument ist kein CATPart!" + Chr(10) + "Das Makro kann nicht ausgeführt werden!", _ vbCritical + vbOKOnly, "Falscher Dateityp" Exit Sub End If intObjTypeStr = ""
'***Selektion GeoSets*** Dim intSel As Selection Dim intSelCountInt As Integer Dim i As Integer Set intSel = intDoc.Selection intSel.Search "CATGmoSearch.OpenBodyFeature,all" If intSel.Count = 0 Then MsgBox "Es wurden keine geomegrischen Sets im Part gefunden!", vbInformation, "Keine GeoSets gefunden" Exit Sub Else '***Temporär Umbenennung*** For i = 1 To intSel.Count intSel.Item(i).Value.Name = "Geometrical Set." & CStr(i) & ".temp_rename" Next '***Umbenennung*** For i = 1 To intSel.Count intSel.Item(i).Value.Name = "Geometrical Set." & CStr(i) Next End If '***Anwenderausgabe und Selektion leeren*** MsgBox "Es wurden " & intSel.Count & " geometrische Sets umbenannt!", vbInformation, "Erfolgreich beendet" intSel.Clear End Sub
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ausie-r-n Mitglied
Beiträge: 11 Registriert: 16.01.2008 Catia V5 R16 Service Pack 5 Build Step 16 Hot Fix 94
|
erstellt am: 11. Feb. 2010 10:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, vielen Dank an Alle, die mir geholfen haben. Es funktioniert und zwar mit folgendem Code: Language = "VBSCRIPT" Sub CATMain() Dim productDocument1 As PartDocument Set productDocument1 = CATIA.ActiveDocument Dim selection1 As selection Set selection1 = productDocument1.selection selection1.Search "CATGmoSearch.OpenBodyFeature,all" Dim Imax As Integer Imax = selection1.Count For I = 1 To Imax selection1.Item(I).Value.Name = "Geometrical Set." & CStr(I) & ".temp_rename" Next For I = 1 To Imax selection1.Item(I).Value.Name = "Geometrical Set." & CStr(I) Next End Sub Danke nochmals und Gruß Ausie-r-n
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 30. Nov. 2018 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
Folgendes Makro soll mir alle Körper, umbenennen, beginnend mit einer Zahl die ich eingebe. Code: Sub CATMain() Dim productDocument1 As PartDocument Set productDocument1 = CATIA.ActiveDocument Dim selection1 As selection Set selection1 = productDocument1.selection Dim Eingabe1 As String Eingabe1 = InputBox ("Bitte geben Sie eine Startnummer ein.", "Eingabe Startnummer", Eingabe1) selection1.Search "CATPrtSearch.BodyFeature,all" Dim Imax As Integer Imax = selection1.Count For I = 1 To Imax selection1.Item(I).Value.Name = CStr(Eingabe1) & ".temp_rename" Eingabe1= CStr(CInt(Eingabe1) + 1) Next For I = 1 To Imax selection1.Item(I).Value.Name = CStr(Eingabe1) Eingabe1= CStr(CInt(Eingabe1) + 1) Next End Sub
Funktioniert soweit. Problem ist, dass auch Körper umbenannt werden, die in einer boolschen Operation sind. Kann man diese ausnehmen? Auserdem startet er mit der eingegebenen Zahl + der Nummer aller gezählten Bodys. D.h. bei 30 körpern und 100 als Startnummer fängt er bei 130 an. Warum? Vielen Dank schon mal. [Diese Nachricht wurde von olleiCAD am 30. Nov. 2018 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: 30. Nov. 2018 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
Servus Du kannst mit InBooleanOperation prüfen, ob dieser in einer Boole'schen Operation verwendet wurde und entsprechend überspringen. Die Schleife zum umbenennen wird zweimal ausgeführt (um einen Namenskonflikt zu vermeiden). Dabei wird der Suffix aus der ersten Schleife in der zweiten als Startwert verwendet. Du könntest die eingegebene Zahl in einer separaten Variable speichern und als Startwert für beide Schleifen verwenden. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 30. Nov. 2018 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
Hab das ganze jetzt etwas anders gelöst. Bei deiner Variante weiß ich nicht wie ich die Startvariable, die ich bei beiden Schleifen verwende, erhöhen muss. Wenn die Erste Schleife fertig ist, dann ist diese Startvariable ja wieder um die Anzahl der Körper zu hoch... Könntest du mir deinen Vorschlag mal schreiben? Code: Sub CATMain() Dim productDocument1 As PartDocument Set productDocument1 = CATIA.ActiveDocument Dim selection1 As selection Set selection1 = productDocument1.selection Dim Eingabe1 As String Eingabe1 = InputBox ("Bitte geben Sie eine Startnummer ein.", "Eingabe Startnummer", Eingabe1) selection1.Search "CATPrtSearch.BodyFeature,all" Dim Imax As Integer Imax = selection1.Count For I = 1 To Imax If selection1.Item(I).Value.InBooleanOperation = false Then selection1.Item(I).Value.Name = CStr(Eingabe1) & ".temp_rename" Eingabe1= CStr(CInt(Eingabe1) + 1) Else Next End If Eingabe1 = CInt(Eingabe1) - selection1.Count For I = 1 To Imax If selection1.Item(I).Value.InBooleanOperation = false Then selection1.Item(I).Value.Name = CStr(Eingabe1) Eingabe1= CStr(CInt(Eingabe1) + 1) Else Next End If End Sub
hat auch soweit funktioniert. Nur das mit der If Bedingung klappt nicht. Hier wird kein Next erwartet... kann mir das bitte mal jemand näher erläutern was hier vorgeht? Wenn die InBooleanoperation true ist will ich I um 1 erhöhen und er soll die If Bedingung neu ausführen. Bitte um Verständnis, da ich totaler Neueinsteiger in der Makroprogrammierung bin 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: 30. Nov. 2018 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
Servus Hier ein Beispiel (ungetestet): Code: Sub CATMain() Dim oPartDocument As PartDocument Dim sInput As String Dim oselection As selection Dim Imax As Integer Dim iCounter as Integer Dim oBody as Body Set oPartDocument = CATIA.ActiveDocument Set oselection = oPartDocument.selection 'Startwert abfragen sInput = InputBox ("Bitte geben Sie eine Startnummer ein.", "Eingabe Startnummer", sInput) oselection.Search "CATPrtSearch.BodyFeature,all" Imax = oselection.Count 'Startwert übergeben iCounter = CInt(sInput) 'Bodies temporär umbenennen For I = 1 To Imax Set oBody = oselection.Item2(I).Value If oBody.InBooleanOperation = false Then oBody.Name = CStr(iCounter) & ".temp_rename" iCounter = iCounter + 1 End if Next 'Startwert übergeben iCounter = CInt(sInput) 'Bodies umbenennen For I = 1 To Imax Set oBody = oselection.Item2(I).Value If oBody.InBooleanOperation = false Then oBody.Name = CStr(iCounter) iCounter = iCounter + 1 End if Next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 30. Nov. 2018 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für ausie-r-n
|