Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  InstanceName Ändern

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:  InstanceName Ändern (1877 mal gelesen)
Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 10. Jul. 2019 12:05    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

Hallo,

ich habe ein makro, dass mir alle offenen Teile in CATIA Umbenennt. Jetzt würde ich das ganze gerne umbauen, dass ich in einer Variante alle Dokumente im aktiven Fenster umbenennen kann und zum anderen ein Teil (Part oder Product), welches mit SelectElement2 ausgewählt wurde.

Zum besseren Verständnis hier der Code, der alle offenen Dokumente Umbenennt:

Code:
 
Set Documents = CATIA.Documents

For Each Item In Documents

If Right(Item.Name, 10) = "CATProduct" Then
Set currentProduct = Item.Product.Products
For i = 1 To currentProduct.Count
currentProduct.Item(i).PartNumber = currentProduct.Item(i).ReferenceProduct.Nomenclature
currentProduct.Item(i).Revision = Nullwert
currentProduct.Item(i).DescriptionRef = Nullwert
currentpartnumber = currentProduct.Item(i).PartNumber
k = 1
For j = 1 To currentProduct.Count
currentline = currentProduct.Item(j).PartNumber
If currentline = currentpartnumber Then
currentProduct.Item(j).Name = currentpartnumber & "." & k
k = k + 1
End If
Next
Next
End If
Next


Für das Umbenennen im aktiven Fenster hätte ich es so versucht: Das funktioniert aber nicht für die Gesamte Struktur, da ich eine verschachtelte Struktur habe.

Code:
Set oProducts = CATIA.ActiveDocument.Product.Products
For i = 1 To oProducts.Count
Set currentProduct = oProducts.Item(i).ReferenceProduct.Products

Für Hilfe bin ich wieder sehr dankbar.

Gruß

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: 10. Jul. 2019 12:54    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 Suchtiii94 10 Unities + Antwort hilfreich

Hallo,

suche doch mal hier im Forum nach:

rekursiv Produktstruktur
Instanznamen
Exemplarnamen
SelectedElement

Da solltest du ausreichend Anregungen und Beispielcode finden.

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 10. Jul. 2019 13: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

Hallo,

danke, ich habe mir schon einige Beträge angesehen und auch teilweise übernommen. Leider weiß ich trotzdem nicht wo bei mir der Fehler liegt für das Umbenennen im aktiven Fenster.

Beim Umbenennen der selektion habe ich keine Idee. Ich kann zwar alles andere, was ich mit der selektion machen möchte, nur das Umbenennen der Instance bekomme ich nicht hin.

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: 10. Jul. 2019 14: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 Suchtiii94 10 Unities + Antwort hilfreich

Hallo,

wenn deine Produktstruktur mehr als eine Ebene hat musst du die Schleife Rekursiv gestalten, d.h. die Schleife muss sich bei Produkten/Komponenten für eben diese Produkte/Komponenten noch mal selbst aufrufen.

Code:

Privat Sub ScanProd (t_oProd as Product)

Dim oCurrentProd as Product

For Each oCurrentProd in t_oProd.Products
'dein Code, umbenennen usw.
If TypeName(oCurrentProd.ReferenceProduct.Parent) = "ProductDocument" then
ScanProd t_oProd
end if

Next

End Sub


Das ist jetzt nicht getestet, sondern soll vorerst nur das Prinzip verdeutlichen. Wichtig, wenn du Komponenten drin hast musst du die noch berücksichtigen.

Ausgewähltes Element:

Du fragst die Selection des aktiven Dokumentes ab (CATIA.ActiveDocument.Selection.Count >0 ).

Dann würde ich über eine Schleife den Inhalt prüfen (es sei denn du hast den Anwender über SelectedElement aufgefordert etwas zu selektieren und hast dort einen Filter gesetzt).

Code:

For I = 1 to CATIA.ActiveDocument.Selection.Count
if Typename(CATIA.ActiveDocument.Selection.Item(I).Value) = "Product" then
'dein Code ...
end if

Next


Auch das ungetestet, nur zur Verdeutlichung des Prinzips.

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 10. Jul. 2019 16:06    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

Hallo,

danke für die ausführliche Antwort. Das Prinzip mit dem wiederaufrufen bei Produkten habe ich jetzt verstanden und eingebaut. Leider wird der InstanceName nicht bei allen Teilen umbenannt. Verwendet habe ich meinen Code oben zum umbenennen, aber ab einer gewissen Tiefe lässt sich der InstanceName nicht umbenennen.

Das verstehe ich nicht, da das Makro komplett identisch ist wie wenn ich For Each Item In CATIA.Documents ausführe und da funktioniert es.

-Product
--Part
-Product
--Part     --> instanceName wird nicht umbenannt
--Product  --> instanceName wird nicht umbenannt
---Part    --> instanceName wird nicht umbenannt

Das mit der Selektion habe ich schon, danke. Ich setze vorher schon den Typ Auf ProductDocument. Ich weiß eben nur nicht, wie ich bei dem selektiertem Teil den InstanceName ändern kann.

[Diese Nachricht wurde von Suchtiii94 am 10. Jul. 2019 editiert.]

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: 10. Jul. 2019 19: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Was hast du denn selektiert?
AFAIR liefert die Leafproduct (siehe Doku) die jeweilige Instanz eines selektierten Elements.
Was bei dem Instanznamen schief läuft ist ohne Code nicht möglich zu beurteilen. Hast du dir schon mal dazu das Makro auf Catia.cad.de angeschaut?

Gruß
Bernd

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

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: 11. Jul. 2019 07: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 Suchtiii94 10 Unities + Antwort hilfreich

Moin,

CATIA.Documents listet alle in der aktuellen CATIA Sitzung geladenen Dokumente auf, d.h.  jedes Dokument taucht nur einmal auf. In einer Produktstruktur die man rekursiv durchläuft ist es natürlich möglich das ein Dokument mehrfach vorkommt ist (man denke nur an Normteile). Wenn dann dein Code mittendrin aussteigt oder so gestaltet ist das Fehler übersprungen/ignoriert (On Error Resume Next) werden, ist es kein Wunder das nicht alle Instanzen berücksichtigt werden.

Warum das bei dir nicht klappt ist ohne Code schwer zu sagen, wie Bernd ja schon angemerkt hat.

Ist die Struktur vollständig geladen?
Hast du Komponenten in deiner Struktur?
Hast du auf Produktebene deaktivierte Elemente in der Struktur?

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 11. Jul. 2019 10: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

Hallo,

hier ist mein Code:

Code:
Sub Product_Suchen()
Set oRoot = CATIA.ActiveDocument
Set oProducts = oRoot.Product.Products
Product_Scannen oProducts
End Sub

Sub Product_Scannen(oProducts)
Dim PartNumber
Dim Nomenclature
For i = 1 To oProducts.Count

oProducts.Item(i).PartNumber = oProducts.Item(i).ReferenceProduct.Nomenclature
oProducts.Item(i).Revision = Nullwert
oProducts.Item(i).DescriptionRef = Nullwert
CurrentPartnumber = oProducts.Item(i).PartNumber
k = 1
For j = 1 To oProducts.Count
currentline = oProducts.Item(j).PartNumber
If currentline = CurrentPartnumber Then
oProducts.Item(j).Name = CurrentPartnumber & "." & k
k = k + 1
End If
Next

If oProducts.Item(i).Products.Count > 0 Then
Product_Scannen oProducts.Item(i).Products
End If

Next

End Sub


On Error Resume Next verwende ich nicht, das ist mir zu Unstabil.
Deaktivierte Elemente habe ich nicht.
Das Makro läuft durch alle Teile auch der die Zeile mit dem Umbenennen der Nomenclature läuft durch.

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: 11. Jul. 2019 10:35    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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Mit dieser Änderung läuft bei mir dein Code:

Code:
Product_Scannen oProducts.Item(i).ReferenceProduct.Products
Keine Ahnung warum das hier nötig ist.

Gruß
Bernd

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 11. Jul. 2019 10: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

Hallo,

danke Bernd, es läuft jetzt   
Warum aber hier das ReferenceProduct benötigt wird kann ich nicht nachvollziehen.

Danke noch für den Hinweis mit Leafproduct, das werde ich ausprobieren.

Edit:

ich hätte es jetzt so versucht:

Code:
Sub InstanceName()

Dim Sel1 As Object
Dim Filter1(0)
Dim Status1 As String
Dim AusgewähltesProduct As Product

Set Sel1 = CATIA.ActiveDocument.Selection
Sel1.Clear
Filter1(0) = "Product"
Status1 = Sel1.SelectElement2(Filter1, "Produkt Auswählen", False)

Set AusgewähltesProduct = Sel1.Item2(1).LeafProduct
AusgewähltesProduct.PartNumber = AusgewähltesProduct.ReferenceProduct.Nomenclature
AusgewähltesProduct.Products.Parent.Name = AusgewähltesProduct.ReferenceProduct.Nomenclature & "." & Split(Sel1.Item2(1).LeafProduct.Name, ".")(1)
End Sub


Auch hier läuft das Makro bei der ersten Instance der Produkte durch. Bei Unterbaugruppen und untereinzelteilen läuft es zwar durch, aber ich hab das gleiche Problem, dass der InstanceName nicht geändert wird.

Habt ihr da auch noch eine Idee?

Gruß


[Diese Nachricht wurde von Suchtiii94 am 11. Jul. 2019 editiert.]

[Diese Nachricht wurde von Suchtiii94 am 11. Jul. 2019 editiert.]

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: 17. Jul. 2019 07: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 Suchtiii94 10 Unities + Antwort hilfreich

Hallo,

kann es sein das du versuchst den gleichen Instanznamen zweimal zu setzen?
Ich würde mir an deiner Stelle mal ein einfaches Beispielprodukt mit entsprechender Unterstruktur erstellen und mir dann für jede Zuweisung des Instanznamen die Werte in einer Messagebox oder auch in einem Logfile anzeigen lassen. Du könntest das auch weiter eingrenzen indem du den Instanznamen vorher/nachher vergleichst, wenn der gleich ist -> Messagebox/Logfile.

Gruß
Randle

------------------
Wer für nichts steht, fällt für alles!

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