| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Parallelität prüfen (1683 mal gelesen)
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 21. Jan. 2010 09:01 <-- editieren / zitieren --> Unities abgeben:
hallo zusammen. ich habe mir eine funktion geschrieben mit der ich zbsp. prüfen kann ob zwei linien parallel sind. habe mich entschieden das über die winkel zu machen. das ergebniss sieht so aus: Code:
(defun parallelcheck (pk11 pk12 pk21 pk22 genauigkeit / pliste2D wk1 wk2 a b c winkel radius kreissehne) ;pk= punktkoordinaten, genauigkeit in m zbsp. 0.00001 (setq pliste2D(mapcar (function(lambda(e / )(append (list (car e)) (list (cadr e))))) (list pk11 pk12 pk21 pk22)));in 2D Punkte und Liste umformen (setq wk1 (angle (nth 0 pliste2D) (nth 1 pliste2D))) (setq wk2 (angle (nth 2 pliste2D) (nth 3 pliste2D))) (setq a (- (max wk1 wk2) (min wk1 wk2)));es werden alle winkel ermittelt (setq b (- (* 2 pi) a)) (setq c (/ (- (max a b)(min a b)) 2)) (setq winkel (min a b c));der kleinste winkel wird weiterbehandelt (setq radius (max (distance (nth 0 pliste2D) (nth 1 pliste2D))(distance (nth 2 pliste2D) (nth 3 pliste2D)))) (setq kreissehne (* 2 radius (sin (/ winkel 2))));kreissehne für abweichung zwischen den linien. dist von der längsten linie (if (< kreissehne genauigkeit) (setq ergebniss kreissehne) (setq ergebniss nil) ) ergebniss );denfun
der input würde so aussehen:
Code:
(while (not (and (setq ent1 (car (entsel "\n1. Linie wählen: ")))(= (cdr (assoc 0 (entget ent1))) "LINE")))) (while (not (and (setq ent2 (car (entsel "\n2. Linie wählen: ")))(= (cdr (assoc 0 (entget ent2))) "LINE")))) (setq obj1 (entget ent1) obj2 (entget ent2)) (setq pk11 (cdr (assoc 10 obj1)) pk12 (cdr (assoc 11 obj1)) pk21 (cdr (assoc 10 obj2)) pk22 (cdr (assoc 11 obj2)))(parallelcheck pk11 pk12 pk21 pk22 genauigkeit)
also erstens mal wäre ich froh wenn ihr euch das mal unter die lupe nehmen könntet. bin mir bei der ganzen sache nicht so sicher. der part: (setq b (- (* 2 pi) a)) (setq c (/ (- (max a b)(min a b)) 2)) (setq winkel (min a b c));der kleinste winkel wird weiterbehandelt gefällt mir nicht wirklich, aber meine mathekendnisse naja die abweichung berechne ich mittels kreissehne was nur eine annäherung ist aber ich würde sagen das tut es... hat schon jemand mal so etwas gemacht? oder giebt es da was? ich habe nichts gefunden. gruss steff Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Jan. 2010 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 21. Jan. 2010 09:45 <-- editieren / zitieren --> Unities abgeben:
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 21. Jan. 2010 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Jan. 2010 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 21. Jan. 2010 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 21. Jan. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:
hallo henning omg und ich mach mir wider eine riisen mühe (inters '(0 0 0) '(0 10 0) '(1 0 0 ) '(1.0000001 10 0) nil) = T (inters '(0 0 0) '(0 10 0) '(1 0 0 ) '(1.00000001 10 0) nil) = nil kann das nicht nachvollziehen aber für meine bedürfnisse genügt das vollkommen. edit: ev fällt der schnitpunkt aus dem koordinatenbereich von acad. [Diese Nachricht wurde von Steff179 am 21. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Jan. 2010 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 21. Jan. 2010 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 21. Jan. 2010 11:42 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Jan. 2010 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für Steff179
weil Mittagspause war ..... (defun DT:WINKEL?(PKT1 PKT2 PKT3 PKT4 / VEKTOR1 VEKTOR2 SKALAR B1 B2 COSINUS WINKEL) (if(and(setq VEKTOR1 (mapcar '- PKT2 PKT1)) (setq VEKTOR2 (mapcar '- PKT4 PKT3)) (setq SKALAR (apply '+ (mapcar '* VEKTOR1 VEKTOR2))) (or(/=(setq B1 (distance '(0.0 0.0 0.0) VEKTOR1))0) (prompt "\nFehler: Nullvektor...") ) (or(/=(setq B2 (distance '(0.0 0.0 0.0) VEKTOR2))0) (prompt "\nFehler: Nullvektor...") ) (setq COSINUS(/ SKALAR (float B1)(float B2))) ) (progn (cond ((equal COSINUS 0 1e-300) (setq Winkel(/ PI 2))) ((>= 1 COSINUS 0) (setq WINKEL (atan(/(sqrt(- 1.0 (* COSINUS COSINUS)))COSINUS))) ) ((<= -1 COSINUS 0) (+ PI (setq WINKEL (atan(/(sqrt(- 1.0 (* COSINUS COSINUS)))COSINUS)))) ) ) (if (< SKALAR 0) (setq WINKEL (- PI WINKEL)) WINKEL ) (princ (strcat"\nWinkel : "(rtos(*(/ WINKEL PI)180) 2 4)"°")) ) ) ) aufruf dann z.B. (DT:WINKEL? (getpoint "\n1.Punkt Gerade 1: " ) (getpoint "\n2.Punkt Gerade 1: " ) (getpoint "\n1.Punkt Gerade 2: " ) (getpoint "\n2.Punkt Gerade 2: " ) ) ------------------ - 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 |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 21. Jan. 2010 13:09 <-- editieren / zitieren --> Unities abgeben:
|