Hot News:

Mit Unterstützung durch:

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

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 umbenennen InstanceName (1853 / 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: 31. Mrz. 2017 12:14    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


Fehler_InstanceName.png

 
Hallo,
ich bins mal wieder und hab ein Problem in VBA.
Habe versucht ein Makro zu schreiben, welches den InstanzeName umbenennt.
Hierfür gibt es ein Texteingabefenster, in das der Test, der ersetzt werden soll eingegeben wird Eingabe zB. "XXXX", dann erscheint ein weiteres Eingabefenster in der der neue Text eingegeben wird (Bsp.Eingabe: "YYYY")und nun soll bei allen InstanceName eines Produkts XXXX mit YYYY ersetzt werden.

Ich habe das gleiche Makro zum Umbenenne der PartNumber geschrieben, dort funktioniert es einwandfrei(Makro PartNumber siehe unten).Dieses habe ich hergenommen und will es so abändern, das anstatt der PartNumber der InstanceName geändert wird.

Makro zum Umbenennen der PartNumber (funktioniert einwandfrei):                                                       
Sub traverse(Prod, origstr, newstr)
  set refp = Prod.ReferenceProduct
  if instr(refp.PartNumber, origstr) then
    newpnum = Replace(refp.PartNumber, origstr, newstr)
    refp.PartNumber = newpnum
  end if
  Set prods = Prod.Products
  pc = prods.Count
  If pc > 0 then
    For i = 1 to pc
      traverse prods.Item(i), origstr, newstr
    Next
  End If
End Sub

Sub CATMain()
  Set actProd = CATIA.ActiveDocument.Product
  origstr = Inputbox ("Eingeben welcher Name oder Nummer ersetzt werden soll!!! ", "Suche und Ersetze (Suche)")
  newstr = Inputbox ("Zu ersetzenden Namen oder Nummer eingeben", "Suche und Ersetze (Ersetze)")

  traverse actProd, origstr, newstr

End Sub

Abgeändertes Makro zum Umbenennen des InstanceNames:
                                                       
Sub traverse(Prod, origstr, newstr)
  set refp = Prod.ReferenceProduct
  if instr(refp.InstanceName, origstr) then
    newpnum = Replace(refp.InstanceName, origstr, newstr)
    refp.InstanceName = newpnum
  end if
  Set prods = Prod.Products
  pc = prods.Count
  If pc > 0 then
    For i = 1 to pc
      traverse prods.Item(i), origstr, newstr
    Next
  End If
End Sub

Sub CATMain()
  Set actProd = CATIA.ActiveDocument.Product
  origstr = Inputbox ("Eingeben welcher Name oder Nummer ersetzt werden soll!!! ", "Suche und Ersetze (Suche)")
  newstr = Inputbox ("Zu ersetzenden Namen oder Nummer eingeben", "Suche und Ersetze (Ersetze)")

  traverse actProd, origstr, newstr

End Sub

Leider funktioniert das nicht. Die beiden Eingabefelder erscheinen, aber dann kommt Fehlermeldung (siehe Anhang).
Kann mir bitte nochmal jemand helfen?

Gruß Svenja


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: 31. Mrz. 2017 12:27    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,

setze den Workmode der Produkte vor dem Zugriff auf die Instanzen auf 'Default', zB:

Code:

oADP.ApplyWorkMode DEFAULT_MODE                  'set work mode to expose P/N


wobei vorher
Code:

Dim oADP As Product


definiert wurde.

Zur weiteren Inspiration kannst auch die VBA-Makros
http://catia2.cad.de/index.php/de/downloads/skripts-applikationen/398-instanceequalname-instanzen-an-produktnamen-angleichen
http://catia2.cad.de/index.php/de/downloads/skripts-applikationen/446-insteqnameonelevel-instanzen-der-kinder-produkte-angleichen
studieren.

Tschau,
Joe

PS: Das scheint bei Dir aber eher Catscript zu sein und nicht VBA!

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

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: 31. Mrz. 2017 12: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

Servus Svenja
Bitte Systeminfo ergänzen. Bitte Code in entsprechenden Tags posten.
Die Eigenschaft InstanceName gibt es nicht, versuch mal nur Name.
In diesem Fall musst du ggf sogar nichtmal mit Prod.ReferenceProduct auf das Urspungselment wecheln, Prod ist in diesem Fall ja schon die Instance.
Dazu bitte auch mal in die Doku (V5Automation.chm) schauen.
Wenn du den Instance-Name an die PartNumber angleichen willst, schau dir mal dieses Makro an.

Gruß
Bernd

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

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 12:37    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


Fehler_InstanceName2.png

 
Oh stimmt, natürlich ist das CatiaSkript.

Habs hinzugefügt, allerdings ohne Erfolg!

Hier das Skript (und im Anhang die Fehlermeldung):
Sub traverse(Prod, origstr, newstr)
  set refp = Prod.ReferenceProduct

Dim oADP As Product
oADP.ApplyWorkMode DEFAULT_MODE

  if instr(refp.InstanceName, origstr) then
    newpnum = Replace(refp.InstanceName, origstr, newstr)
    refp.InstanceName = newpnum
  end if
  Set prods = Prod.Products
  pc = prods.Count
  If pc > 0 then
    For i = 1 to pc
      traverse prods.Item(i), origstr, newstr
    Next
  End If
End Sub

Sub CATMain()
  Set actProd = CATIA.ActiveDocument.Product
  origstr = Inputbox ("Eingeben welcher Name oder Nummer ersetzt werden soll!!! ", "Suche und Ersetze (Suche)")
  newstr = Inputbox ("Zu ersetzenden Namen oder Nummer eingeben", "Suche und Ersetze (Ersetze)")

  traverse actProd, origstr, newstr

End Sub


Kannst du mir bitte nochmal weiterhelfen

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: 31. Mrz. 2017 12:42    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,

ich hab die zwei Code-Zeilen bei einem eigenen Makro rauskopiert.
Die musst natürlich an Deine vorgegebenen Verhältnisse angleichen;
spetiell:
Statt oADP musst den bei Dir für das bearbeitete Produkt verwendeten Variablennamen einsetzen.
Die Dim (von mir) ist dann überflüssig.

Tschau,
Joe

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

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