; Funktion zeichnet einen Bogen tagential an eine gewählte Linie (defun c:arct ( / ang pc rad ref obj z werte ) ;;; (alert "Es kann nur in Linienrichtung\nein neuer Bogen gesetzt werden") (setq ref (getvar "osmode")) (setvar "osmode" 0) (while (not z) (if (not (setq rad (getreal "\nWähle einen Bogenradius "))) (princ " Gib ein Radius ein! ") (progn (setq z 1) rad ) ) ) (setq z nil) (if (= "LINE" (cdr (assoc 0 (setq rec (entget (car (while (not z) (if (not (setq obj (entsel "\nWähle eine Linie aus "))) (princ "\n Nichts gewählt!") (progn (setq z 1) obj ) ) ) ) ) ) ) ) ) (if (and (setq werte (list ;Radius (cons "rad" rad) ; Linienpunkt1 (cons "pt1" (cdr (assoc 10 rec))) ; Linienpunkt2 (cons "pt2" (if (null i) (progn (setvar "osmode" 512) (cdr (assoc 11 rec))))) ; Tangentpunkt für Bogen (cons "pt3" (getpoint "\nWähle einen Linienpunkt, wo der Bogen angetragen werden soll ")) ; gew. Bogenendpunkt (cons "pt4" (getpoint "\nWähle einen Bogenendpunkt ")) (cons "ang" (angle (cdr (assoc 10 rec)) (cdr (assoc 11 rec)))) ) ) (setvar "osmode" 0) ) (apply '(lambda (rad p1 p2 p3 p4 ang) ; Kontrollroutine von Ernst alias geos im cad.de forum ; prüft ob der Endpunkt rechts oder links der Linie liegt (if (> (* (- (car p2) (car p1)) (- (cadr p4) (cadr p1))) (* (- (cadr p2) (cadr p1)) (- (car p4) (car p1))) ) ; Punkt liegt links (progn (command "_line" p1 p3 "") (entdel (entlast)) (command "_arc" "" (polar (setq pc (polar p3 (+ (/ pi 2) ang) rad)) (angle pc p4) rad ) ) (initget "j n") (if (null (getkword "\n gespiegelte Variante verwenden /nein?")) (progn (entdel (entlast)) (command "_line" p2 p3 "") (entdel (entlast)) (command "_arc" "" (polar (setq pc (polar p3 (+ (/ pi 2) (angle p3 p2)) rad)) (angle pc p4) rad ) ) ) (exit) ) ) ; Punkt liegt rechts (progn (command "_line" p1 p3 "") (entdel (entlast)) (command "_arc" "" (polar (setq pc (polar p3 (+ (- (/ pi 2)) ang) rad)) (angle pc p4) rad ) ) (initget "j n") (if (null (getkword "\n gespiegelte Variante verwenden /nein?")) (progn (entdel (entlast)) (command "_line" p2 p3 "") (entdel (entlast)) (command "_arc" "" (polar (setq pc (polar p3 (+ (/ pi 2) (angle p3 p1)) rad)) (angle pc p4) rad ) ) ) (exit) ) ) ) ) (mapcar 'cdr werte) ) ) (alert "keine Linie gewählt") ) (setvar "osmode" ref) (princ) )