;--------------------------------------------------------------------------------- (defun C:CS2CON (/ osmode_old pr pm p1 ang1 ang2 ap rp rc hc pc pl vla-obj-pl vlist nx px apx ac ptx pty lastline verk pcx punktliste pp) (vl-load-com) (setq osmode_old (getvar "OSMODE")) (alert " CS2CON CS2CON (Circular Sector to conical surface) - projiziert LWPolylinen aus einem Kreissektor auf die Oberfläche des entsprechenden Kreiskegels (c) scj, 2017 www.ant-ares.de www.black-cad.de" ) (setq punktliste nil) (setq pr (getpoint "\nAussen-Punkt auf Sektorende :")) (setq pm (getpoint "\nKreismittelpunkt :")) (setq p1 (getpoint "\nPunkt am anderen Sektorende :")) (setq ang1 (angle pr pm)) (setq ang2 (angle p1 pm)) (setq ap (- ang2 ang1)) (setq rp (distance pr pm)) (setq rc (/ (* 0.5 ap rp) pi)) (setq hc (sqrt (- (* rp rp) (* rc rc)))) (setvar "OSMODE" 0) (command "_CONE" (list 0 0) rc hc) (setq pc (list 0 0 hc)) (while (setq pl (car (entsel "\nLWPolylinie wählen :"))) (setq vla-obj-pl (vlax-ename->vla-object pl)) (if (= (vlax-get-property vla-obj-pl 'ObjectName) "AcDbPolyline") (progn (setq vlist (vlax-get-property vla-obj-pl 'coordinates)) (setq vlist (vlax-safearray->list (variant-value vlist))) ) (alert "Das war keine Polylinie !") ) (setq nx 0) ; Berechnung der transformierten Punkte (repeat (/ (length vlist) 2) (setq px (list (nth nx vlist) (nth (1+ nx) vlist))) (setq apx (abs (- (angle px pm) ang1))) (setq ac (/ (* apx rp) rc)) (setq ptx (* rc (cos ac))) (setq pty (* rc (sin ac))) (command "_LINE" pc (list ptx pty 0) "") (setq lastline (list (entlast) (list ptx pty 0))) (setq verk (- (distance px pm) rp)) (command "_LENGTHEN" "_DE" verk lastline "") (setq pcx (cdr (assoc 11 (entget (entlast))))) (entdel (entlast)) (setq punktliste (cons pcx punktliste)) (setq nx (+ 2 nx)) ) (setq punktliste (reverse punktliste)) (command "_3dpoly") (foreach pp Punktliste (command pp) ) (command "") (setq punktliste nil) ) (setvar "OSMODE" osmode_old) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (prompt "\n") (prompt "Starten durch Eingabe von CS2CON auf der Befehlszeile" ) (princ)