Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  In welchem Körper befindet sich Selection

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:  In welchem Körper befindet sich Selection (1366 mal gelesen)
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: 19. Mrz. 2005 12: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

Hallo Catia Fangemeinde,

mich beschäftigt seit einigen Tagen ein Problem.
Vielleicht weis ja von euch jemand Rat:

Ich befinde mich im Partdesign und habe ein Part mit mehreren Körpern. Nun selektiere ich interaktiv im 3D Fenster ein Objekt (Teilfläche eines Blocks). Wie finde ich nun heraus in welchem Körper sich meine Selection befindet?

Mein Quellcode:

Set oSelection = CATIA.ActiveDocument.Selection
Set Revob1 = oSelection.Item(1)

liefert mir als Ergebnis nur ein Objekt mit dem Namen SelectedElementXXX. Das Parent Objekt wiederum liefert das gleiche Ergebnis.

Vielen Dank für eure Bemühungen.

THX

Bernd

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: 19. Mrz. 2005 13:41    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 EmilioSanchez 10 Unities + Antwort hilfreich

Hallo Emilio,
Über die Selektion wirst du auch nicht an den Körper kommen, da ja die Selktion-Methode zur Document-Klasse gehört.
Den richtigen Namen des Objektes bekommst du übrigens über Selection.Item(i).Value und nicht über .Name

Wenn du den richtigen Namen hast kannst du folgendes machen:
Geh in den jeweiligen Körper hinein und lass dir duch eine Schlafe alle "Shape" angeben.
Wenn dann
            shape.name = Seelction.Item(1).Value
dann hast du das Objekt gefunden.
Über shape.Parent gelangst du dann zum Body, in der sich die shape befindet.

Viel Erfolg

Jens Jansen

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: 20. Mrz. 2005 14:24    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 Jens Hansen,

vielen Dank für deinen Tip. Ist schon mal hilfreich zu wissen das ich nach dem Objekt in des Struktur suchen muß. Ich stehe jedoch nach wie vor vor einem Problem:
Meine Selektion ist kein Shape sondern nur eine Teilfläche eines Blocks. Wie komme ich nun an das dazugehörige Shape?

Bin für jeden Tip dankbar.

Gruß

Bernd

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: 22. Mrz. 2005 09:57    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 EmilioSanchez 10 Unities + Antwort hilfreich


Info.pdf

 
Hallo,

in R14 (und mit VB 6.0) klappts mit .SelectElement2 und folgendem Code. (Da die Methode SelectElement2 ebenfalls in R12 existiert, gehe ich davon aus, das es hier auch klappt.)

Dim InputObjectType(0) 
Dim Status
Dim oSelection

Set oSelection = CATIA.ActiveDocument.Selection

InputObjectType(0) = "Face"  '---nur Fläche  auswählbar
Status = oSelection.SelectElement2(InputObjectType, "Select", False)  '--- UserSel
If (Status <> "Normal") Then  '-------Auswahl i.O?
  MsgBox "Abort"  '--- nein
  End
Else  '-------  ...wenn ja, dann...
  Set oSelectedElement = oSelection.Item(1).Value
  oSelection.Clear
  oSelection.EndSelectElement
End If

Über den DisplayNamen von oSelectedElement lässt sich der Name des zugehörigen Konstruktions-Elements auslesen (in diesem Fall ein Pad). Funktioniert immer, wenn es sich um ein BRep handelt (also wie im Bsp. die Teilefläche eines Würfels), da die Nomenklatur des BReps immer gleich ist. (Funktioniert auch für Pockets, Shafts ….)

aString  = Split (oSelectedElement.DisplayName,”Face: (Brp: (“) 

(das Leerzeichen zwischen dem : und dem ( hinter Face und Brp bitte weglassen, ich habe sie zugefügt, da es sonst hier im Text Smilies  gibt) 

aSearchedPad = Split (aString(1),”;”)
sSearchedPadName = aSearchedPad(0)

Mit folgender Schleife lässt sich dann der Name des zugehörigen Körpers auslesen:

For Each Body In CATIA.ActiveDocument.Part.Bodies
Set oBody = CATIA.ActiveDocument.Part.Bodies
  For Each Item In oBody
  Set oShapes = Item
      For Each oItem In oShapes.Shapes
        If oItem.Name = Then
            GoTo Sprungmarke_ExitFor
        End If
      Next
  Next
Next

Sprungmarke_ExitFor:

MsgBox oItem.Parent.Parent.Name  '------ Name des zugehörigen Bodies


Da die Benennung der Elemente innerhalb eines Parts normalerweise unikal ist (also nur einmal vorkommt), dürfte die Zuordnung über den Namen kein Problem bereiten.

Zumindest der Sprungbefehl funktioniert nur in VB, im CATScript muss die Schleife anders verlassen werden (mit If ... Then-Abfragen). Ob die For..Each Schleifen im CATScript funktionieren, weiss ich nicht. Aber auch diese lassen sich (wenn auch umständlicher) mit z.B. For i = 1 to CATIA.ActiveDocument.Part.Bodies.Count .... programmieren.

Hoffe es hilft, Gruss

TomTom1972


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

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: 22. Mrz. 2005 11: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 EmilioSanchez 10 Unities + Antwort hilfreich

Hallo,

kleiner Nachtrag.
Fehler in der For-Schleife (vergessen)

...
If oItem.Name = sSearchedPadName Then
...

Gruss

TomTom1972

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

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: 07. Apr. 2005 13: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 Nur für EmilioSanchez 10 Unities + Antwort hilfreich

Hallo,

falls noch Interesse besteht, es geht wesentlich einfacher als oben beschrieben:

Mit der Funktion „FindObject“ der Selection kommst du zum Köper, der zu deiner Fläche gehört (ohne über den Brep zu gehen). Auch im CATScript :

Sub CATMain()

Dim InputObjectType(0) 
Dim Status
Dim oSelection
Set oSelection = CATIA.ActiveDocument.Selection

InputObjectType(0) = "Face"  '---nur Fläche  auswählbar
Status = oSelection.SelectElement2(InputObjectType, "Select", False)  '--- UserSel
If (Status <> "Normal") Then  '-------Auswahl i.O?
  MsgBox "Abort"  '--- nein
  Exit sub
Else  '-------  ...wenn ja, dann...
  Set oSelectedElement = oSelection.FindObject("CATIABody")
  oSelection.Clear
  oSelection.EndSelectElement
  msgbox oSelectedElement.name
End If

End Sub


Gruss

TomTom

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

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: 14. Apr. 2005 21: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

Hallo TomTom,

vielen Dank für deinen Beitrag, funktioniert nun wunderbar.

Die erste Lösung funktionierte bei mir nicht richtig, da ich die deutsche Version verwende. Hier heisst das Objekt z. B. Block, der DisplayName gibt aber Pad zurück. Die Suche nach dem Namen war also erfolglos.

Mit deiner zuletzt beschriebenen Lösung ist's aber super.

Danke

C4N

Bernd

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