Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Instance Name umbenennen

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:  Makro Instance Name umbenennen (1568 / mal gelesen)
Langer11
Mitglied



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

Beiträge: 31
Registriert: 30.07.2015

Catia V5 R29
VBA

erstellt am: 30. Mrz. 2017 14:43    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

Hi,
ich brauch mal wieder eure Hilfe,
und zwar liegt mir ein Macro vor, das automatisch in einem Produkt alle InstanceNames abändert in die PartNumber.
Nun möchte ich dieses Macro erweitern, das er ausschließlich die InstanceNames innerhalb eines Produkts umbenennt, die eine Nummer enthalten, wo man über ein Eingabefenster eingibt. Alle anderen InstanceNames sollen den ursprünglichen Namen behalten.

Leider erscheint eine Fehlermeldung.

Hier ist mein abgeändertes Makro (alles was ich ergänzt haben, ist fett gedruckt!-->hier muss irgendwo der Fehler liegen):

SET REFP = PROD.REFERENCECOMPONENT
NEWSTR = INPUTBOX ("ZU ERSETZENDEN NAME/NUMMER IM INSTANCENAME", "SUCHE UND ERSETZE (ERSETZE)")


Sub CATMain()

Set oMainProduct = CATIA.ActiveDocument.product
Dim oMainProducts As Products
Set oMainproducts = oMainProduct.Products

Umbenennen oMainProducts

End Sub

Sub Umbenennen(oProducts As Products)

Dim oPartName As String
Dim oName As String
Dim i As Long

IF INSTR(REFP.INSTANCENAME, ORIGSTR) THEN

For x = 1 to oProducts.Count

Set oInstance = oProducts.Item(x)
oNumber = oInstance.PartNumber
oName = oInstance.Name

i=0

Do

On Error Resume Next

i = i+1

If i>5000 Then  ' Zahl soll angepasst werden
Exit Do
end If

oInstance.Name = oNumber & "." & i

If Err.Number = 0 Then

Umbenennen oProducts.Item(x).ReferenceProduct.Products
Exit Do
ElseIf Err.Number = -2147467259 Then
Err.Clear
Err.Number = 0
Else
Exit Do
End If
Loop
If oInstance.Products.Count > 0 Then
Umbenennen oInstance.Products
End If
Next


END IF

End Sub

Ich hoffe mir kann jemand weiterhelfen.

Gruß
Svenja

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. Mrz. 2017 16:23    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 Langer11 10 Unities + Antwort hilfreich

Servus Svenja

Wenn Code ausgeführt werden soll muss dieser auch innerhalb einer Routine/Funktion sein.
CATMain dient damit als Einstiegspunkt für den Ablauf.
Willst du nun "nur" einen Namensteil ersetzen oder wie in deinem gepostetet Makro auch die Instanzen neu durchnummerieren?
Das Makro ist rekursiv aufgebaut, hangelt sich durch alle Ebenen des Baums hinunter. Ist das von dir so gewollt?
Ich vermute dass dir noch ein paar Grundlagen zu VB(A) fehlen. ggf mal noch eine Grundlagenschulung machen/durcharbeiten.

Gruß
Bernd

PS: Bitte Code in entsprechenden Tags posten.

------------------
Warum einfach, wenn es auch kompliziert geht.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 30. Mrz. 2017 18:56    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 Langer11 10 Unities + Antwort hilfreich

Hi Svenja,
Zitat:
ist fett gedruckt!

Wirklich?
Zitat:
Leider erscheint eine Fehlermeldung.

... die da lautet?
Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Langer11
Mitglied



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

Beiträge: 31
Registriert: 30.07.2015

Catia V5 R29
VBA

erstellt am: 31. Mrz. 2017 08:11    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


Fehlerverweis_InstanceName.png

 
Hallo Zusammen,

@Bernd:
ja ich bin leider noch nicht ganz fit in VB(A), werde demnächst aber noch einen Kurs besuche.
Stimmt ich habe versehentlich die ersten beiden Zeilen ausserhalb der Routine geschrieben, da wird natürlich nichts abgearbeitet....habs geändert, Fehlermeldung erscheint dennoch.
ich möchte bei allen InstanceNamen, die beispielsweise den Text XXXXX enthalten den kompletten InstanceName mit der PartNumber ersetzen.

@Joe:
ich korrigiere, ist nicht fett gedruckt, sondern in GROßBUCHSTABEN geschrieben!
Fehlermeldung ist im Anhang.


Hier nochmal der momentane Makro-Code:


Sub CATMain()

SET REFP = PROD.REFERENCECOMPONENT
NEWSTR = INPUTBOX ("ZU ERSETZENDEN NAME/NUMMER IM INSTANCENAME", "SUCHE UND ERSETZE (ERSETZE)")
Set oMainProduct = CATIA.ActiveDocument.product

Dim oMainProducts As Products
Set oMainproducts = oMainProduct.Products

Umbenennen oMainProducts

End Sub

Sub Umbenennen(oProducts As Products)

Dim oPartName As String
Dim oName As String
Dim i As Long

IF INSTR(REFP.INSTANCENAME, ORIGSTR) THEN

For x = 1 to oProducts.Count

Set oInstance = oProducts.Item(x)
oNumber = oInstance.PartNumber
oName = oInstance.Name

i=0

Do

On Error Resume Next

i = i+1

If i>5000 Then  ' Zahl soll angepasst werden
Exit Do
end If
oInstance.Name = oNumber & "." & i
If Err.Number = 0 Then

Umbenennen oProducts.Item(x).ReferenceProduct.Products
Exit Do
ElseIf Err.Number = -2147467259 Then
Err.Clear
Err.Number = 0
Else
Exit Do
End If
Loop
If oInstance.Products.Count > 0 Then
Umbenennen oInstance.Products
End If
Next
END IF

End Sub

Ich vermute das mein Zugriff auf den InstanceName falsch ist.
(set refp = Prod.ReferenceComponent
und if instr(refp.InstanceName, origstr))


Ich hoffe Ihr könnt mir helfen.
Bestimmt ist es nur ein kleiner Leichtsinnsfehler, aber ich komm grad einfach nicht drauf.

Vielen Lieben Dank schon mal im voraus für eure Hilfe.

Gruß Svenja

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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 31. Mrz. 2017 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 Langer11 10 Unities + Antwort hilfreich

Hallo,

also von der Struktur her müsste es wohl eher so sein (ungetestet).
IF INSTR(oInstance.Name, NEWSTR) THEN
  i = i +1
  oInstance.Name = oNumber & "." & i
END IF

Was du mit der Zeile:
SET REFP = PROD.REFERENCECOMPONENT
überhaupt willst verstehe ich nicht. Zumal es die erste Zeile in CATMain ist. Wo kommt denn da das PROD her? - darum auch die Fehlermeldung. Mal abgesehen davon das es meines Wissens nach kein REFERENCECOMPONENT gibt, vielleicht meinst du ja ReferenceProduct. Würde an der Stelle aber auch keinen Sinn machen.

Gruß
Randle

[Diese Nachricht wurde von Randle am 31. Mrz. 2017 editiert.]

[Diese Nachricht wurde von Randle am 31. Mrz. 2017 editiert.]

[Diese Nachricht wurde von Randle am 31. Mrz. 2017 editiert.]

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