Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Flächennormale

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO
Autor Thema:  Flächennormale (1825 mal gelesen)
StephanWörz
Mitglied
Maschinenbautechniker


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

Beiträge: 770
Registriert: 11.10.2000

Xenon 3.2GHz
24GB Ram
nVidia Quadro 4000
OSDM 17M050 & 18.1
SWX 2008
PHOENIX V10

erstellt am: 08. Nov. 2013 10:42    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

...eine weiter Hürde ist aufgetaucht:

In einem Dialog habe ich eine Variable des Typ :face

Wie komme ich nun an die Flächennormale dieser Fläche, damit ich diese im Code weiterverwenden kann??

Im Modeling kann ich via Flächeneigenschaften >> Statistik >> GeoEigenschaften [Bericht] genau diese Werte abfragen.

Im IKit habe ich folgendes gefunden:

Code:

(sd-inq-face-geo face :Dest-space space)
Description:
Returns generic geometric data describing a face in a designated coordinate system.
Parameters:
face {SEL_ITEM} - The face to inquire.
:Dest-space {KEYWORD or SEL_ITEM [:local]}
:local - Data is returned in the coordinate system of the part containing the face.
:global - Data is returned in the global coordinate system.
SEL_ITEM - Represents either an object or an element. Data is returned in the coordinate system of the object or the part/workplane owning the element.
Return Value:
data {SD-FACE} - A Lisp structure.
nil - An error occurred.

Code:

SD-FACE  [structure]

(sd-face-p sd-face)
(sd-face-u-start sd-face)
(sd-face-u-end sd-face)
(sd-face-v-start sd-face)
(sd-face-v-end sd-face)
(sd-face-ll-pnt sd-face)
(sd-face-ur-pnt sd-face)
(sd-face-u-closed sd-face)
(sd-face-u-periodic sd-face)
(sd-face-v-closed sd-face)
(sd-face-v-periodic sd-face)

Description:
A Lisp structure containing generic geometric data for a face.
Slots:
u-start {LONG-FLOAT} - Initial U parameter value on the surface describing the face.
u-end {LONG-FLOAT} - Final U parameter value on the surface describing the face.
v-start {LONG-FLOAT} - Initial V parameter value on the surface describing the face.
v-end {LONG-FLOAT} - Final V parameter value on the surface describing the face.
ll-pnt {GPNT3D} - Coordinates of lower-left point of bounding box.
ur-pnt {GPNT3D} - Coordinates of upper-right point of bounding box.
u-closed {BOOLEAN} - t if face is closed in the U direction; nil if face is open in the U direction.
u-periodic {BOOLEAN} - t if face is periodic in the U direction; nil if face is non-periodic in the U direction.
v-closed {BOOLEAN} - t if face is closed in the V direction; nil if face is open in the V direction.
v-periodic {BOOLEAN} - t if face is periodic in the V direction; nil if face is non-periodic in the V direction.
See Also:
SD-INQ-FACE-GEO [function]
SD-GPNT3D-TO-2D [function]


Leider bekomme ich die Flächennormale hier auch nicht zu packen...

Noch ein Schubs in die richtige Richtung wäre super...

------------------
...viele Grüße
Stephan

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

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


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

Beiträge: 657
Registriert: 20.11.2006

Win7 Pro SP1 64Bit
HP Z230, Core i5, 8GB RAM, nv Quadro K600
Creo Elements/Direct 19.0 M010
ModelManager 19.0 M010
clisp,VB.net,VBA,AHK,php,javascript

erstellt am: 08. Nov. 2013 11:13    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 StephanWörz 10 Unities + Antwort hilfreich

Hier ein LISP, das alle auf einer Ebenen befindlichen Flächen eines Teils einfärbt. Da kannst du das benötigte rausziehen (siehe sd-plane-normal).

Code:

(sd-defdialog 'pw-faces-on-plane
:dialog-title "Flächen auf Ebene"
:toolbox-button t
:variables
'(
(BACKSTATES :initial-value nil)
(AF
:value-type :face :multiple-items nil
:check-function
#'(lambda (new-value)
(if (sd-plane-p (sd-inq-geo-props new-value))
:ok
(values :error "Ebene Fläche erforderlich!")
)
)
:after-input (preview)
:title "Bezugsfläche"
:prompt-text "Bezugsfläche angeben."
)
) ; end variables

:ok-action '(clear-backstates)
:cancel-action '(clear-backstates)
:local-functions '(
(preview ()
(let (
(P1 (sd-plane-origin (sd-inq-geo-props AF :dest-space :global)))
(DIR1 (sd-plane-normal (sd-inq-geo-props AF :dest-space :global)))
(FACES (sd-call-cmds (get_selection :focus_type *sd-plane-seltype* :select :in_part (sd-inq-parent-obj AF))))
)
(when BACKSTATES (sd-return-to-model-checkpoint (pop BACKSTATES)))
(push (sd-set-model-checkpoint) BACKSTATES)
;(sd-call-cmds (part_prop :the_part (sd-inq-parent-obj AF) :color 11393254 :trans :semi :edge_color 0000000))
(dolist (CURR_FACE FACES)
(setf P2 (sd-plane-origin (sd-inq-geo-props CURR_FACE :dest-space :global)))
(setf DIR2 (sd-plane-normal (sd-inq-geo-props CURR_FACE :dest-space :global)))
(when (sd-vec-dir-equal-p DIR1 DIR2)
(when (sd-num-equal-p 0 (sd-vec-scalar-product (sd-vec-subtract P2 P1) DIR1))
(sd-call-cmds (face_prop :the_face CURR_FACE :color 205))
)
)
)
)
)
(clear-backstates ()
(loop while BACKSTATES do
(sd-return-to-model-checkpoint (pop BACKSTATES))
)
)
)
)

------------------
Patrick

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2143
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP ZBook 17 G4, Windows 10 Pro 64

erstellt am: 08. Nov. 2013 11:20    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 StephanWörz 10 Unities + Antwort hilfreich

Willst du jede beliebige Fläche verarbeiten können? Dann musst du für die Flächennormale ja auch einen speziellen Punkt auf der Fläche angeben.
Wenn du aber (denk ich mal) eigentlich eh nur ebene Flächen verarbeiten willst, dann schränke gleich im Auswahldialog die Variable so ein
Code:
MY_FACE :selection (*sd-plane-seltype*)
, dann gehts nachher im Makro einfacher mit SD-PLANE und sd-plane-normal weiter

------------------
meine LISP-Makros sind auf osd.cad.de Disclaimer
Grüße aus Wien

Walter

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

StephanWörz
Mitglied
Maschinenbautechniker


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

Beiträge: 770
Registriert: 11.10.2000

Xenon 3.2GHz
24GB Ram
nVidia Quadro 4000
OSDM 17M050 & 18.1
SWX 2008
PHOENIX V10

erstellt am: 08. Nov. 2013 11:27    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

    ...passt, habs kapiert, funktioniert wie gewünscht!   

Herzlichen Dank!

------------------
...viele Grüße
Stephan

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

StephanWörz
Mitglied
Maschinenbautechniker


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

Beiträge: 770
Registriert: 11.10.2000

Xenon 3.2GHz
24GB Ram
nVidia Quadro 4000
OSDM 17M050 & 18.1
SWX 2008
PHOENIX V10

erstellt am: 12. Nov. 2013 10: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


SD_EngraveText.JPG


SD_EngraveText.lsp

 
Nun bin ich soweit fertig mit dem neuen Tool 

Die Aufgabenstellung war folgende:

Wir müssen in Zukunft bestimmte Teile mit einer Artikelnummer versehen. Diese soll direkt im Modell 0.1mm eingefräst werden.
Der Konstrukteur soll durch Anwahl der zu beschriftenden Fläche, des Textursprungs und der Textrichtung die Artikelnummer bequem aufbringen können. Bei underen Teilen ist die Artikelnummer in einem Attribut gespeichert. Wenn vorhanden, wird diese Nummer als Default-Beschriftungstext gesetzt. Der Text kann aber beliebig geändert werden. Die Textgröße ist auf 3 Varianten beschränkt.

Ich stell das Ganze hier mal zur Vefügung um wieder mal was an das Forum zurück zu geben...

Das ist jetzt nichts spektakuläres, aber vielleicht kann die/der Eine oder Andere ja was damit anfangen oder Ideen daraus ziehen.

------------------
...viele Grüße
Stephan

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

michib
Mitglied
Einzelkämpfer


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

Beiträge: 124
Registriert: 12.12.2007

OSD-Modeling 16.00
OSD-Drafting 16.00
BOM/AdvancedDesign
MM 16.00 VirtualBox
MM HP Z620 WIN10
SD-Modeling/Drafting
HP-Z440 WIN-7
HP-xw4600 WIN-XP+WIN-7

erstellt am: 23. Okt. 2014 09: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 Nur für StephanWörz 10 Unities + Antwort hilfreich


SD_EngraveText.lsp

 
Hallo,
ich habe mir den lisp-code von Stefan füe meine Zwecke angepasst.
Schönheitsfehler:
die Anzeige Fräsen oder Extrudieren stimmt beim Aufruf nicht mit dem ausgeführten
Verfahren überein => es wird immer das zuletzt gewählte Verfahren ausgeführt, nicht das in der Anzeige gewählte. Nur durch vorherige Anwahl wird das richtige Verfahren gewählt.
Wie kann man das beheben?
Gruß Michael

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