Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Part-übergreifende Referenzen in einem Product

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:  Part-übergreifende Referenzen in einem Product (1677 mal gelesen)
Buckminster
Mitglied
Student Maschinenbau

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

Beiträge: 3
Registriert: 21.02.2012

erstellt am: 21. Feb. 2012 11: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 zusammen,
ich sitze jetzt seit einiger Zeit an einem Makro und komme nicht mehr weiter. Da ich noch nicht sehr erfahren bin in der CATIA Programmierung Ich hoffe dass mir jmd. hier helfen kann.
Ich habe ein Product in welchem ich per Makro zwischen Punkten verschiedener Parts eine Polyline ziehen möchte (Polyline kommt in ein eigenes Part).
Die Verschiedenen Punkte sind über Userselect ausgewählt und unter eigenen Variablen gespeichert
Mein Problem besteht darin, dass ich keine Referenz auf meine selektierten Punkte erzeugen kann.
Mit folgendem Code habe ich es probiert (und gefühlten 1000 Varianten, die mir eingefallen sind  ):

Globale Definition:
Dim Ref(3) As Reference

Sub Selektion()
Dim Was(1)
    Was(0) = "Vertex"
    Was(1) = "Point"
Dim Punkt1 As AnyObject
Dim UserSel As Selection
    Set UserSel = CATIA.ActiveDocument.Selection
  UserSel.Clear

  Dim E As CATBSTR
  E = UserSel.SelectElement2(Was, "Startpunkte für Polyline wählen.", False)
  If E = "Normal" Then
Set Ref(0) = UserSel.Item(1).Reference
Else
      MsgBox ("Abbruch")
  End If
End Sub

Die so erzeugte Referenz möchte ich dann in einem anderen Part für die erzeugung einer Polyline verwenden. Leider liefert mir das Programm immer, dass ich die Punkte als Referenzen nicht für die Polyline verwenden kann. Ich hoffe, dass jmd. eine Idee hat, wie ich hier vorgehen kann.

[Diese Nachricht wurde von Buckminster am 21. Feb. 2012 editiert.]

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 21. Feb. 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 Buckminster 10 Unities + Antwort hilfreich

Hallo,
das was du vorhast funktioniert so nicht. Der Hintergrund ist, dass die Referenz nur im activen Dokument existiert - ActiveDocument.Selection.
Es funktioniert, indem du entweder das aktive Dokument ein Produkt ist und alle Parts sich darin befinden. Allerdings muss hierfür in den Optionen die Einstellung mit dem Rootkontext gesetzt sein.
Der andere Weg wäre, die vertexes in das Zielpart zu kopieren und so eine externe Referenz zu erzeugen. Damit kann man dann die Polylinie erzeugen.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Kochbuch - CATIA V5 automatisieren

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

Buckminster
Mitglied
Student Maschinenbau

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

Beiträge: 3
Registriert: 21.02.2012

erstellt am: 21. Feb. 2012 22: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

Danke, das hilft mir schonmal weiter.
Ich hab mich jetzt dazu entschieden, das ganze innerhalb eines PArts zu machen, da es für mich keine wesentlichen Nachteile darstellt.
Dennoch schlägt die Erzeugung der Polyline über die erzeugten Referenzenf fehl.

Code:

Global:

Dim ConceptCoolingSystem As Document
    Set ConceptCoolingSystem = CATIA.ActiveDocument
Dim CoolingSystem As Part
    Set CoolingSystem = ConceptCoolingSystem.Part

Dim SetName As String

Dim Schlauchset As Hybridbody

Set Schlauchset = CoolingSystem.hybridBodies.Add()

Dim Koerper(1) As Body

Dim ref(3) As Reference


Sub Selektion()

Dim Was(0)
    Was(0) = "Vertex"

' Selektion definieren und leeren
  Dim UserSel As Selection
    Set UserSel = CATIA.ActiveDocument.Selection
  UserSel.Clear

' Selektion vornehmen lassen (Punkt 1)
  Dim E As CATBSTR
  E = UserSel.SelectElement2(Was, "StartPunkt für Schlauch wählen.", False)

  If E = "Normal" Then
        Set ref(0) = UserSel.Item(1).Reference
  Else
      MsgBox ("Abbruch")
  End If

' Selektion freigeben
  UserSel.Clear


...Selektion analog für weitere Punkte....


'3D - Werkzeug
Dim Fact As Factory
    Set Fact = CoolingSystem.HybridShapeFactory

'Polyline erzeugen
Dim Polyline As HybridShapePolyline
    Set Polyline = Fact.AddNewPolyline()

Polyline.InsertElement ref(0), 1  <-- schlägt fehl
Polyline.InsertElement ref(1), 2
Polyline.InsertElement ref(2), 3
Polyline.InsertElement ref(3), 4

SchlauchSet.AppendHybridShape Polyline


Wo liegt der Fehler, um über diese Referenzen eine Polyline ziehen zu können?
Wäre klasse, wenn ich darauf eine Antwort finden könnte.

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: 21. Feb. 2012 23:29    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 Buckminster 10 Unities + Antwort hilfreich

Servus
Setze mal den Selektionsfilter auf "Point". Wenn du "Vertex" nimmst, wird dir ein BREP zurückgelierfert.
Du willst doch "normale" 3D-Punkte selektieren ?

Gruß
Bernd

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

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

Buckminster
Mitglied
Student Maschinenbau

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

Beiträge: 3
Registriert: 21.02.2012

erstellt am: 22. Feb. 2012 13: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

Ah...das ist gut. Mit 3D Punkten klappt es. 
Ich wollte aber eigentlich wirklich Knoten aus 2D-Sketches selektieren. 

Jetzt habe ich wie folgt versucht, aus dem BRep des Vertex eine Referenz zu bilden:

Sub Selektion()

Dim Pkt(3) As AnyObject
Dim ref(3) As Reference

Dim Was(0)
    Was(0) = "Vertex"

' Selektion definieren und leeren
  Dim UserSel As Selection
    Set UserSel = CATIA.ActiveDocument.Selection
  UserSel.Clear

' Selektion vornehmen lassen (Punkt 1)
  Dim E As CATBSTR
  E = UserSel.SelectElement2(Was, "StartPunkt für Schlauch wählen.", False)

  If E = "Normal" Then
Set Pkt(0) = UserSel.Item(1)
  Set Ref(0) = CoolingSystem.CreateRefereceFromBRep (Pkt(0),Coolingsystem)  <-- Wie gebe ich hier korrekt die oben erzeugte BRep an?
  Else
      MsgBox ("Abbruch")
  End If

' Selektion freigeben
  UserSel.Clear


Mein Problem dabei ist glaube ich, dass ich ja aus verschiendenen Bodies und damit verschiedenen Sketches selektieren will. Wie gebe ich dann korrekt das Objekt für die Referenzerzeugung aus BRep an?

Vielen Dank für die Hilfe!

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