Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Koordinaten von HybridShapeNear ausgeben (und Punkten, aber das funktioniert)

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:  Koordinaten von HybridShapeNear ausgeben (und Punkten, aber das funktioniert) (833 mal gelesen)
Effak
Mitglied


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

Beiträge: 6
Registriert: 04.09.2009

CATIA V5R18

erstellt am: 24. Sep. 2009 17: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

Hi,

ich möchte einige Koordinaten verschiedener Punkt-Typen relativ zu einem beliebig auswählbaren Koordinatensystem ausgeben.
Bisher läuft das auch wunderbar, da ich bei Punkten (Point, Point2D, HybridShapePointOnSurface) ja per .GetCoordinates die absoluten Koordinaten herausbekomme und die mit den Koordianten des gewählten Achsensystem verrechnen kann.

Schwierig wird es jetzt nur, da ich das gleiche auch mit HybridShapeNears machen möchte. Dort ist das Auslesen ja nicht so direkt möglich, weshalb ich dort auch nicht weiterkomme. Mir sind bei meiner Suche zu dem Thema die Fetzen "GetMinimumDistance" und "Measurable" begegnet mit der Idee (die ich für ganz sinnvoll halte) den minimalen Abstand zwischen "Punkt" und den jeweiligen Flächen (xy, yz, zx) des gewählten Koordinatensystems per GetMinimumDistance zu messen.

An dieser Stelle wäre ich für Unterstützung sehr dankbar, da ich nicht rausgefunden habe, wie ich das genau im Code umsetze.

Zu meinem bisherigen Skript:
Ist in VBA geschrieben, da es an anderer Stelle 2 Forms benötigt.

Der Benutzer hat zuvor das Achsensystem ausgewählt:

Code:
strSelStatus = oSel.SelectElement2(myTypeAxisSystem, "Bitte wählen Sie das Achsensystem, auf das sich die Koordinaten beziehen sollen", True)
If strSelStatus = "Normal" Then
    Set oAxisSystem = oSel.Item2(1).Value
End If

(es steht also in oAxisSystem bereit)

Das Achsensystem wird "aufgedröselt" in

Code:
oAxisSystem.GetOrigin aCoordSystem
oAxisSystem.GetXAxis xAxis
oAxisSystem.GetYAxis yAxis
oAxisSystem.GetZAxis zAxis

Die Elemente, deren Koordinaten ausgegeben werden sollen wurden nach ihrer Selektion gefiltert und in das Array myPoints() geschrieben.
(Nur Point, Point2D, HybridShapePointOnSurface und HybridShapeNear sind noch im Array, der Rest wird ignoriert)

Danach werden die Elemente entsprechend Ihres Typs einzeln "verarbeitet" und die Koordiante (relativ zu AxisSystem) errechnet:

Code:
For i = 1 To Ubound(myPoints)
    'Koordianten bestimmen
    Select Case TypeName(myPoint(i))
        Case "Point"
            myPoints(i).GetCoordinates aCoordPoint
            x = Round(xAxis(0) * (aCoordPoint(0) - aCoordSystem(0)) + xAxis(1) * (aCoordPoint(1) - aCoordSystem(1)) + xAxis(2) * (aCoordPoint(2) - aCoordSystem(2)), 3)
            y = Round(yAxis(0) * (aCoordPoint(0) - ...
            z = Round(zAxis(0) * (aCoordPoint(0) - ...

        Case "Point2D"
        Case "HybridShapePointOnSurface"
            [Funktionieren genauso]

        Case "HybridShapeNear"
        * ??? *

    End select
next i


Wie kann ich nun die (Relativ-)Koordinaten eines HybridShapeNear abfragen? 


Wozu mir grade noch einfällt: Hat jemand eine Idde, wieso ich mit obigem Code (trotz richtigem Achsensystem) bei "Point2D"-Punkten immer falsche Werte bekomme?
z.B. z=0=const., wobei die Punkte alle auf [x, 100, z] liegen, also y=const. ist aber der Rest variabel - vermutlich meine Unachtsamkeit.

Im Voraus vielen Dank für eure Anregungen

Viele Grüße,
Effak

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

torstnm
Mitglied


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

Beiträge: 8
Registriert: 03.09.2007

Dell Precision M6500
12GB Ram
Win 7
Catia V5 R18-24
VB6, .NET

erstellt am: 25. Sep. 2009 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 Nur für Effak 10 Unities + Antwort hilfreich

Bin nicht sicher was da mit deinem near passiert,
vielleicht hilfts ja in deiner schleife erstmal alle Punkte "dummzukopieren"
und dann von diesen die Koords zu holen?

etwa sowas in schleife:

Code:
Set ref_Point = wzk3d.AddNewPointDatum(bauteil.CreateReferenceFromObject(myPoint(i)))
geoset.AppendHybridShape ref_Point
bauteil.UpdateObject ref_Pointpunktkopie

irgendwo noch das reinsetzen oder eigene verwenden falls schon drin
Code:
Set bauteil = CATIA.ActiveDocument.Part
Set wzk3d = bauteil.HybridShapeFactory


------------------
mfg Torsten
---------------------------------
Mein "Hobby"  C-CON Tools für Catia V5

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

Effak
Mitglied


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

Beiträge: 6
Registriert: 04.09.2009

CATIA V5R18

erstellt am: 28. Sep. 2009 09:03    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

Zitat:
Bin nicht sicher was da mit deinem near passiert,

Gute Morgen,

naja es ist "einfach nur da"  . Ich habe "Punkte", die per Verschneidung+Near entstanden sind und ich will die Position relativ zu einem gewählten Achsensystem auslesen.
Generell geht es um die Ausgabe von einer Menge Koordinaten. Da allerdings nicht alle Punkte, die ausgegeben werden sollen, "Points" sind, muss ein anderer Weg her.

Ich probiere es mal aus, Hilfspunkte zu verwenden, die ich nach der Ausgabe wieder lösche. Ist leider nicht ganz so "sauber", wie wenn man es direkt messen könnte.

Mfg

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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 28. Sep. 2009 11:00    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 Effak 10 Unities + Antwort hilfreich


formeleditor.jpg

 
Hallo,

vielleicht mal ein ganz anderer Ansatz.
Erstelle dir am Anfang 3 Parameter (x,y,z)

Wenn du deine Elemente in einer Selection oder einem Array hast, gehst du diese eines nach dem anderem durch.
Innerhalb dieser Schleife erstellst du 3 Formeln, die du mit den Parametern verknüpfst.
Beispiel für X Koordinate:
Length.1 = `Geometrical Set.1\Near.1`->coord(1)
Die 1 hinter coord steht für die X-Koordinate, 2 für Y, usw.

Am Ende der Schleife solltest du daran denken, die 3 Formeln wieder zu löschen. Am Ende des Makros solltest du dann noch die 3 Parameter löschen.

------------------
MfG
Randle

! It's not a bug, it's a feature !

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

Effak
Mitglied


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

Beiträge: 6
Registriert: 04.09.2009

CATIA V5R18

erstellt am: 28. Sep. 2009 17: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

Hi,
hat alles geklappt (ich lasse jetzt temporäre Punkte erstellen, die sofort wieder gelöscht werden).
Vielen Dank und einen schönen Abend noch.

Edit: Vielleicht hilft das noch wem:

Code:
For i = 1 To Ubound(myPoints)
Select Case TypeName(myPoints(i))
...
Case "HybridShapeNear"
    'Temporäres GEO-Set erstellen
    Set myGeoSet = bHybridBodies.Add
    myGeoSet.Name = "Temporäres GeoSet für Hilfspunkte"

    'Hilfspunkt auf NEAR-Element erstellen
    Set myHelperPoint = myHybShapeFac.AddNewPointDatum(myPart.CreateReferenceFromObject(myPoints(i)))
    myHelperPoint.Name = "Temporärer Hilfspunkt zu " & myPoints(i).Name
    myGeoSet.AppendHybridShape myHelperPoint
    myPart.UpdateObject myHelperPoint
   
    'Koordianten vom Hilfspunkt bestimmen
    myHelperPoint.GetCoordinates aCoordPoint
    x = Round(xAxis(0) * (aCoordPoint(0) - aCoordSystem(0)) + xAxis(1) * (aCoordPoint(1) - aCoordSystem(1)) + xAxis(2) * (aCoordPoint(2) - aCoordSystem(2)), 3)
    y = Round(yAxis(0) * (aCoordPoint(0) - aCoordSystem(0)) + yAxis(1) * (aCoordPoint(1) - aCoordSystem(1)) + yAxis(2) * (aCoordPoint(2) - aCoordSystem(2)), 3)
    z = Round(zAxis(0) * (aCoordPoint(0) - aCoordSystem(0)) + zAxis(1) * (aCoordPoint(1) - aCoordSystem(1)) + zAxis(2) * (aCoordPoint(2) - aCoordSystem(2)), 3)

    'Hilfspunkt wieder löschen
    oSel.Clear
    oSel.Add myHelperPoint
    oSel.Add myGeoSet
    oSel.Delete
...
End select
next i


(Ist nicht vollständig, da die DIMs, Achsensystemwahl, etc. bei mir in einem anderen Bereich sind)

[Diese Nachricht wurde von Effak am 28. Sep. 2009 editiert.]

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