| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | MAIT erhält den Abas Partner Performance Award 2025, eine Pressemitteilung
|
Autor
|
Thema: Schnittpunkt v. 2 unendl. Hilfslinien (1713 mal gelesen)
|
Patrick Weber Mitglied Konstruktionstechniker, Admin
  
 Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 04. Nov. 2008 14:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Community! Ich versuche seit einiger Zeit den Schnittpunkt zweier unendlicher Hilfslinien auf einer AE abzufragen und komme zu keinem Ergebnis.
Code:
; *schnipp* (setf R 3) (setf GAMMA 12) (setf P0 (make-gpnt2d :x 0 :y 0)) (setf PU (make-gpnt2d :x 0 :y (* -1 R))) (c_line_inf :vertical P0) (c_line_inf :angle PU (* -1 (sd-deg-to-rad GAMMA))) (setf L1 (sd-call-cmds (get_selection :focus_type *sd-c-geom-2d-seltype* :curr_wp_only :single_selection :select :c_edge_2d P0 ))) (setf L2 (sd-call-cmds (get_selection :focus_type *sd-c-geom-2d-seltype* :curr_wp_only :single_selection :select :c_edge_2d PU ))) (setf P1 (sd-inq-edge-edge-int-pts L1 L2 :Dest-space :local)) (display L1) (display L2) (display (sd-inq-edge-geo L1)) (display (sd-inq-edge-geo L2)) (display P1) ; *schnapp*
Code:
#S(SEL_ITEM PATH (#S(NPARCEL SIMPLE-ENTITY-PTR 75740736) #S(NPARCEL SIMPLE-ENTITY-PTR 357734720)) TYPE 75748752 ITEM #S(EDGE SIMPLE-ENTITY-PTR 359844304))#S(SEL_ITEM PATH (#S(NPARCEL SIMPLE-ENTITY-PTR 75740736) #S(NPARCEL SIMPLE-ENTITY-PTR 357734720)) TYPE 75748752 ITEM #S(EDGE SIMPLE-ENTITY-PTR 359844304)) #S(SD-EDGE S-START 0.0 S-END 0.0 START-PNT 0.0,0.0,0.0 END-PNT 0.0,0.0,0.0 LL-PNT 0.0,0.0,0.0 UR-PNT 0.0,0.0,0.0 CLOSED NIL PERIODIC NIL) #S(SD-EDGE S-START 0.0 S-END 0.0 START-PNT 0.0,0.0,0.0 END-PNT 0.0,0.0,0.0 LL-PNT 0.0,0.0,0.0 UR-PNT 0.0,0.0,0.0 CLOSED NIL PERIODIC NIL) NIL
Wie man sieht, wählt er die Elemente aus (hoffe ich mal, wenn kein Fehler kommt ) - nur leider ohne verwertbaren Inhalt, also Punkt und Richtung usw. und deshalb auch keinen Schnittpunkt. Hat jemand eine Idee an den Schnittpunkt zu kommen, ohne jetzt den ganzen Krams über Vektorrechnung auszurechnen? (das wollte ich mir dadurch eigentlich ersparen) Bitte erleuchtet mich! ------------------ Grüße pw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
highway45 Moderator Bastler mit Diplom
       

 Beiträge: 6385 Registriert: 14.12.2004 CoCreate Modeling V20 + PE6 NotePad++
|
erstellt am: 04. Nov. 2008 15:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Patrick Weber
|
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 04. Nov. 2008 16:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Patrick Weber
Hallo Patrick, leg mal den Startpunkt der 2. Hilfslinie statt auf x=0 auf z.B. x=2, dann wirst du ein Ergebnis bekommen. Kannst du dir denken, worauf ich hinaus will? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Patrick Weber Mitglied Konstruktionstechniker, Admin
  
 Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 04. Nov. 2008 20:44 <-- editieren / zitieren --> Unities abgeben:         
Verdammt! Ich habe den Fehler gefunden... Auf meiner Skizze ist die erste Hilfslinie (L1) eine Vertikale. Die Arbeitsebene ist aber um den Winkel Alpha eingedreht, wodurch die Linie nicht mehr vertikal ist. Also LISP angepasst und funzt nun. @highway45: Hatte ich mir schon vorher angeschaut, brachte mir aber keine Erleuchtung. @holt: Willst du auf einen Fangbereich anspielen oder auf eine mögliche Punktüberdeckung? Letztere wird durch meine Variablendefinition im Dialog nicht möglich sein. ------------------ Grüße pw
[Diese Nachricht wurde von Patrick Weber am 05. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 05. Nov. 2008 11:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Patrick Weber
Zitat: Original erstellt von Patrick Weber: @holt: Willst du auf einen Fangbereich anspielen oder auf eine mögliche Punktüberdeckung? Letztere wird durch meine Variablendefinition im Dialog nicht möglich sein.
Nein! Aber es hat etwas mit dem Fang zu tun. Überleg mal: Am Punkt PU liegen 2 Hilfslinien. Mit deinem LISP ist nicht gewährleistet, dass die schräge Hilfslinie gefunden wird. Tatsächlich wird bei beiden get_selection die selbe (senkrechte) Hilfslinie gefunden. Und die beiden ( ) haben keinen Schnittpunkt. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Patrick Weber Mitglied Konstruktionstechniker, Admin
  
 Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 05. Nov. 2008 13:12 <-- editieren / zitieren --> Unities abgeben:         
Ja, hast schon Recht. Wären ja beides Vertikale bei x=0. Genau das war auch mein Fehler. Ich hätte nicht :vertical nehmen dürfen, sondern hätte die Hilfslinie im Winkel setzen müssen. Code:
(setf PN (make-gpnt2d :x 0 :y 0)) ; Nullpunkt AE (setf PU (make-gpnt2d :x 0 :y (* -1 R))) ; Hilfspunkt - legt Durchmesser des Tunnelangusses fest (setf P1 (make-gpnt2d :x (- 0 0.1) :y 0)) ; Punkt für Vertikale + Offset links (geometry_mode :real) (c_line_inf :angle P1 (sd-deg-to-rad (- 90 ALPHA))) ; Vertikale an Einsatzwand + Offset links (c_line_inf :angle PU (* -1 (sd-deg-to-rad GAMMA))) ; Tunnelwandlinie (setf L1 (sd-call-cmds (get_selection :focus_type *sd-c-geom-2d-seltype* :curr_wp_only :single_selection :select :c_edge_2d P1 ))) ; fange Vertikale (setf L2 (sd-call-cmds (get_selection :focus_type *sd-c-geom-2d-seltype* :curr_wp_only :single_selection :select :c_edge_2d PU ))) ; fange Tunnelwandlinie (setf P2 (sd-gpnt3d-to-2d (first (sd-inq-edge-edge-int-pts L1 L2 :Dest-space :local)))) ; Schnittpunkt Vertikale - Tunnelwandlinie (delete_2d P1)
------------------ Grüße pw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 06. Nov. 2008 06:26 <-- editieren / zitieren --> Unities abgeben:          Nur für Patrick Weber
Zitat: Original erstellt von Patrick Weber: Ich hätte nicht :vertical nehmen dürfen, sondern hätte die Hilfslinie im Winkel setzen müssen.
Ob du eine Linie als Vertikale oder geneigte mit Winkel 90° erstellst spielt keine Rolle. Das Problem ist, dass am Punkt PU 2 Linien durchgehen und bei :single_selection die erste gefundene zurückgegeben wird. Das ist dann zufällig wieder sie senkrechte. Du solltest in solchen Fällen nicht mit :single_selection arbeiten sondern alle an dem Punkt liegenden Linien sammeln und den Inhalt der Liste mit der bereits vorher gefundenen Linie vergleichen. Oder in einer :check-function die gereits gefundenen Linie herausfiltern. (Dann kann glaub ich wieder :single_selection verwendet werden.) ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Patrick Weber Mitglied Konstruktionstechniker, Admin
  
 Beiträge: 659 Registriert: 20.11.2006
|
erstellt am: 06. Nov. 2008 08:53 <-- editieren / zitieren --> Unities abgeben:         
Ein Bild sagt mehr als tausend Worte. Beide Linien können nicht durch Punkt PU laufen, da PU_y != P1_y durch R>0,25 und entsprechenden Anstellwinkel ALPHA>10° und 6°<GAMMA<12°. [Diese Nachricht wurde von Patrick Weber am 06. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 06. Nov. 2008 19:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Patrick Weber
Hallo Patrick, ich habe deinen veränderten Code leider nicht mehr gelesen und habe mich immer auf deinen ursprünglichen Code bezogen:
Code: (setf P0 (make-gpnt2d :x 0 :y 0)) (setf PU (make-gpnt2d :x 0 :y (* -1 R))) (c_line_inf :vertical P0) (c_line_inf :angle PU (* -1 (sd-deg-to-rad GAMMA)))
Und da gehen definitiv beide durch den Punkt PU! Das ist die Erklärung dafür, dass das Ergebnis des Schnittpunkts nil war. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |