Autor
|
Thema: Makro Positionsnummern (975 / mal gelesen)
|
olleiCAD Mitglied
Beiträge: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | 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: 11780 Registriert: 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: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 18. Jan. 2019 08:23 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 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: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | 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 IntegerIf body1.InBooleanOperation = false Then Bodyname = 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: 11780 Registriert: 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: 57 Registriert: 24.04.2018 Catia V5 R29 SP3 | Windows 10 Pro
|
erstellt am: 18. Jan. 2019 12:59 <-- editieren / zitieren --> Unities abgeben:
|