Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  indicateorselectelement3d Problem

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:  indicateorselectelement3d Problem (3396 mal gelesen)
pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 03. Nov. 2011 09:59    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

bin neu hier im Forum und auch Anfänger in Sachen Makroprogrammierung.

Mein Aufgabe. ich muss auf einer ebene eine beliebige Stelle mit der Maus anklicken und die Koordinaten dieses angeklickten Punktes ausgeben.
Ich habe mir gedacht die Funktion IndicateorselectElement3D wäre geeignet. An sich funktioniert es auch schon so halb. habe allerdings 2 probleme.

Ich kann einen Punkt auswählen und mit die koord zurückgeben. allerdings funktioniert es nicht wenn ich auf eine geometrie (Linie, Punkt) klicke. dann gibt er mir die koordinaten vom letzten punkt aus. meine Funktion funktioniert quasi nur wenn ich eine Stelle im "leeren" Raum auswähl...soll aber auch funktionieren wenn ich einen stelle auf zb einer linie auswähle.

das zweite problem. Mein code Funktioniert als *.catscript. ich müsste es aber als VBA zum laufen bringen. Hab schon gegooglet und diverse lösungen mit executescript das script auszuführen. ist aber nciht ganz praktekabel. gibt es ne möglichkeit die Indicateorselectelement3D in VBA zum laufen zu bekommen?

Wäre für Vorschläge und hilfen offen und würde mich freuen...
vielen dank


Hier mein Code

 

Zitat:
Sub CATMain()

Dim Ergebnis As String
Dim XZ(1), XYZ(2) As Double
Dim SelInd As Boolean
Dim Filter(0)
Dim Selektion As Selection

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1")
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapePlaneOffset1 = hybridShapes1.Item("Plane.1")

Filter(0) = "PlanarBiDimInfinite"

Set Selektion = CATIA.ActiveDocument.Selection

Selektion.Clear
Ergebnis = Selektion.IndicateOrSelectElement3D(hybridShapePlaneOffset1 , "Auswahl",Filter, True, False,False, SelInd, XZ, XYZ)
MsgBox ("X-eben= " & XZ(1) & ", Z-eben= " & XZ(0) & Space(15) & "X-3D= " & XYZ(0) & ", Y-3D= " & XYZ(1) & ", Z-3D= " & XYZ(2))
MsgBox (Ergebnis)

End Sub



[Diese Nachricht wurde von pfannensepp am 03. Nov. 2011 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: 07. Nov. 2011 21:02    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 pfannensepp 10 Unities + Antwort hilfreich

Servus
Willkommen im Form. Bitte Systeminfo ausfüllen.
Die Funktion "IndicateorselectElement3D" ist irgendwie zum Projizieren des Punktes auf eine Ebene (ganz blicke ich dies auch nicht). Versuch es mal mit "GetCoordinates" der Selection.
Code:
Sub CATMAin()
Dim oDoc As Document
Dim oSel As Selection
Dim filter(0)
Dim dblLength1(2)
Dim Status As String

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc.Selection

filter(0) = "AnyObject"

Status = oSel.SelectElement2(filter, "Bitte 1. Punkt auswählen", False)
If Status <> "Normal" Then
        MsgBox "Es wurde kein Punkt gewählt. Das Makro wir beendet"
        Exit Sub
End If
  
oSel.Item2(1).GetCoordinates dblLength1

MsgBox "X=" & dblLength1(0) & "; Y=" & dblLength1(1) & "; Z=" & dblLength1(2)

End Sub


Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 07. Nov. 2011 editiert.]

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 21. Nov. 2011 08:52    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

Vielen Dank für die Antwort, komme gerade aus dem urlaub, deswegen dei späte Reaktion.
Aber ich kann doch die Funktion GetCoordinates der Selektion nicht anwednen, da ich eine Selektion im "leeren" Raum machen müsste. Ich will ja einen beliebige Stelle auf einer Ebene anwählen. Also auch einen Stelle wo sich keine Geometrieelemente befinden. Das funktioniert allerdigs dann mit der Selektion nicht.
Verstehst du mein problem?

Lg

pfannensepp

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. Nov. 2011 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 pfannensepp 10 Unities + Antwort hilfreich

Servus
Wenn du einen Punkt im leeren Raum anklickst, kann das aber nur ein Punkt auf  der Bildschirmebene sein, oder unendlich viele Punkte auf einer Gerade senkrecht zur Bildschirmebene?
Was für einen Punkt willst du?

Gruß
Bernd

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

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 21. Nov. 2011 11: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

ich will den punkt auf der Bildschirmebene. Nicht alle dahinter:-) also nur den Punkt in der "Ansichtsebene" oder wie man sie nennen will.

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. Nov. 2011 19: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 Nur für pfannensepp 10 Unities + Antwort hilfreich

Servus
Setze mal den Filter, im Code aus deinem ersten Beitrag, auf:
  Filter(0) = "AnyObject"
und oObjectSelected in IndicateOrSelectElement3D auf true:
  Ergebnis = Selektion.IndicateOrSelectElement3D(hybridShapePlaneOffset1, "Auswahl", Filter, True, False, False, True, XZ, XYZ)
Dann werden bei plausible Werte ausgespuckt, egal was ich anklicke.

Gruß
Bernd

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

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 22. Nov. 2011 08:34    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


eins.JPG


zwei.JPG

 
Hi
ich hab jetzt meinen Code so verbessert wie du gesagt hast. leider das gleiche Problem. Ich habe besipielsweise einen punkt bei 500/0/500 (s. Anhang Bild eins) wenn ich knapp neben diesen punkt klicke bekomm ich richtige werte s. MsgBox. wenn ich das skript dann einzweites mal starte und genau auf den punkt klicke (also die koordinaten 500/0/500. bekomm ich die selben werte vom vorherigen durchgang.
wenn ich auf den punkt fahre ändert sich der mauszeiger auch von pfeil auf hand. ich denke es hat damit was zu tun. wer will das object irgendwie selektieren und gibt mir daduch nicht die koordinaten aus.
oder klappt das nur bei mir nicht?

[Diese Nachricht wurde von pfannensepp am 22. Nov. 2011 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: 22. Nov. 2011 19: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 pfannensepp 10 Unities + Antwort hilfreich

Servus
Jetzt hab ich dein Problem auch verstanden bzw habe es nachvollziehen können.
Du könntest nach dem indicateorselectelement3d abfragen, ob ein Objekt selektiert wurde ( If Selektion.Count <> 0 Then), falls ja, die Koordinaten wie in meinem ersten Post ermitteln (leider nicht projiziert), wenn nein, dann über die oWindowLocation3D der IndicateOrSelectElement.

Gruß
Bernd

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

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 24. Nov. 2011 07: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

vielen dank erstmal! ich hab noch nicht ganz vetrstanden wie du das meinst bgrittmann. Wenn ich mit indicateorselectelement3d was abfrage und dann wird eine geometrie angeklickt. wie soll ich im nachhinein mit windowlocation3D (was ist das für befehl ich habe ihn nicht gefunden?) die stelle nochmal abfragen? dazu müsste4 der anwender ja die stelle nocheinmal anklicken oder?! oder versteh ich das falsch?

gruß

Sepp

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. Nov. 2011 07:59    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 pfannensepp 10 Unities + Antwort hilfreich

Servus
Du lässt einfach deine Selektion wie du sie hast, wenn ein Objekt Selektiert wurde (If Selektion.Count <> 0 Then) lässt du dir über .GetCoodrinates die Koordinaten ermitteln, wenn kein Objekt selektiert wurde nimmst du einfach deinen Array XYZ.

Gruß
Bernd

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

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 25. Nov. 2011 11:55    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

So..bin jetzt endlich dazu gekommen hier weiterzumachen. Vielen Dank bgrittmann! Es funktioniert jetzt soweit. Allerdings nur als CATScript. ich bekomme den code nicht im VBA zum laufen... weiß hier jemand noch einen rat?
Es kommt die Fehlermedlung "Type mismatch" bei dem befehl indicateorselect3D.
Kann es sein das der Befehl im VBA nicht funktioniert? Wenn ja, gibt es einen Workaround? beispielsweiße das CATScript mit VBA aufrufen und die werte aus dem CATScript übergeben?

Mein Aktueller und im CATScript funktioniertender Code

Code:
Dim Ergebnis As String
Dim XZ(1), XYZ(2) As Double
Dim SelInd As Boolean
Dim Filter(0)
Dim Selektion As Variant

Dim coord(2) As Single

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1")
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapePlaneOffset1 = hybridShapes1.Item("Plane.1")

Filter(0) = "AnyObject"
Set Selektion = CATIA.ActiveDocument.Selection

Selektion.Clear
Ergebnis = Selektion.IndicateOrSelectElement3D(hybridShapePlaneOffset1, "Auswahl", Filter, False, False, False, False, XZ, XYZ)
If Selektion.Count <> 0 Then
Selektion.Item(1).GetCoordinates coord
MsgBox (coord(0) & "  " & coord(2))

Else
MsgBox ("X-eben= " & XZ(1) & ", Z-eben= " & XZ(0) & Space(15) & "X-3D= " & XYZ(0) & ", Y-3D= " & XYZ(1) & ", Z-3D= " & XYZ(2))
End If



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. Nov. 2011 12:02    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 pfannensepp 10 Unities + Antwort hilfreich

Servus
Schau nochmal in die Doku. AFAIR muss XZ und XVZ als Variant dimensioniert sein.
ggf bei "Dim Selektion" das "as Variant" entfernen.

Gruß
Bernd

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

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

pfannensepp
Mitglied



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

Beiträge: 74
Registriert: 03.11.2011

HP Z800
12x 2,66Ghz
24GB RAM
CATIA V5 R19

erstellt am: 25. Nov. 2011 12:21    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

Sehr gut! Es klappt!
Vielen Dank für die Kompetente Hilfe! Damit kann man ja eigentlich getrost ins Wochenende gehen;-)

Gruß pfannesepp

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