|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | 
|  |  | 
|  | Qualität sichtbar gemacht, dank leistungsfähiger 3DViewStation Grafik, eine Pressemitteilung 
 | 
| Autor | Thema:  Makro Positionsnummern (1351 /  mal gelesen) | 
 | olleiCAD Mitglied
 
 
  
 
      Beiträge: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 17. Jan. 2019 09:16  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo zusammen, ich habe ein Marko erstellt, bei welchem ich eine Startnummer angebe ,z.B. 3, und dann schreibt mir das Makro vor jedem Körper im Part die Positionsnummern und den Körpernamen der vorher schon eingegeben wurde (Also Pos 2 Platte, Pos 3 Balken etc.) Wenn ich jetzt einen neuen Körper einfüge und neu durchnummeriere schreibt er logischerweise Pos 3 Pos 3 und dann den Körpernamen. Wie kann ich prüfen, dass wenn vorm Körper schon "Pos. X" steht, er nur das "Pos. X" ersetzen muss und nicht neu davor schreibt? Danke für eure Hilfe. 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: 17. Jan. 2019 10:24  <-- editieren / zitieren -->    Unities abgeben:           Nur für olleiCAD   
  Servus Kennst du den die ganzen Methoden für Zeichenketten?zB nur erste paar Zeichen auswerten, nach einem String suchen, ...
 Ja nachdem was du genau willst, könnten diese Ansätze funktionieren.
 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 18. Jan. 2019 08:23  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | bgrittmann Moderator
 Konstrukteur
 
         
 
      Beiträge: 12117Registriert: 30.11.2006
 CATIA V5R19 |    erstellt am: 18. Jan. 2019 09:01  <-- editieren / zitieren -->    Unities abgeben:           Nur für olleiCAD   
  Servus Wie wäre es mit if Left(oBody.Name,4) = "Pos. " then?ggf solltest du dich in die allgemeinen Grundlagen von VB(A) einarbeiten.
 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 18. Jan. 2019 11:10  <-- editieren / zitieren -->    Unities abgeben:            
  Typenkonflikt bei Mid zeigt er mir an, sollte doch eigentlich passen oder? Code:
 Dim PosAnfang As Integer
 Dim PosEnde As Integer
 Dim LaengePos As integer
 Dim Positionsnummer As Integer
 If body1.InBooleanOperation = false ThenBodyname = body1.name
 If Left(Bodyname,5) = "Pos. " then
 PosAnfang = inStr(1, Bodyname, " ", 1)
 PosEnde = inStr(6, Bodyname, " ", 1)
 LaengePos = PosEnde - PosAnfang
 Mid(Bodyname, PosAnfang, LaengePos) = CStr(Positionsnummer)
 else
 body1.Name= "Pos. " & CStr(Positionsnummer) & " " & Bodyname
 End If
 Positionsnummer = Positionsnummer + 1
 End if
 End If 
 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: 18. Jan. 2019 11:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für olleiCAD   
  Servus Kann sein das CATScript das Ersetzen mit Mid nicht unterstützt und nur einen String liefern kann.Zudem müsste dann immer CStr(Positionsnummer) und LaengePos gleich lang sein. (was passiert wenn eine Ziffer dazu kommt)
 Hier mein Idee dazu:
 Code:iFirstSpace = inStr(1, Bodyname, " ", 1)
 iSecondSpace = inStr(iFirstSpace + 1, Bodyname, " ", 1)
 Bodyname = left(Bodyname,iFirstSpace) & CStr(Positionsnummer) & Mid(Bodyname,iSecondSpace)'EDIT: oder
 Bodyname = "Pos. " & CStr(Positionsnummer) & Mid(Bodyname,iSecondSpace)
 
 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: 62Registriert: 24.04.2018
 Catia V5 R32 SP2 | Windows 10 Pro |    erstellt am: 18. Jan. 2019 12:59  <-- editieren / zitieren -->    Unities abgeben:            |