Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Unterscheidung gleicher Parts in einem Produkt

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:  Unterscheidung gleicher Parts in einem Produkt (746 mal gelesen)
Edcba
Mitglied


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

Beiträge: 3
Registriert: 01.08.2021

CATIA V5 R28

erstellt am: 01. Aug. 2021 22: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

Moin,

ich suche eine Möglichkeit, wie man mehrfach eingesetzte Parts in einem Produkt im Makro unterscheidet.
Aktuell wählt der Benutzer ein Produkt aus. Anschließend werden die einzelnen Parts des Produkts abgespeichert. Wenn ich jetzt für die Copy-Funktion die einzelnen Parts nacheinander wieder selektiere, dann wird manchmal nicht genau das Part sondern ein gleiches, welches an andere Stelle eingesetzt wurde, markiert.
Folgende Möglichkeiten habe ich schon ausprobiert:

- Produkt selektieren und dann über .search die parts suchen
- Über den Baum mit .parent und .item

Hat irgendwer Erfahrung wie man ein Part z.B. über den kompletten Link genau definieren kann, ohne das Catia es mit gleichen Parts verwechselt.


Vielen Dank im Voraus  

[Diese Nachricht wurde von Edcba am 02. Aug. 2021 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: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 02. Aug. 2021 08: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 Edcba 10 Unities + Antwort hilfreich

Hallo Edcba,

willkommen im Forum. Bitte Systeminfo ausfüllen.

Hast du schon mal daran gedacht über den Instanznamen zu gehen?
Dabei solltest du beachten, das du diese evtl. vor deinem Zugriff auf aktuellen Stand bringst.

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

Auch Catia ist nur ein Mensch!    

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

Edcba
Mitglied


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

Beiträge: 3
Registriert: 01.08.2021

CATIA V5 R28

erstellt am: 02. Aug. 2021 10:22    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

Ja Instanzname klingt erstmal gut aber ich weiß nicht, wie man auf das Part zugreifet, wenn man den vollständigen Pfad hat.

Aktuelle Situation:

Hauptprodukt
-Produkt_1(Produkt_1.1)
--Part_1(Part_1.1)
---Part_1
--Part_2(Part_2.1)
---Part_2
-Produkt_2(Produkt_2.1)
--Part_1(Part_1.1)
---Part_1                    <--
--Part_2(Part_2.1)
---Part_2

Ich versuche, dass der Benutzer auf Produkt_2 klicken kann und dann im Makro das markierte Part selektiert wird, bzw. Part_1 und Part_2. Über ".ReferenceProduct.Parent.part" wird immer das Part_1 aus Produkt_1 ausgewählt, da es denke ich früher eingesetzt wurde.


Sub CATMain()

'Allgemein
Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product
Set selection1 = CATIA.ActiveDocument.Selection
selection1.Clear

'Produkt abfragen
was1(0) = "Product"
auswahl = selection1.SelectElement2(was1, "Bitte Produkt auswählen", True)
Set produktAuswahl = selection1.Item(1).Value

'Pfad ermitteln
Dim GetPathFromInstance As String
GetPathFromInstance = ""
Dim parentObj
Set parentObj = produktAuswahl
Dim levelCnt As Integer
levelCnt = 0
maxLevels = 100
Do While TypeName(parentObj) <> "Application" And levelCnt < maxLevels
    If TypeName(parentObj) = "Product" Then
        If Len(GetPathFromInstance) > 0 Then
            GetPathFromInstance = parentObj.Name & "\" & GetPathFromInstance
        Else
            GetPathFromInstance = parentObj.Name
        End If
    End If
    Set parentObj = parentObj.Parent
    levelCnt = levelCnt + 1
Loop
GetPathFromInstance = GetPathFromInstance & "\" & produktAuswahl.Products.Item(1).Name & "\" & produktAuswahl.Products.Item(1).PartNumber

'GetPathFromInstance = "Hauptprodukt\Produkt_2.1\Part_1.1\Part_1"
'habe gesehen, dass hier eventuell noch ein Ausrufezeichen rein muss nur wo und warum?


'hier fehlt jetzt die Selektion.
selection.clear
selection1.add ...


End Sub

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: 02. Aug. 2021 14: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 Edcba 10 Unities + Antwort hilfreich

Moin,

du könntest die Partnamen (Dateinamen!) zwischenspeichern (z.B. Array, Collection) und vor jedem hinzufügen prüfen ob schon ein Part mit dem gleichen Dateinamen im Zwischenspeicher existiert.

Bei den Instanznamen musst du immer damit rechnen das diese vom Anwender geändert wurde.

Gruß Randle

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

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: 02. Aug. 2021 18: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 Edcba 10 Unities + Antwort hilfreich

Servus

Was hast du den genau vor?
Warum benötigst du zum abspeichern die Selektion?

Falls du nicht eine Instanz wählen lassen willst, sondern direkt einen Body oder ein Part, liefert dir die Methode LeafProduct die entsprechende Instanz. Von der aus kannst du dich dann hoch hangeln.

Gruß
Bernd

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

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

EmilioSanchez
Mitglied



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

Beiträge: 70
Registriert: 02.11.2003

Intel I7 4700MQQ
24GB
Win10 Pro 64-Bit
Catia V5 R19/R26/28/29

erstellt am: 03. Aug. 2021 10: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 Edcba 10 Unities + Antwort hilfreich

Hallo,

hatte das mal so gelöst:

    Set oSelValue = oSel.Item2(1).Value
    oSelName = oSelValue.Name

    Set ProduktParent = oSel.Item2(1).LeafProduct
   
    StrReferenceName = ProduktParent.Name
   
    Do Until ProduktParent.Name = "CNEXT"
        Set ProduktParent = ProduktParent.Parent.Parent
        If ProduktParent.Name = "CNEXT" Then Exit Do
        StrReferenceName = ProduktParent.Name & "/" & StrReferenceName
    Loop
   
    StrReferenceName = StrReferenceName & "/!" & oSelName

    Set oRef = ActiveProduct.CreateReferenceFromName(StrReferenceName)


Gruß

Bernd

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

Edcba
Mitglied


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

Beiträge: 3
Registriert: 01.08.2021

CATIA V5 R28

erstellt am: 03. Aug. 2021 14:08    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

Moin,
vielen Dank schonmal für die Hilfe nur leider hat mich das immer noch nicht so richtig weitergebracht bzw. weiß ich nicht wie man genau über den Instanznamen geht  . Ich versuchs hier nochmal an meinem aktuellen Code zu zeigen, der jedoch nicht genau das macht was er soll.


Ausgangslage:

Hauptprodukt
-Produkt_1(Produkt_1.1)
--Part_1(Part_1.1)
---Part_1
--Part_2(Part_2.1)
---Part_2
-Produkt_2(Produkt_2.1)
--Part_1(Part_1.1)
---Part_1                 
--Part_2(Part_2.1)
---Part_2

Part_1 und Part_2 sind jeweils gleich und wurden jeweils einmal in die Produkte Produkt_1 und Produkt_2 eingesetzt.


Dim was1(0)
Dim produkte()
Dim parts()
Sub CATMain()

'Allgemein
Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product
Set selection1 = CATIA.ActiveDocument.Selection
selection1.Clear

'Produkt abfragen
was1(0) = "Product"
auswahl = selection1.SelectElement2(was1, "Bitte Produkt auswählen", True)
Set produktAuswahl = selection1.Item(1).Value

'Produkte abfragen
selection1.Clear
selection1.Add produktAuswahl
selection1.Search "CATProductSearch.Part,sel"
produktAnzahl = selection1.Count
For i = 1 To produktAnzahl
    ReDim Preserve produkte(i + 1)
    Set produkte(i) = selection1.Item(i).Value
Next

''Parts abspeichern Versuch 1
'selection1.Clear
'selection1.Add produktAuswahl
'selection1.Search "CATPrtSearch.PartFeature,sel"
'partAnzahl = selection1.Count
'For i = 1 To partAnzahl
'    ReDim Preserve parts(i + 1)
'    Set parts(i) = selection1.Item(i).Value
'Next

'Parts abspeichern Versuch 2
partAnzahl = 0
For i = 1 To produktAnzahl
    selection1.Clear
    selection1.Add produkte(i)
    selection1.Search "CATPrtSearch.PartFeature,sel"
    For j = 1 To selection1.Count
        partAnzahl = partAnzahl + 1
        ReDim Preserve parts(partAnzahl + 1)
        Set parts(partAnzahl) = selection1.Item(j).Value
       
    Next
Next

'...anderer Code

'Abgespeicherte Parts markieren
selection1.Clear
For i = 1 To partAnzahl
    selection1.Add parts(i)
Next

'...anderer Code

End Sub


Mit dem Code werden die Parts abgespeichert, leider jedoch teilweise die aus dem anderen Produkt, sodass am Ende die Parts in Produkt_1 markiert sind, obwohl der Benutzer Produkt_2 ausgewählt hat. Ich bin ja auch schon soweit, dass man irgendwie über den kompletten Pfad gehen muss, weil da ja dann drinsteht ...Produkt_1...  oder ...Produkt_2... ich weiß nur leider nicht wie ich das umsetzen soll.

Grüße und wieder vielen Dank im Voraus

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: 03. Aug. 2021 14:31    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 Edcba 10 Unities + Antwort hilfreich

Servus

Was meinst du mit Mit dem Code werden die Parts abgespeichert?
Ein Export, ein SaveAs oder eine Kopieraktion?
(nicht dass du dich in etwas verrennst)

Gruß
Bernd

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

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 06. Aug. 2021 07: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 Edcba 10 Unities + Antwort hilfreich

Moin,
die Lösung deines Problems hinsichtlich der korrekten Referenzerstellung hab ich in dem Beitrag
https://ww3.cad.de/foren/ubb/Forum137/HTML/003671.shtml#000020
erklärt. Schau mal, ob dir das weiterhilft.
Gruß TomTom

------------------
tomtom1972

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