Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  tatsächlicher Winkel einer Linie

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 Autodesk Produkte
Autor Thema:  tatsächlicher Winkel einer Linie (2535 mal gelesen)
jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 15. Nov. 2017 15: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

Hallo zusammen,

die Frage hört sich wahrscheinlich trivial an, aber ich bin seit Jahren aus der Lispprogrammierung raus und muss jetzt wieder loslegen.

Ich suche eine Möglichkeit den tatsächlichen Winkel einer Linie zu bekommen. Wenn ich mir die mit _list anschaue zeigt mir die Kiste den Winkel in der xy-Ebene an. Genau diesen Winkel würde ich gern über Lisp ermitteln um damit weiter zu arbeiten. Mir (angle Punkt1 Punkt2) komme ich da nicht weiter da dieses Ergebnis ja davon abhängt in welcher Reihenfolge ich die zwei Punkte ermittle. D.h. der kann mal Beispielsweise 45° oder auch 225° haben. Ich hoffe ich habe mich verständlich ausgedrückt.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 15. Nov. 2017 15:12    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 jörg.jwd 10 Unities + Antwort hilfreich

geht per (vla-get-angle vla-object)
oder per (angle startpunkt endpunkt)

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Nov. 2017 15:25    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 jörg.jwd 10 Unities + Antwort hilfreich

(if(and(setq L(entget(car(entsel "Line:"))))(=(cdr(assoc 0 L))"LINE"))(*(/(angle(cdr(assoc 10 L))(cdr(assoc 11 L)))PI)180))

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 15. Nov. 2017 15:29    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:
Original erstellt von CADwiesel:
geht per (vla-get-angle vla-object)
oder per (angle startpunkt endpunkt)


...sorry von vl-irgendwas habe ich leider keinen Plan. Das gab's zu meiner Zeit noch nicht. Mit deine zweiten Idee komme ich leider nicht weiter da in dem Fall der Winkel davon abhängt in welcher Reihenfolge die zwei Punkte definiert werden.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

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

jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

Win7-64,Win10-64
SWX 2010/11/12/13/14/15/16/17/18,19,20,21,22
Immer das aktuellste SP
Autodesk Product Design Suite Standard 2020
DraftSight Énterprise 2021SP2
CIM Database 11.3 32GB RAM. NVIDIA Quadro P1000

erstellt am: 15. Nov. 2017 15: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

Zitat:
Original erstellt von CADmium:
(if(and(setq L(entget(car(entsel "Line:"))))(=(cdr(assoc 0 L))"LINE"))(*(/(angle(cdr(assoc 10 L))(cdr(assoc 11 L)))PI)180))


Hallo Thomas,

so hab ich's ja versucht. Allerdings liefert mir das Ergebnis auch mögliche zwei Winkel abhängig davon ob die Linie z.B. von unten nach oben gezeichnet wurde oder umgekehrt.

Zum Verständnis für alle:
ich versuche momentan eine kleine Routine zu schreiben die mir Symetrielinien zwischen zwei Linien zeichnet.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Nov. 2017 16:23    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 jörg.jwd 10 Unities + Antwort hilfreich

etwas primi :

(defun C:SYMLINE(/ L1 L2 P11 P12 P13 P21 P22 P23)
  (if(and(setq L1(entget(car(entsel "\nLinie 1:"))))(=(cdr(assoc 0 L1))"LINE")
        (setq L2(entget(car(entsel "\nLinie 2:"))))(=(cdr(assoc 0 L1))"LINE")
        (setq P11(cdr(assoc 10 L1)))(setq P12(cdr(assoc 11 L1)))(setq P13(mapcar '*(mapcar '+ P11 P12)'( 0.5 0.5 0.5)))
        (setq P21(cdr(assoc 10 L2)))(setq P22(cdr(assoc 11 L2)))(setq P23(mapcar '*(mapcar '+ P21 P22)'( 0.5 0.5 0.5)))       
    )
    (if(<(distance P11 P21)(distance P11 P22))
      (command "_line" (mapcar '* (mapcar '+ P11 P21) '(0.5 0.5 0.5))
                      (mapcar '* (mapcar '+ P12 P22) '(0.5 0.5 0.5))""
      )
      (command "_line" (mapcar '* (mapcar '+ P11 P22) '(0.5 0.5 0.5))
                      (mapcar '* (mapcar '+ P12 P21) '(0.5 0.5 0.5))""
      )
    )
  )
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 15. Nov. 2017 16:30    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 jörg.jwd 10 Unities + Antwort hilfreich

oder so
Code:
(defun getMitte (/ lineA lineB LU RO LINE)
  (if (and
        (setq lineA (vlax-ename->vla-object (car (entsel))))
        (setq LineB (vlax-ename->vla-object (car (entsel))))
        (setq LU (mapcar '+
                        (vlax-curve-getstartpoint lineA)
                        (vlax-curve-getclosestpointto
                          LineB
                          (vlax-curve-getstartpoint lineA)
                          ) ;_ end of vlax-curve-getclosestpointto
                        ) ;_ end of mapcar
              ) ;_ end of setq
        (setq LU (mapcar '/ LU '(2.0 2.0 2.0)))
        (setq RO (mapcar '+
                        (vlax-curve-getendpoint lineA)
                        (vlax-curve-getclosestpointto
                          LineB
                          (vlax-curve-getendpoint lineA)
                          ) ;_ end of vlax-curve-getclosestpointto
                        ) ;_ end of mapcar
              ) ;_ end of setq
        (setq RO (mapcar '/ RO '(2.0 2.0 2.0)))
        ) ;_ end of and
    (setq LINE (vl-catch-all-apply
                'vla-addline
                (list
                  (vla-get-ModelSpace
                    (vla-get-activedocument
                      (vlax-get-acad-object)
                      ) ;_ end of vla-get-activedocument
                    ) ;_ end of vla-get-ModelSpace
                  (vlax-3d-point LU)
                  (vlax-3d-point RO)
                  ) ;_ end of list
                ) ;_ end of vl-catch-all-apply
          ) ;_ end of setq
    ) ;_ end of if
  )

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 16. Nov. 2017 08: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


2017-11-16_071448.jpg


2017-11-16_073236.jpg

 
@CADwiesel:

wie ich oben schon geschrieben habe sind vl-Routinen für mich böhmische Dörfer   Für mein CAD-Programm (DraftSight) wohl auch (siehe Bild).
Trotzdem Danke für deine Bemühungen.

@Thomas:

die Idee mit dem Mittelpunkt zwischen den Endpunkten hatte ich auch. Sieht auch gut aus wenn die Endpunkte nicht allzu weit auseinander liegen. Stimmt aber auch da nicht. Ich hab dir mal einen Screenshot dazu angehängt wo's eindeutig wird. Hab mein Programm auch soweit hinbekommen dass es "fast richtig" funktioniert, nur wenn die beiden Linien weit auseinander liegen stimmt der Winkel im Ergebnis nicht (um 90° verdreht). Werde mal weiterkämpfen und melden wenn's geklappt hat.

Auch dir trotzdem Danke für deine Bemühungen.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

[Diese Nachricht wurde von jörg.jwd am 16. Nov. 2017 editiert.]

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 16. Nov. 2017 09:50    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 jörg.jwd 10 Unities + Antwort hilfreich

Hallo Jörg,

da hat es wohl Interpretationsunterschiede zum Begriff "Symmetrielinie" gegeben. Ich hätte es auch wie Thomas (CADmium) interpretiert. Aber zu Deiner Interpretation fällt mir folgendes ein:
Den Schnittpunkt Deiner beiden Linien und damit einen Punkt der gesuchten findest Du mit (inters ...)
Von diesem Punkt aus ermittels Du mit (angle ...) die Winkel zu jeweils einem Punkt der beiden Linien (egal welcher) und der Mittelwert von beiden gibt Dir den Winkel Deiner gesuchten Linie. Mit (polar ...) kannst Du Dir dann einen zweiten Punkt berechnen und die Linie zeichnen.

HTH
Gruß
Thomas

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 16. Nov. 2017 10:29    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 jörg.jwd 10 Unities + Antwort hilfreich

(defun C:SYMLINE(/ L1 L2 P11 P12  P21 P22 S W1 W2 W OLDOSMODE GETW)
  (defun GETW(W)
    (if(numberp W)
      (progn
        (setq W(*(-(abs W)(* 6.283185307(fix(/(abs W)6.283185307))))(if(< W 0) -1.0 1.0)))
        (if(>(abs W) 3.141592654)(setq W (- W (* 6.283185307 (if(< W 0) -1.0 1.0))))W)
        (if(<= W 0)(+ W 3.141592654)W)
      )   
    )
  ) 
  (if(and(setq L1(entget(car(entsel "\nLinie 1:"))))(=(cdr(assoc 0 L1))"LINE")
        (setq L2(entget(car(entsel "\nLinie 2:"))))(=(cdr(assoc 0 L1))"LINE")
        (setq P11(cdr(assoc 10 L1)))(setq P12(cdr(assoc 11 L1)))
        (setq P21(cdr(assoc 10 L2)))(setq P22(cdr(assoc 11 L2)))
    )
  (if(and(or(setq S(inters P11 P12 P21 P22 nil))
            (setq S(mapcar '* (mapcar '+ P11 P21) '(0.5 0.5 0.5)))
          ) 
          (setq W1(GETW(angle P11 P12)))
          (setq W2(GETW(angle P21 P22)))
          (setq W(*(+ W1 W2)0.5))
          (setq P1(polar S    W  1000))
          (setq P2(polar S (+ W PI ) 1000))
      )
    (progn
      (setq OLDOSMODE (getvar "OSMODE"))
      (setvar "OSMODE" 0)
      (command "_line" P1 P2 "")
      (setvar "OSMODE" OLDOSMODE)
    )
  )
  )
)

aber auch da gibt es noch Interpretationsspielraum .. man könnte noch die Klickunkte auswerten usw ...

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 16. Nov. 2017 12: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

So, geschafft *schwitz*.

Zitat:
Original erstellt von spider_dd:
Hallo Jörg,
Den Schnittpunkt Deiner beiden Linien und damit einen Punkt der gesuchten findest Du mit (inters ...)
Von diesem Punkt aus ermittels Du mit (angle ...) die Winkel zu jeweils einem Punkt der beiden Linien (egal welcher) und der Mittelwert von beiden gibt Dir den Winkel Deiner gesuchten Linie. Mit (polar ...) kannst Du Dir dann einen zweiten Punkt berechnen und die Linie zeichnen.

HTH
Gruß
Thomas



@Spider_dd:
diese Idee war schon fast so umgesetzt Ähnlich wie das Prog von Cadmium. Einzig die Idee gleich den Winkel zum gemeinsamen Schnittpunkt der beiden Linien zu benutzen ist mir nicht gekommen.

Zitat:
Original erstellt von CADmium:

aber auch da gibt es noch Interpretationsspielraum .. man könnte noch die Klickunkte auswerten usw ...



@CADmium
Dein Programm ist mit dem meinen fast identisch und bringt den gleichen Fehler wie meins.            Wenn die beiden Linien in verschiedenen Richtungen (die eine von unten nach oben und die andere von oben nach unten)gezeichnet sind ist der resultierende Winkel leider um 90° verdreht. Genau dieses Problem hat mich veranlasst diesen Thread aufzumachen (schlussendlich mit Erfolg).         

Ich möchte mich bei allen nochmals herzlich bedanken für die guten Tipps. Ü's sind unterwegs.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

[Diese Nachricht wurde von jörg.jwd am 16. Nov. 2017 editiert.]

[Diese Nachricht wurde von jörg.jwd am 16. Nov. 2017 editiert.]

[Diese Nachricht wurde von jörg.jwd am 17. Nov. 2017 editiert.]

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 16. Nov. 2017 13:16    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 jörg.jwd 10 Unities + Antwort hilfreich

Hallo
ich hätte es so gemacht.
Code:
(defun c:syml (/)
  (setq LI1 (car (entsel)))
  (setq LI2 (car (entsel)))
  (setq OOSMODE (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq LI1S (getpropertyvalue LI1 "StartPoint"))
  (setq LI1E (getpropertyvalue LI1 "EndPoint"))
  (setq LI2S (getpropertyvalue LI2 "StartPoint"))
  (setq LI2E (getpropertyvalue LI2 "EndPoint"))
  (setq
    ItersPT (inters LI1S LI1E LI2S LI2E nil)
  )
  (command "klinie" ItersPT
  (polar ItersPT
  (/ (+ (if(<=(angle ItersPT LI1S)(angle ItersPT LI1E))
  (angle ItersPT LI1S)
  (angle ItersPT LI1E))
(if(<=(angle ItersPT LI2S)(angle ItersPT LI2E))
  (angle ItersPT LI2S)
  (angle ItersPT LI2E))
    )
    2
  )
  (getpropertyvalue LI2 "Length")
  )
  ""
  )
  (setvar "OSMODE" OOSMODE)
)

------------------
Gruß Wolfgang

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 16. Nov. 2017 19:53    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 jörg.jwd 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von jörg.jwd:
Hallo zusammen,

die Frage hört sich wahrscheinlich trivial an, aber ich bin seit Jahren aus der Lispprogrammierung raus und muss jetzt wieder loslegen.

Ich suche eine Möglichkeit den tatsächlichen Winkel einer Linie zu bekommen. Wenn ich mir die mit _list anschaue zeigt mir die Kiste den Winkel in der xy-Ebene an. Genau diesen Winkel würde ich gern über Lisp ermitteln um damit weiter zu arbeiten. Mir (angle Punkt1 Punkt2) komme ich da nicht weiter da dieses Ergebnis ja davon abhängt in welcher Reihenfolge ich die zwei Punkte ermittle. D.h. der kann mal Beispielsweise 45° oder auch 225° haben. Ich hoffe ich habe mich verständlich ausgedrückt.


Ich verstehe den Wortsinn Deine Aussage, aber der beruht auf Unkenntnis der mathematischen Sachlage. Eine Linie bzw eine Gerade hat erst mal gar keinen Winkel, sondern ist durch zwei Punkte vollständig definiert. Für einen Winkel aber brauchst Du mindestens drei Punkte, nämlich einen Scheitelpunkt, und zwei Punkte, zwischen denen gegen den Uhrzeigersinn über den Scheitelpunkt dann ein Winkel definiert ist.

Eine Linie hat also nur dann einen Winkel, wenn man die Linie in Bezug zu irgend etwas setzt, das dann die Interpretation der drei Punkte erlaubt, zwischen denen der Winkel aufgespannt ist. Für eine Linie im kartesischen Raum gibt man deshalb sinnvollerweise den Winkel IN der XY-Ebene an, UND den Winkel AUS der XY-Ebene.

Das sind dann auch gleich die bekannten Koordinatenangaben, die man für jeden Punkt im kartesischen System eindeutig benennen kann, und die in AutoCAD trivialerweise durch "@ABSTAND<WINKEL" (für 2D, also IN der XY-Ebene) oder "@ABSTAND<WINKEL<WINKEL" als Zylinderkoordinaten eingegeben werden können.

Und natürlich ergibt sich da jeweils ein anderer Winkel, je nachdem von welchem Endpunkt aus man beginnt. In AutoCAD ist eine Linie aber tatsächlich eindeutig durch Startpunkt und Endpunkt definiert. Der Startpunkt findet sich unter dem DXF-Gruppencode 10, der Endpunkt unter DXF-Gruppencode 11. Es gibt da also eine Nomenklatur, die Dir zeigt, ob die Linie nun 45° in der XY-Ebene liegt, oder 315°.

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 17. Nov. 2017 09:06    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 jörg.jwd 10 Unities + Antwort hilfreich

Hallo Jörg,
ich hab mir das alles hier mal durchgelesen und bin zu dem Ergebnis gekommen dass es um Winkel geht die nicht größer oder gleich 180° sind.

Wenn der Winkel z.B. 225° ist soll 45° verwendet werden.
Sollte ich das richtig verstanden haben dann einfach 180 abziehen wenn der Winkel größer oder gleich 180° ist.
Also:

Code:
(if (>= w 180.0)
  (setq w (- w 180.0))
)(

Sollte ich das nicht richtig verstanden haben ... dann nicht.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 17. Nov. 2017 09:17    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 jörg.jwd 10 Unities + Antwort hilfreich

Im grunde ja das probelm siehst du wenn du das prog von cadmium nimmst und 2 rechtwinklige linien zeichnest ich habe den fehler in meinem code etwas umgangen. Die abhängigkeit der Linien zu einander ist das Problem
linie von links nach rechts 0 grad von r nach l 180 und wie liegt dann die 2te linie von oben nach unten 270 grad oder von u nach o 90 grad.

------------------
Gruß Wolfgang

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



CAD-Designer:in

Die Strojmetal Singen GmbH ist Teil der MTX-Gruppe mit über 2.500 Mitarbeitern. Gemeinsam mit unserem Produktionsstandort in Tschechien gehören wir zu den weltweit führenden Aluminiumschmieden, insbesondere für ausgewählte Automotive-Teile. Die primär im tschechischen Mutterwerk hergestellten Leichtbau-Produkte werden von uns in enger Zusammenarbeit mit unseren Kunden ausgelegt und vertrieben. Die ...

Anzeige ansehenKonstruktion, Visualisierung
jörg.jwd
Ehrenmitglied V.I.P. h.c.
CAD-PDM Administrator


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 17. Nov. 2017 12:56    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 zusammen,

schön dass ihr immer noch an meinem Problem "knabbert"  Wie ich hier bereits geschrieben habe ich mein Problem bereits gelöst. 

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

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