Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  SelectElement2 product auswählen

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:  SelectElement2 product auswählen (1024 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: 23. Jan. 2019 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

Hallo,

ich möchte mit SelectElement2 in einer Baugruppe ein Product auswählen.
Wichtig dabei ist, dass man nur ein Product auswählen kann, da nach der Auswahl Parts eingefügt werden sollen.
Ich habe den filter auf "Product" gesetzt.
Leider ist es trotzdem möglich Parts auszuwählen.

Gibt es eine Möglichkeit das zu unterbinden?

Alternativ wollte ich mittels FullName den Dateiname herausfinden und prüfen, ob es sich um ein Part oder Product handelt.
Das funktioniert jedoch nicht, da ich immer nur als Name "Product22" angezeigt bekomme.

Habt Ihr ideen? 

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

Servus

Alle Instanzen in einer Baugruppe, egal ob CATPart oder CATProduct, sind Products.
Du könntest ein Product selektieren lassen und dann das Dokument des selektierten Elements auswerten:

Code:
Set oSelectedProduct = oSel.Item2(1).Value
if TypeName(oSelectedProduct.ReferenceProduct.Parent) <> "ProductDocument" then
  MsgBox "Ups keine Baugruppe gewählt"
end if
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: 23. Jan. 2019 13: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

Gut zu wissen das mit den Products.

Vielen Dank, ich habe das Makro mit deinem Code erweitert, es tut jetzt das was es soll 

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: 24. Jan. 2019 10:45    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

Servus,

hast du noch eine Idee, wie ich das selectierte Product deklarieren kann, damit ich Teile in das selectierte Product einfügen kann?
Das ganze sollte unabhängig davon sein, die wie vielte Unterbaugruppe das ist.

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: 24. Jan. 2019 11:40    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

Wie fügst du denn da Teile ein?
Warum nicht als Product deklarieren?

Code:
oSelectedProduct.Products.AddComponentsFromFiles ArrayOfFiles, "CATPart"
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: 24. Jan. 2019 11: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

Servus,

aktuell werden die Teile so eingefügt:

Code:
Dim arrayOfVariantOfBSTR1(0)
arrayOfVariantOfBSTR1(0) = Teileort & ".CATPart"
Set products1Variant = products1
products1Variant.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"

Dim constraints1 As Constraints
Set constraints1 = product1.Connections("CATIAConstraints")

Dim reference1 As Reference
Set reference1 = product1.CreateReferenceFromName(Bezeichnung & "/" & Teileart & ".1/!" & Bezeichnung & Teileart & ".1/")


Dim constraint1 As Constraint
Set constraint1 = constraints1.AddMonoEltCst(catCstTypeReference, reference1)

selection1.Clear

selection1.Add constraint1

visPropertySet1.SetShow 1

selection1.Clear



Die Strings werden durch ein vorhergenehdes Fenster befüllt, da unterschiedliche Teile eingefügt werden können.

Der String Bezeichnung kommt aus der Selection mittels:

Code:
Bezeichnung = USel.Item(1).Value.Name

Mit der Methode kann ich nur Teile in das ROOT-Product einfügen.

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

Servus

Was ist bei dir product1?
In meinem Kurztest hat es so

Code:
Set product1 = oSelectedProduct.ReferenceProduct
besser geklappt.

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: 24. Jan. 2019 12:53    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

Mein "Testsub" würde jetzt so aussehen:

Code:
Sub CATMain()

Dim UselLB
Dim Usel As Object
Dim InputObject(0) As Variant
Dim oStatus

InputObject(0) = "Product"
Set Usel = CATIA.ActiveDocument.Selection
Usel.Clear
Set UselLB = Usel
oStatus = UselLB.SelectElement2(InputObject, "Baugruppe auswählen!", True)
If (oStatus = "Cancel") Then
Exit Sub
End If

Set oStatus = UselLB.Item2(1).Value
If TypeName(oStatus.ReferenceProduct.Parent) <> "ProductDocument" Then
Status = MsgBox("Parts sind nicht zulässig!" & vbLf & _
"Bitte wählen Sie eine Baugruppe aus!", vbOKOnly + vbCritical, "Fehler!")
Exit Sub
End If


Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

Dim product2 As Product
Set product2 = products1.Item("Baugruppe1.1")


Dim products2 As Products
Set products2 = product2.Products

Dim arrayOfVariantOfBSTR1(0)
arrayOfVariantOfBSTR1(0) = "C:\Temp\Einzelteil.CATPart"
Set products2Variant = products2
products2Variant.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"

End Sub


Wobei meine Struktur so aussieht:

Hauptproduct
--Baugruppe1


Ich kann Dir nicht ganz folgen, wie ich die selection mit einbaue.

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: 24. Jan. 2019 13: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 Nur für Suchtiii94 10 Unities + Antwort hilfreich

Servus

Willst du nicht die Selektion auch verwenden? zB:

Code:
Set product2 = UselLB.Item2(1).Value.ReferenceProduct 'Name des Objekts etwas ungeschickt/nicht aussagekräftig
ggf Inputobject auf Product einschränken.

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: 24. Jan. 2019 13: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

Danke, das war genau das was mir gefehlt hat. Es kann so einfach sein 

Jetz fehlt nur noch die Fixierung des eingefügten Parts. Dabei bekomme ich ein click ok to Terminate:

Code:
Dim Bezeichnung As String
Bezeichnung = product2.Name


Dim constraints1 As Constraints
Set constraints1 = product1.Connections("CATIAConstraints")

Dim reference1 As Reference
Set reference1 = product2.CreateReferenceFromName(Bezeichnung & "/" & "Bauteil1.1/!" & Bezeichnung & "/Bauteil1.1/")


Dim constraint1 As Constraint
Set constraint1 = constraints1.AddMonoEltCst(catCstTypeReference, reference1)


Wie meinst du das mit Name des Objekts ungeschickt?

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

Servus

Wo willst du denn die Bedingungen erzeugen?
Wäre nicht

Code:
Set constraints1 = product2.Connections("CATIAConstraints")
besser?
Benennungen wie product1, product2 und Bezeichnung sind nicht aussagekräftig.
Stimmt der Pfad für die Reference? Wäre es nicht besser den Instanznamen (zB für Bauteil1.1) auszulesen und für den Pfad zu nutzen?

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: 25. Jan. 2019 09:45    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

Danke, da hast du recht war ein Tippfehler von mir.

Jetzt fehlt mir nur noch das Speichern des product2.

Wie kann ich das machen, da ich ja normal nur productDocument2.Save ausführen kann, in diesem Fall aber ein product habe?

Ich habe es jetzt über

CATIA.ActiveDocument.Product.Update
CATIA.ActiveDocument.Save

gelöst.

Danke für alles 

[Diese Nachricht wurde von Suchtiii94 am 25. Jan. 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: 25. Jan. 2019 10: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Aber ActiveDocument ist nicht das selektierte sonder das aktuell im Fenster geöffnete.
Das selektierte Product sollte so gehen.

Code:
product2.parent.Save 'zum jeweiligen Dokument hochgehen
Gruß
Bernd

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