Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro zum automatischen umbenennen von Datei- und Partnamen

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
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
Autor Thema:   Makro zum automatischen umbenennen von Datei- und Partnamen (11097 mal gelesen)
Devian82
Mitglied


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

Beiträge: 3
Registriert: 27.03.2011

erstellt am: 03. Nov. 2011 19: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

Ich suche ein Makro welches bei großen Baugruppen den Dateinamen der dort eingesetzten Bauteile automatisch in den in Catia verwendetet Part-Namen umschreibt. Vorzugsweise inklusive Instance-Namen... Manuell ist das bei hunderten von Parts fast schon Folter! Gibts da ne Lösung?

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 29. Jun. 2012 21:28    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 Devian82 10 Unities + Antwort hilfreich

Ich wüsste da schon was. Aber dafür müsste ich wissen ob es bei wirklich alle Parts passieren muss!

Wenn ja, stelle ich es mir recht einfach vor...aber theorie und Praxis ist ja so ne sache...

Brauchst du es noch?

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 02. Jul. 2012 15:25    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 Devian82 10 Unities + Antwort hilfreich

Warum antwortet Du, vor allem auch noch mit Fragen und überhaupt nichts konkretem, außer "man könnte... - ich stelle es mir einfach vor..." auf Ein Thema vom 03. Nov. 2011 ?!?

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

[Diese Nachricht wurde von HoBLila am 02. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 02. Jul. 2012 17: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 Nur für Devian82 10 Unities + Antwort hilfreich

Weil ich ein ähnliches Problem hatte. Da wollte wissen ob es noch aktuell ist, wenn nein, hat er/sie ja evtl bereits schon eine Lösung. Wenn ja, dann würde ich mich damit auseinander setzen.
Da ich aber keine Antwort bekommen habe, habe ich micht damit auseinander gesetzt.

hier den code:

Code:

SUB CATMain()
DIM acDoc
DIM acProd
DIM tmpString
DIM FileName
DIM  FileSeparator
FileSeparator = CATIA.FileSystem. FileSeparator

SET acDoc = CATIA.ActiveDocument
SET acProd = acDoc.Product

acProd.ApplyWorkMode  DESIGN_MODE

'SETS THE PartNumber = FileName FOR ALL DOCUMENTS OPEN IN CATIA.
'WILL CRASH IF DRWAING ECT ARE OPEN!
FOR EACH oDoc IN CATIA.Documents
  tmp = SPLIT(oDoc.FullName, FileSeparator)
  tmpString = tmp(UBOUND(tmp))
  tmp = SPLIT(tmpString,".")
  FileName = tmp(0)
  oDoc.Product.PartNumber = FileName
NEXT
InstanceName acProd
WalkThroughTree acProd
END SUB
'-------------------------------------

'-------------------------------------
SUB WalkThroughTree(oParent)
DIM iProduct
DIM oChild
FOR iProduct = 1 TO oParent.Products.Count
  SET oChild = oParent.Products.Item(iProduct)
  InstanceName oChild.ReferenceProduct
  WalkThroughTree oChild.ReferenceProduct
NEXT
END SUB
'-------------------------------------

'-------------------------------------
SUB InstanceName (oParent)
Set oDict = CreateObject("Scripting.Dictionary")
ON ERROR RESUME NEXT
DIM iProduct
DIM oItemToRename
DIM ItemPartNumber
FOR EACH oItemToRename IN oParent.Products
  ItemPartNumber = oItemToRename.PartNumber
  If oDict.Exists(ItemPartNumber) Then
  oDict.Item(ItemPartNumber) =oDict.Item(ItemPartNumber) +1
  Else
  oDict.Add ItemPartNumber,  1
  End If
  'rename Parts
  oItemToRename.Name = ItemPartNumber & "--tmpStringToStopERRORS" & oDict.Item(ItemPartNumber)
NEXT
oDict.RemoveAll

FOR EACH oItemToRename IN oParent.Products
  ItemPartNumber = oItemToRename.PartNumber
  If oDict.Exists(ItemPartNumber) Then
  oDict.Item(ItemPartNumber) =oDict.Item(ItemPartNumber) +1
  Else
  oDict.Add ItemPartNumber,  1
  End If
  'rename Parts
  oItemToRename.Name = ItemPartNumber & "." & oDict.Item(ItemPartNumber)
NEXT
oDict.RemoveAll
END SUB
'-------------------------------------



Ich gehe davon aus das man NUR das dokument auf hat, welches man auch bearbeiten möchte. Dieser muss auch ein CATProdukt sein.

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 02. Jul. 2012 17:01    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 Devian82 10 Unities + Antwort hilfreich


start.jpg


result.jpg

 
Hier nochmal die Bilder. Bevor das Makro durch gelaufen ist und danach.

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 02. Jul. 2012 19: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 Nur für Devian82 10 Unities + Antwort hilfreich

Hallo DasDon,

du hast die Aufgabenstellung verdreht. 

Die Partdateinamen sollen mit den Namen im Produkt abgeglichen werden.
Zusätzlich sollten die Instazen auch abgeglichen werden.

Dies macht auch vom Handling mehr Sinn.

Mit deiner Variante müsste mann bei geschlossener Catiasitzung die Dateinamen umbenennen.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!      

[Diese Nachricht wurde von moppesle am 02. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 02. Jul. 2012 20:17    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 Devian82 10 Unities + Antwort hilfreich

Oh OK. Aber den Sinn ergibt sich bei mir nicht. Warum, wenn ein und das selber Part hundert mal  verbaut ist, will ich es auch hundert mal abgespeichert haben? Das macht doch den Effekt von wieder verwendete Teile zunichte. Wenn ich hundert schrauben oder nieten oder sonst was verbaue, dann hätte ich hundert mal das selbe Part unter anderem NAmen abgespeichert. Oder verstehe ich die Aufgabenstellung immer noch nicht  

Zitat:
Mit deiner Variante müsste mann bei geschlossener Catiasitzung die Dateinamen umbenennen.

Warum. Es funktioniert auch Prima wenn CATIA offen ist. Und ich glaube auch nur wenn ein CATIAsitzung offen ist?

[Diese Nachricht wurde von DasDon am 02. Jul. 2012 editiert.]

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 02. Jul. 2012 21:01    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 Devian82 10 Unities + Antwort hilfreich

Hallo DasDon,

Zitat:
Warum, wenn ein und das selber Part hundert mal  verbaut ist, will ich es auch hundert mal abgespeichert haben?

Dem ist nicht so.
Wenn ein Part 100 mal im Produkt vorahnden ist, gibt es 100 Instanzen, die das Produkt händelt. Das Part gibt es aber nur 1mal auf der Festlatte.
Änderst du den Namen des Part im Produkt ändern sich alle 99 auch mit.
Nun ist der Name der Datei auf der Festplatte noch nicht umbenannt.
Diese Datei gilt es umzubenennen. (Part und Produkt)

In der Praxis ist es so, das die Part und Produktnamen dem Namen der Datei (auf der Festplatte)idealer Weise gleich sein sollten.


Zitat:
Warum. Es funktioniert auch Prima wenn CATIA offen ist. Und ich glaube auch nur wenn ein CATIAsitzung offen ist?

Bei deiner Variante funktioniert das deswegen, weil du nicht den Dateinamen auf der Festplatte änderst, sondern der Partname im Produkt.
Versuche doch mal währen dein Produkte und Parts geladen sind eine Datei auf der Festplatte umzubenennen.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 02. Jul. 2012 23: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 Nur für Devian82 10 Unities + Antwort hilfreich

Hallo,

Zitat:
Wenn ein Part 100 mal im Produkt vorahnden ist, gibt es 100 Instanzen, die das Produkt händelt. Das Part gibt es aber nur 1mal auf der Festlatte.
Änderst du den Namen des Part im Produkt ändern sich alle 99 auch mit.

Das weiss ich ja, und ist genau das was ich meinte. Aber warum ist in der Aufgabenstelle hiervon die Rede:

Zitat:
Vorzugsweise inklusive Instance-Namen

Das beduetet für mich, dass die Dateiname auch den Product.Name haben sollten. Das wären 100 Parts die gespeichert werden.

Code:
Mit deiner Variante müsste man bei geschlossener Catiasitzung die Dateinamen umbenennen.

Da ich aber die Aufgabenstellung falsch verstanden habe, funktioniert meine Variante mit offener CATIASitzung.

Da die Dateinamen ja nicht korrekt sind, müssen die Modelle ja neu abgespeichert werden. Sprich SaveAs. Das kann ich auch mit offener  CATIAsitzung machen. Ich stelle mir vor, dass man durch den Specification Tree durch "Lopped" bist ein Element keine Kinder mehr hat. Das speichert man dann mit saveAs als Product.PartNumber.CATPart ab. Danach nimmt man das drüber liegende Assy usw. Bottom Up ist die Lösung. Somit werden alle Links mit gepeichert.

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 08:17    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 Devian82 10 Unities + Antwort hilfreich


03-07-2012_01.png


03-07-2012_02.png


03-07-2012_03.png

 
Hallo DasDon,
ich glaube wir reden hier aneinander vorbei.

Zitat:
Vorzugsweise inklusive Instance-Namen

Die Instance die vom Produkt gehändelt wird. Siehe Bilder

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 10:24    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 Devian82 10 Unities + Antwort hilfreich


start.jpg


finished.jpg

 
So, nach dem durcheinander müsste das die Lösung sein.    
Es bennent die Dateien nach der PartNumber um und setzt die InsanceName = PartNumber.

Code:
Opps da war noch ein fehler drinne...bin gerade am korrigieren.

Ach und @moppesle: könntest du mir sagen wie ich CODE fotmatieren kann? Das kann ja keiner Lesen. Warum sehe ich die Tabs nicht?

Gruß,

[Diese Nachricht wurde von DasDon am 03. Jul. 2012 editiert.]

[Diese Nachricht wurde von DasDon am 03. Jul. 2012 editiert.]

[Diese Nachricht wurde von DasDon am 03. Jul. 2012 editiert.]

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 10:38    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 Devian82 10 Unities + Antwort hilfreich

Jo das ist es,

könnte mann das auch so gestalten, das die Dateien in dem selben Verzeichnis wie die Quelldaten gespeichert werden und die alten automatisch gelöscht werden?

Also, ich habe "Part1".
"Part1" wird zu "TestPart".
Nun soll "Part1" auf der Festplatte nicht mehr im Quellverzeichnis auftauchen.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 11:44    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 Devian82 10 Unities + Antwort hilfreich

Das müsste es nun sein:

Felher mit Instance beim Product korrigiert und es ersetzt (je nach wahl) die orignal Dateien.

FILENAME WIRD ZUM PARTNUMBER

Code:

MACRO_NAME = "ReNameFileNameAsPartNumber"
MACRO_VERS = "V1.1"


'VER: V1.1 CATCHES DEACTIVATED PRODUCTS AND OPEN DOCUMENTS OTHER THAN CATPRODUCT AND CATPART
'DESC: RENAMES THE THE FILE NAMES OF CATPRODUCTS AND CATPARTS TO THAT OF THE PARTNUMBER
'DEPENDING ON THE ANSWER GIVEN THE ORIGINAL FILES WILL BE DELETED
'PREP: ALL DOCUMENTS MUST BE CLOSED APART FROM THE DOCUMENT TO WORK ON
'LANG: CATVBS
'DATE: 03/07/12

'CREA: DasDon
'-------------------------------------------

DIM answer

'-------------------------------------------
SUB CATMain()
DIM acDoc
DIM acProd
SET acDoc = CATIA.ActiveDocument
SET acProd = acDoc.Product

acProd.ApplyWorkMode  DESIGN_MODE

answer = MSGBOX("do you wish to delete the original file?",36,"DELETION")

WalkThroughTree acProd
CATIA.DisplayFileAlerts = true
END_MESSAGE
END SUB
'-------------------------------------

'-------------------------------------
SUB WalkThroughTree(oParent)
DIM iProduct
DIM oChild

FOR iProduct = 1 TO oParent.Products.Count
SET oChild = oParent.Products.Item(iProduct)
IF oChild.Parameters.Count <> 0 THEN
IF oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true" THEN
'--------------------
'ADDS PARTNUMBER AND OLD INSTANCE NUMBER AS NEW INSTANCENAME
tmp = SPLIT(oChild.Name,".")
oChild.Name = oChild.PartNumber & "." & tmp(UBOUND(tmp))
'--------------------
'SENDS CHILDREN WITH NO CHILDREN TO SAVE AND CHILDREN WITH CHILDERN TO WALTHROUGH (BOTTOM UP)
IF oChild.Products.Count = 0 THEN
SaveAsPartNumber oChild.ReferenceProduct
ELSE
WalkThroughTree oChild.ReferenceProduct
END IF
END IF
END IF
NEXT
'--------------------
'SENDS THE PRODUCT TO SAVE AFTER ALL CHILDREN HAVE BEEN SAVED
IF oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true" THEN
IF oParent.Products.Count > 0 THEN
SaveAsPartNumber oParent
END IF
END IF
END SUB
'-------------------------------------

'-------------------------------------
SUB SaveAsPartNumber (oProd)
DIM objToDelete
DIM orginalPath
DIM oDoc
CATIA.DisplayFileAlerts = false
FOR EACH oDoc IN CATIA.Documents
IF TYPENAME(oDoc) = "ProductDocument" OR TYPENAME(oDoc) = "PartDocument" THEN
IF oDoc.Product.PartNumber = oProd.PartNumber THEN
objToDelete = oDoc.FullName
orginalPath = oDoc.Path & "\"
IF oProd.HasAMasterShapeRepresentation THEN 'A PART HAS A MASTERSHAPEREPREASENTATION
IF CATIA.FileSystem.FileExists(orginalPath & oProd.PartNumber & ".CATPart") = FALSE THEN
oDoc.SaveAs(orginalPath & oProd.PartNumber & ".CATPart")
IF answer = 6 THEN CATIA.FileSystem.DeleteFile(objToDelete)
END IF
ELSE
IF CATIA.FileSystem.FileExists(orginalPath & oProd.PartNumber & ".CATProduct") = FALSE THEN
oDoc.SaveAs(orginalPath & oProd.PartNumber & ".CATProduct")
IF answer = 6 THEN CATIA.FileSystem.DeleteFile(objToDelete)
END IF
END IF
END IF
END IF
NEXT
END SUB
'-------------------------------------
'----------------------------------------
SUB END_MESSAGE()
MSGBOX MACRO_NAME & " " & MACRO_VERS & " finished." _
& vbLF & "Please check results" & vbLF & _
"-----------------------------------" & vbLF & _
"-----------------------------------" & vbLF & _
"macro written by:" & vbLF & _
"DasDon" , vbyes, MACRO_NAME & " " & MACRO_VERS
END SUB
'----------------------------------------


UND HIER WÄRE DER ANDERE:
PARTNUMBER WIRD ZUM FILENAME

Code:
MACRO_NAME = "ReNamePartNumberAsFileName"
MACRO_VERS = "V1.0"

'VER: "V1.0
'DESC: RENAMES THE PARTNUMBER OF CATPRODUCTS AND CATPARTS TO THAT OF THE FILENAME
'DEPENSING ON THE ANSWER GIVEN THE ORIGINAL FILES WILL BE DELETED
'PREP: ALL DOCUMENTS MUST BE CLOSED APART FROM THE DOCUMENT TO WORK ON
'LANG: CATVBS
'DATE: 03/07/12

'CREA: DasDon
'-------------------------------------------

'-------------------------------------------
SUB CATMain()
DIM acDoc
DIM acProd
DIM tmpString
DIM FileName
DIM  FileSeparator
FileSeparator = CATIA.FileSystem. FileSeparator

SET acDoc = CATIA.ActiveDocument
SET acProd = acDoc.Product

acProd.ApplyWorkMode  DESIGN_MODE

'SETS THE PartNumber = FileName FOR ALL DOCUMENTS OPEN IN CATIA.
'WILL CRASH IF DRWAING ECT ARE OPEN!
FOR EACH oDoc IN CATIA.Documents
If TypeName(oDoc) = "PartDocument" Or TypeName(oDoc) = "ProductDocument" Then
tmp = SPLIT(oDoc.FullName, FileSeparator)
tmpString = tmp(UBOUND(tmp))
tmp = SPLIT(tmpString,".")
FileName = tmp(0)
oDoc.Product.PartNumber = FileName
End If
NEXT
InstanceName acProd
WalkThroughTree acProd
END_MESSAGE
END SUB
'-------------------------------------

'-------------------------------------
SUB WalkThroughTree(oParent)
DIM iProduct
DIM oChild
FOR iProduct = 1 TO oParent.Products.Count
SET oChild = oParent.Products.Item(iProduct)
InstanceName oChild.ReferenceProduct
WalkThroughTree oChild.ReferenceProduct
NEXT
END SUB
'-------------------------------------

'-------------------------------------
SUB InstanceName (oParent)
Set oDict = CreateObject("Scripting.Dictionary")
ON ERROR RESUME NEXT
DIM iProduct
DIM oItemToRename
DIM ItemPartNumber
FOR EACH oItemToRename IN oParent.Products
ItemPartNumber = oItemToRename.PartNumber
If oDict.Exists(ItemPartNumber) Then
oDict.Item(ItemPartNumber) =oDict.Item(ItemPartNumber) +1
Else
oDict.Add ItemPartNumber,  1
End If
'rename Parts
oItemToRename.Name = ItemPartNumber & "--tmpStringToStopERRORS" & oDict.Item(ItemPartNumber)
NEXT
oDict.RemoveAll

FOR EACH oItemToRename IN oParent.Products
ItemPartNumber = oItemToRename.PartNumber
If oDict.Exists(ItemPartNumber) Then
oDict.Item(ItemPartNumber) =oDict.Item(ItemPartNumber) +1
Else
oDict.Add ItemPartNumber,  1
End If
'rename Parts
oItemToRename.Name = ItemPartNumber & "." & oDict.Item(ItemPartNumber)
NEXT
oDict.RemoveAll
END SUB
'-------------------------------------

'----------------------------------------
SUB END_MESSAGE()
MSGBOX MACRO_NAME & " " & MACRO_VERS & " finished." _
& vbLF & "Please check results" & vbLF & _
"-----------------------------------" & vbLF & _
"-----------------------------------" & vbLF & _
"macro written by:" & vbLF & _
"DasDon" , vbyes, MACRO_NAME & " " & MACRO_VERS
END SUB
'----------------------------------------


[Diese Nachricht wurde von DasDon am 25. Apr. 2013 editiert.]

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 12:41    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 Devian82 10 Unities + Antwort hilfreich


03-07-2012_4.png

 
Hallo DasDon,

super tolle Leistung.
Ich wäre froh das auch so schnell zu Programmieren.

Habe aber noch ein Problem gefunden. Wenn ich das Makro "ReNameFileNameAsPartNumber"mit einen Testprodukt ausführe Funzt es einwandfrei.
Nun habe ich mal ein Arbeitsprodukt genommen und ich bekomme diese Fehlermeldung. siehe Bild

Wo könnte das Problem liegen? Kann dir das Produkt per PM zukommen lassen wenn deas was hift.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!        

[Diese Nachricht wurde von moppesle am 03. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 13: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 Nur für Devian82 10 Unities + Antwort hilfreich

Hallo Uwe,

Danke erstmals für die Unterstützung.

ZIELE 66: FOR EACH oDoc IN CATIA.Documents
ZIELE 67: IF oDoc.Product.PartNumber = oProd.PartNumber THEN

In Zeile 66 wird eine Schleife erzeugt der alle Offene(geladene) Dokumente durchläuft und in Ziele 67 dann die PartNumber des Dokuments (oDoc) mit dem des oProd (ein object aus dem Strukturbaum) vergleicht. Stimmen sie NICHT mit einander ein, so muss diese Doukument dann mit dem PartNumber Abgespeichert werden (sofern nicht vorhanden; was PartNumber = FileName entspricht).

Ist jedoch ein Dokument wie zB ein CATDrawing oder ähliches im CATIA Session geöffnet gibt es in Zeile 67 einen Fehler. CATDrawings haben keinen PartNumber (glaube ich zumindest). Das Makro stürtzt beim Versuch es auszulesen ab.
Des weiteren könnte es darin liegen, dass products (CATParts oder CATProducts) im ProduktBaum deaktiviert sind. Die Fehlerquelle habe ich auch nicht aus gegrentzt.

Schaue mal bitte nach ob das stimmt?


UPDATE
Ich habe oben den Code angepasst damit auch andere Dokumente offen sein können. Das könnte dir vielleicht schon helfen. Wie ich aber die Fehlerquelle behebe "oChild.PartNumber" wenn oChild deaktiviert ist, das weiß ich noch nicht.

Gruß

[Diese Nachricht wurde von DasDon am 03. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 15:12    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 Devian82 10 Unities + Antwort hilfreich

Hallo Uwe,

so nun müsste in der Version 1.1 die Fehler der offene Dokumente behoben sein und die des deaktivierten product.
ICh hoffe es läuft jetzt für dich.
Falls nicht, noch mal melden.
Gruß,

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 15:16    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 Devian82 10 Unities + Antwort hilfreich

Hallo DasDon,

Zitat:
Ist jedoch ein Dokument wie zB ein CATDrawing oder ähliches im CATIA Session geöffnet gibt es in Zeile 67 einen Fehler

Drawing hatte ich keines geöffnet.

Das geänderte Makro läuft nun in einem Produkt mit Parts.
Bei eine Struktur mit meheren Produkten und Unterprodukten bekomme ich in Linie 43 "The Method Name is failed" eine Fehlermeldung.

Edit: Habe V1.1 getestet gleiche Fehlermeldung nur in Linie 46

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!        

[Diese Nachricht wurde von moppesle am 03. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 16:19    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 Devian82 10 Unities + Antwort hilfreich

Code:
Edit: Habe V1.1 getestet gleiche Fehlermeldung nur in Linie 46

Hallo Uwe,

wenn ich makro V1.1 kopiere aus dem Forum und MACRO_NAME als erste Linie setze, dann ist bei mir Linie 46 = '--------------------
Was sicherlich keine Probleme macht.

Ich vermute es müsste wie folgt lauten:
oChild.Name = oChild.PartNumber & "." & tmp(UBOUND(tmp))

oder

tmp = SPLIT(oChild.Name,".")

Anhand deine Fehlermeldung kann es beiden sein...

Ich verstehe aber auch nicht was los ist, denn bei mir funktioniert es. Ob ich nun die Bauteile aus WINDOWS Ordner öffne oder aus ein VPM system (wobei hier das speichern geändert werden muss, und löschen kann ich die orgdateien auch nicht).


Könntest du bitte folgende Makros erzeugen, und über das Produkt drüber laufen lassen und bescheid geben ob sie funktionieren?

MACRO1.CATvbs

Code:
Sub CATMain()

MSGBOX CATIA.ActiveDocument.Product.Products.Item(1).Name

End Sub


Und...

MACRO2.CATvbs

Code:
Sub CATMain()

tmp = Split(CATIA.ActiveDocument.Product.Products.Item(1).Name,".")
MSGBOX tmp(UBOUND(tmp))

End Sub



[Diese Nachricht wurde von DasDon am 03. Jul. 2012 editiert.]

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 16: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 Devian82 10 Unities + Antwort hilfreich


MACRO1.png


MACRO2.png

 
Hallo DasDon,

Problem erkannt!

Ich hatte ein "nicht" geladenes Part in meiner Struktur. 
Könnte man das auch noch abfangen?

Inaktivierte Parts werden ignoriert. Ist getestet.

Makro läuft jetzt.  

zu Vervollständigung noch die Bilder zu den Macros: Macro1 und Macro2

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!      

[Diese Nachricht wurde von moppesle am 03. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Jul. 2012 17:07    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 Devian82 10 Unities + Antwort hilfreich

Hallo,

Das ist ja gut das es Funktioniert. Die macros ein und zwei waren nur gedacht um zu sehen ob es an:

oChild.Name = oChild.PartNumber & "." & tmp(UBOUND(tmp))
oder
tmp = SPLIT(oChild.Name,".")
lag..

Ein nicht geladenes Produkt? Mit BrokenLink oder wie muss ich "nicht Geladen" verstehen?

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 03. Jul. 2012 21:25    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 Devian82 10 Unities + Antwort hilfreich

Hallo DasDon,

Zitat:
Ein nicht geladenes Produkt? Mit BrokenLink oder wie muss ich "nicht Geladen" verstehen?

Ein Part oder Produkt das beim laden der Baugruppe nicht gefunden wird.

Wenn z.B. eine Datei im Filesystem umbenannt oder verschoben wurde.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 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 Devian82 10 Unities + Antwort hilfreich

So.
Ich glaube ich habe es abgefangen bin mir aber nicht sicher. Bei mir läufts bei einem Produkt welches einen PArt beinhaltet der ein Brocken Link hat bzw. welches nicht geladen ist.
Ich hoffe nur, dass ich damit nicht mehr abfange. Sollte ein Produkt nicht geladen sein, hätte es auch keine Parameter (ie. Part Number usw.) darum Zeile 40:
Code:
IF oChild.Parameters.Count <> 0 THEN

Des wegen stürtzte auch das Makro vorher ab, da es nicht oChild.Name auslesen kann bei nicht vorhandene Parts. Eigentlich dürfte es nichts geben was geladen ist und keine PArameter hat...aber man weiß ja nie...

Gruß,

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 04. Jul. 2012 09:01    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 Devian82 10 Unities + Antwort hilfreich


04-07-2012_02.png

 
Hall DasDon,

habe immer noch ne Fehlermeldung.
in Zeile:

Code:
oChild.Name = oChild.PartNumber & "." & tmp(UBOUND(tmp))

Habe mal ein Bild dazu wie das im Strukturbam aussieht.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 12:18    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 Devian82 10 Unities + Antwort hilfreich


ps_baum.jpg

 
Hallo nochmal,

also bei mir sieht der Baum wie im Bild aus und das Makro läuft durch. Steht wirklich bei dir in Zeile 40: IF oChild.Parameters.Count <> 0 THEN ?

Also:

Code:
'-------------------------------------
SUB WalkThroughTree(oParent)
DIM iProduct
DIM oChild

FOR iProduct = 1 TO oParent.Products.Count
SET oChild = oParent.Products.Item(iProduct)
IF oChild.Parameters.Count <> 0 THEN

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 04. Jul. 2012 12:33    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 Devian82 10 Unities + Antwort hilfreich


04-07-2012_04.png


04-07-2012_05.png

 
Hallo DasDon,

Zitat:
Steht wirklich bei dir in Zeile 40: IF oChild.Parameters.Count <> 0 THEN ?

Ja. (siehe Bilder)

Habe auch extra noch einmal mit normaler Struktur getestet um andere Fehler auszuschließen.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 13: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 Devian82 10 Unities + Antwort hilfreich

Hmmm, komisch.

Könntest du bitte folgendes tun:

startet bitte das folgende Makro und wähle dein "nicht" geladenes Part/product. gebe mir bitte bescheid welche Nummer dabei raus kommt.

Code:
Sub CATMain()

DIM what(0)
What(0) = "Product"
STATUS = CATIA.ActiveDocument.Selection.SelectElement2(What,"select a product",false)
MSGBOX CATIA.ActiveDocument.Selection.Item(1).Value.Parameters.Count

End Sub


Gruß,

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 04. Jul. 2012 14: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 Devian82 10 Unities + Antwort hilfreich

Hallo DasDon,

die Nummer ist 16

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 14:18    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 Devian82 10 Unities + Antwort hilfreich


parameters.jpg

 
16 Wirklich merkwürdig.
Dann bitte, "Fomulas" auswählen das part/produkt selektieren und mir einen Bild der parameters geben (sofenr möglich) (siehe anhang)

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 04. Jul. 2012 14:25    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 Devian82 10 Unities + Antwort hilfreich


04-07-2012_6.png

 
Hallo,

anbei Bild.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 14:39    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 Devian82 10 Unities + Antwort hilfreich

Das verstehe ich nun wirklich nicht.

Du kriegtst die Anzahl der Parameter als 16, im Bild ist eins zu sehen und zwar  "Component Activation State" was auch noch true sein soll, obwohl das Produkt eindeutig nicht aktiviert ist. 

Wie viele parameter befinden sich im "Parameters"? 15 Zufällig?

Ich weiß einfach nicht mehr weiter. Tut mir leid.

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3282
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 04. Jul. 2012 14:49    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 Devian82 10 Unities + Antwort hilfreich

Hallo,

im Part befinden sich 633 Parameter wenn es geladen ist.

Könnte man nicht nach dem "toten" Part suchen und dem User eine Meldung anzeigen, das die links zu laden sind?

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!          

[Diese Nachricht wurde von moppesle am 04. Jul. 2012 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 15:16    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 Devian82 10 Unities + Antwort hilfreich

Zitat:
Könnte man nicht nach dem "toten" Part suchen und dem User eine Meldung anzeigen, das die links zu laden sind?


Eine Meldung kommt (zumindest bei mir) Automatisch nach dem Öffnen des Produkts. Siehe Anhang

Danach suchen mache ich schon mit:

Code:
oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true"

Einen anderen Weg ist mir leider nicht bekannt.
Das komische ist ja, dass der Wert "true" von "Component Activation State" meines Wissen die bestätigung ist dass das Part geladen ist.

ICh befürchte ich kann da nichts machen. Du könntest, wenn du die Meldung nicht bekommst, immer vorher unter |File|Desk| nach schauen ob alle PArts zu finden sind.

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Jul. 2012 15:25    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 Devian82 10 Unities + Antwort hilfreich

Hi Uwe,

letzter Versuch. Ersetze mal den Sub WalkThroughTree mit dem hier...

'-------------------------------------
SUB WalkThroughTree(oParent)
DIM iProduct
DIM oChild

FOR iProduct = 1 TO oParent.Products.Count
SET oChild = oParent.Products.Item(iProduct)
FOR n = 1 TO oChild.Parameters.Count
tmpSTR = oChild.Parameters.Item(n).Name
IF InStr(tmpSTR ,"Part Number") THEN check = TRUE
NEXT
IF check THEN
IF oChild.Parameters.Count <> 0 THEN
IF oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true" THEN
'--------------------
'ADDS PARTNUMBER AND OLD INSTANCE NUMBER AS NEW INSTANCENAME
tmp = SPLIT(oChild.Name,".")
oChild.Name = oChild.PartNumber & "." & tmp(UBOUND(tmp))
'--------------------
'SENDS CHILDREN WITH NO CHILDREN TO SAVE AND CHILDREN WITH CHILDERN TO WALTHROUGH (BOTTOM UP)
IF oChild.Products.Count = 0 THEN
SaveAsPartNumber oChild.ReferenceProduct
ELSE
WalkThroughTree oChild.ReferenceProduct
END IF
END IF
END IF
END IF
NEXT
'--------------------
'SENDS THE PRODUCT TO SAVE AFTER ALL CHILDREN HAVE BEEN SAVED
IF oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true" THEN
IF oParent.Products.Count > 0 THEN
SaveAsPartNumber oParent
END IF
END IF
END SUB
'-------------------------------------

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: 50
Registriert: 24.04.2018

Catia V5 R29 SP3 | Windows 10 Pro

erstellt am: 22. Okt. 2020 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 Devian82 10 Unities + Antwort hilfreich


Problem.png

 
Hallo zusammen,
ich habe eine alte Konstruktion in Windows kopiert, dann in CATIA geöffnet, die Part Namen umbenannt (von P11743 in P11742) und dann habe ich das Makro ReNameFileNameAsPartNumber ausgeführt.

Komischerweise funktioniert das Makro jetzt nur teilweise.: Die Dateinamen von Oberteil Unterteil und Niederhalter wurden umbenannt, die Dateinamen von Flächenkonstruktion und Methodenkonstruktion nicht.
An was liegt das?

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

CATIA V5R19

erstellt am: 22. Okt. 2020 18:46    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 Devian82 10 Unities + Antwort hilfreich

Servus

Wurde die Datei richtig neu gespeichert und nur der Name der Instanz nicht angepasst?

Gruß
Bernd

EDIT: Ich vermute es liegt an der Zeile IF oChild.Parameters.Item(oChild.Parameters.Count).ValueAsString = "true" THEN. Mit der soll geprüft werden ob eine Instanz deaktiviert ist. ggf mal auskommentieren oder per MsgBox testen welcher Parameter da gefunden/angesprochen wird

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

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