Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  VBA Makro zur Bestimmung einer Flächennormalen

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:  VBA Makro zur Bestimmung einer Flächennormalen (1072 / mal gelesen)
Loogic
Mitglied


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

Beiträge: 1
Registriert: 29.06.2016

erstellt am: 29. Jun. 2016 20:48    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 liebe CATIA-Experten,

ich habe ein Makro geschrieben, das mir erlaubt durch das Klicken auf ein "planar face" eines Bauteils ein neues Part auf dem Flächenschwerpunkt zu platzieren. Das funktioniert soweit ganz gut, allerdings kommt es bei der Ermittlung der Flächennormalen (die für die Bestimmung des benötigten Drehwinkels des zu platzierenden Parts notwendig ist) zu einem Fehler:

Die Flächennormale ermittele ich über

Code:
Dim Planecoord(8)
Measurable.GetPlane Planecoord


Dadurch erhalte ich den ersten und zweiten Vektor der Fläche (Einträge 3 bis 5 bzw 6 bis 8 in Planecoord). Aus diesen Bilde ich dann das Kreuzprodukt um den Normalenvektor der Fläche zu erhalten.

Code:

normx = Planecoord(4) * Planecoord(8) - Planecoord(7) * Planecoord(5)
normy = Planecoord(5) * Planecoord(6) - Planecoord(8) * Planecoord(3)
normz = Planecoord(3) * Planecoord(7) - Planecoord(6) * Planecoord(4)

Dieser Zeigt nun aber scheinbar nicht immer aus dem Bauteil heraus, sondern manchmal hinein, was bei der Rotation des Objektes zu einem um 180° falschen Winkel führt.

Meine Frage lautet also: Kann ich auf diese Art und Weise überhaupt den aus dem Körper zeigenden Normalenvektor ermitteln, oder erkennt CATIA gar nicht wie die Flächen, aus denen der Körper besteht, orientiert sind?

Gibt es eventuell noch andere Möglichkeiten zur Ermittlung der Flächennormalen?


Falls hilfreich, hier noch mehr vom verwendeten Code. So greife ich auf die Daten über die Fläche zu:

Code:

Set Sel = CATIA.ActiveDocument.Selection
Set Sel2 = CATIA.ActiveDocument
Dim ObjektTyp(0)
ObjektTyp(0) = "PlanarFace"   
Sel.Clear
Do    ' Do...LOOP-Schleife
  Auswahl = Sel.SelectElement2(ObjektTyp, "Positionierungsfläche auswählen...", False)  ' Aufforderung Catia-Fenster unten links
    If Auswahl = "Normal" Then  ' wenn Auswahl erfolgt dann...
    Set Objekt = Sel.Item(1)
     
'Daten erfassen--------------------------------------
    'Flächeninhalt bestimmen
    Dim spabench As SPAWorkbench
    Dim mymeas As Measurable
    Dim ref1 As Reference
    Dim myans As Double
    Set ref1 = Sel.Item(1).Reference
'Flächenorientierung bestimmen
    Dim myans3 As Double
    Set usersel2 = Sel.Item(1).Value
    Set Inertia2 = spabench.Inertias.Add(usersel2)
    Set part2 = Sel
    Set Measurable2 = spabench.GetMeasurable(ref1)
    Dim Planecoord(8)
    Measurable2.GetPlane Planecoord


Vielen Dank im Voraus!

Loogic

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 29. Jun. 2016 23:43    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 Loogic 10 Unities + Antwort hilfreich

Hi Loogic,

Zitat:

Gibt es eventuell noch andere Möglichkeiten zur Ermittlung der Flächennormalen?

Mit 'AddNewLineNormal' kannst Du eine Normale auf einer Fläche erzeugen.
Nicht ganz dasselbe, aber vielleicht hilft's Dir weiter.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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