; Zeichnen einer "Gardinenlinie"und einer "gerafften Gardinienlinie" ; www.black-cad.de (defun C:raffen () (setq diff (/ pi 10.0)) ; (setq diff 0.4) (setq raff (getreal "\nAnzahl Falten:")) (setq ra (* 2 raff)) (setq amp (getreal "\nAmplitude:")) (setq per (getreal "\nPeriodenlaenge:")) (setq per (/ per 2)) (setq ff (getreal "\nFormfaktor:")) (setq t 0) (setq p1 (list 0 0)) (command "_pline") (command p1) (setq abbr (* ra pi)) (while (<= t abbr) (setq a ( * 2 t )) (setq sa (sin a)) (setq x ( - t (* ff sa))) (setq x (/ (* x per) pi)) (setq sa (sin t)) (setq y (* amp sa) ) (setq p2 ( list x y)) (command p2 ) (setq t ( + t diff)) ) ;endwhile (command nil) (setq ss (ssget "_L")) (command "_AREA" "_E" ss) (setq gesla (getvar "perimeter")) (setq altla (* ra per)) (princ"\n Laenge auf x:") (print altla) (setq neula (getreal "\nneue Laenge :")) (setq neuper (/ neula raff)) (setq neuper (/ neuper 2.0)) (setq la (/ gesla (* 4.0 ra))) (setq lax (/ neula (* 4.0 ra))) (setq wu (- (* la la) (* lax lax))) (setq neuamp (sqrt wu) ) (setq neuamp (* 2.0 neuamp)) (setq t 0) (setq ffneu (/ (* ff altla) neula)) (command "_pline") (command p1) (setq abbr (* ra pi)) (while (<= t abbr) (setq a ( * 2 t )) (setq sa (sin a)); (setq x ( - t (* ffneu sa))) (setq x (/ (* x neuper) pi)) (setq sa (sin t)) (setq y (* neuamp sa) ) (setq p2 ( list x y)) (command p2 ) (setq t ( + t diff)) ) ;endwhile (command "" ) )