Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Brauche Hilfe Makro umbenennen Geo Sets im Part

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
Autor Thema:  Brauche Hilfe Makro umbenennen Geo Sets im Part (4399 mal gelesen)
ausie-r-n
Mitglied



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

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 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 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


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 11. Feb. 2010 08:30    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 ausie-r-n 10 Unities + Antwort hilfreich

Hallo,
du kannst mit dem Makro-Rekorder (in diesem Fall) per Aufzeichnung folgendes erhaten:

selection1.Search "CATGmoSearch.OpenBodyFeature,all"

Bitte fülle noch deine Systeminfo aus.

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

"Phase 2 in CATIA V5"  - www.tobeplus.de

        tberger@tobeplus.de

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

DanielFr.
Moderator
Manager


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

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 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 ausie-r-n 10 Unities + Antwort hilfreich

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



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

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 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 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



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

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 30. Nov. 2018 08:29    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 ausie-r-n 10 Unities + Antwort hilfreich


Baum.jpg

 
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


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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Nov. 2018 09:05    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 ausie-r-n 10 Unities + Antwort hilfreich

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



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

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 30. Nov. 2018 10:40    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 ausie-r-n 10 Unities + Antwort hilfreich

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


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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Nov. 2018 10: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 ausie-r-n 10 Unities + Antwort hilfreich

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



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

Beiträge: 57
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 30. Nov. 2018 11:09    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 ausie-r-n 10 Unities + Antwort hilfreich

Klasse läuft, vielen herzlichen Dank!

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