Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Reference aus Selektion

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:  Reference aus Selektion (1030 mal gelesen)
Katia1999
Mitglied


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

Beiträge: 6
Registriert: 17.12.2015

erstellt am: 17. Dez. 2015 15: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

Hallo,

grundsätzlich möchte ich innerhalb eines Produktes ein neues Part einfügen und dann mit dessen Absolute Axis System mit einem anderen Achsenkreuz eine Coincidence erzeugen.

Dieses andere Achsenkreuz möchte ich per Selektion bestimmen können.
WIe ich verstanden habe, muss man für die Bedingungen References erzeugen.

Wie erzeuge ich so eine Reference aus einer Selektion?
Das hier habe ich aus dem Netz, funktioniert aber nicht...

    Dim Filter (0)
Filter (0) = "AxisSystem" '------Filter, nur Achsenkreuz

E = UserSel.SelectElement2(Filter, "Select an axis system", False)

If E = "cancel" Then UserSel.clear: Exit Sub

Dim Reference1 As Reference
Set Reference1 = UserSel.Item(1).Reference

MsgBox Reference1.Name


Bin ich da grundsätzlich auf dem Holzweg?

Danke schon mal!!

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

Katia1999
Mitglied


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

Beiträge: 6
Registriert: 17.12.2015

erstellt am: 19. Dez. 2015 23: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

Hallo,
da noch keiner geantwortet hat, habe ich mich dem Problem inzwischen selbst etwas genähert und mich an der Methode CreateReferenceFromName versucht.

Ein etwas einfacheres Beispiel habe ich fast am laufen.
Dort geht es darum, in ein beliebiges Unterprodukt ein weiteres Produkt einzufügen, das wiederum ein Part enthält. Dieses Part möchte ich gerne direkt in dem neuen Produkt fixieren.

Weiter unten der Code dazu, in dem die letzte Zeile
Set Bedi = Beding.AddMonoEltCst (catCstTypeReference, R1)
nicht funzt.
Da es funktioniert, wenn ich auf die Zwischenstufe verzichte und das Part direkt in einem vorhandenen Produkt einfügen und fixen lasse, stehe ich vor einem Rätsel.

Wer kann mir helfen?? 

Sub CATMain()
Dim Docs As Documents

Dim NaextPN As String 'Die neue Partnumber
Dim KnotenPP As Products 'Alle Unterknoten
Dim NeuesPart As Product 'Das neue Part
Dim Des As String 'Description, die vergeben werden kann
Dim UserSel As Selection 'Falls nicht schon ein Produkt selektiert war, hier wird eingefügt
Dim Box As Long 'MsgBox die Vaterelement zeigt, mit der Möglichkeit abzubrechen ->2
Box = 2

Dim Knoten As Product '-----Produkt in das eingefügt werden soll

Set Knoten = CATIA.ActiveDocument.Product

Dim Beding As Constraints
Set Beding = Knoten.Connections("CATIAConstraints")

Set UserSel = Catia.ActiveDocument.Selection
UserSel.Clear

Knoten.ApplyWorkMode DESIGN_MODE '-----In work design!


'-----Selektion des Produkts, in das eingefügt werden soll

Dim E As CATBSTR
Dim Filter (0)
Filter (0) = "AnyObject"
Dim SelDokument As Document
Dim DokumentInst

E = UserSel.SelectElement2(Filter, "Select a component to insert the new product", false)

Set DokumentInst = UserSel.Item(1).Value
Set SelDokument = DokumentInst.ReferenceProduct.Parent

'-----Ende der Selektion

Set Knoten = SelDokument.Product

Set KnotenPP = Knoten.Products

NextPN = Inputbox ("Enter new product number!", "New Product Number")

Set NeuesPrd = KnotenPP.AddNewComponent("Product", NextPN) '-----Hier wird Produkt eingefügt

'------ Hier wird das zu fixierende Sub-Part erzeugt


Set KnotenPP = NeuesPrd.Products
NextPN = Inputbox ("Enter new part number!", "New Part Number")
Set NeuesPart = KnotenPP.AddNewComponent("Part", NextPN)    '-----Einfügen mit neuer Nummer


'----- Hier wird das Part gefixt allerdings haut die letzte Zeile nicht hin...

Set Docs = CATIA.Documents

Dim R1 as Reference

Set Ebene1 = Docs.Item(NextPN & ".CATPart").Part.OriginElements.PlaneXY     

S = NeuesPrd.PartNumber & "/" & NeuesPart.Name & "/!" & Ebene1.Name
Set R1 = NeuesPrd.CreateReferenceFromName (S)

Set Bedi = Beding.AddMonoEltCst (catCstTypeReference, R1)

End Sub

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: 20. Dez. 2015 11: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 Nur für Katia1999 10 Unities + Antwort hilfreich

Servus
Musst du nicht die Bedingung in dem zuvor gewählten Unterprodukt erzeugen?
Also erst nach "Set Knoten = SelDokument.Product" die Zeile "Set Beding = ..." aufrufen?
Sonst bezieht sich die Bedienung auf das Rootprodcut. (bzw wo willst du die Bedigung erzeugen?)

Gruß
Bernd

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

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

Katia1999
Mitglied


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

Beiträge: 6
Registriert: 17.12.2015

erstellt am: 20. Dez. 2015 15: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

Hallo Bernd,

die Idee hatte ich auch schon. Grundsätzlich gibt es ja drei mögliche Positionen für das 'Set Beding' die eigentlich ja einen Unterschied machen müssten:

Ganz am Anfang, bezieht sich dann auf ActiveDocument.Product
Nach der Selektion, bezieht sich dann auf das selektierte Produkt
Nach Einfügen des Produktes (NeuesPrd), bezieht sich dann auf das neue Produkt, in dem ja auch die Constraint erzeugt werden soll.

Eigentlich müsste die dritte Möglichkeit also greifen, doch Du ahnst es schon: Keine Veränderung...

Habe alles durchgetestet, ohne Erfolg.

Kann es daran liegen, dass es das Produkt (NeuesPrd) zumindest im Strukturbaum noch gar nicht gibt? Es erscheint erst, wenn das Makro durchgelaufen ist, bzw. wie bei mir mit einer Fehlermeldung endet.


Gruß Katia

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