;Mehrfachkopie - Anpassungen S. Rief, Fachschule für Holztechnik, Stuttgart ;multiple copy at angle utility ;(defun C:CM () (defun C:Zwischenkopie () (setq A nil) (setq OM (getvar "OSMODE")) (setvar "OSMODE" 33) (setq PNT1 (getpoint "\nzwischen (ersten Punkt zeigen): ")) (setq PNT2 (getpoint "\nund (zweiten Punkt zeigen): " PNT1))(terpri) (initget 1 "M E A") (prompt "\nArt der Zwischenkopie wählen: ") (setq CTYPE (getkword "\n(M)aximaler Abstand (E)xakter Abstand (A)nzahl der Kopien: ")) (if (= CTYPE "M") (setq SP (getdist "\nMaximaler Abstand zwischen den Objekten: "))) (if (= CTYPE "E") (setq SP (getdist "\nGenauer Abstand zwischen den Objekten: "))) (if (= CTYPE "A") (setq SP (getreal "\nAnzahl der Objekte: "))) (setq DIST (distance PNT1 PNT2)) (setq ANG (angle PNT1 PNT2)) (setq TEMP1 (/ DIST SP)) (setq TEMP2 (fix (/ DIST SP))) (setq INC1 SP) (setq INC2 (/ DIST (+ 1 (fix (/ DIST SP))))) (setq INC3 (/ DIST (- SP 1))) (if (= TEMP1 TEMP2) (setq INC INC1) (setq INC INC2)) (if (= CTYPE "E") (setq INC INC1) (setq INC INC)) (if (= CTYPE "A") (setq INC INC3) (setq INC INC)) (setq TMS (FIX (+ 0.00001 (/ DIST INC)))) (setvar "OSMODE" 0) (setq A (ssget)) (setq INCR 0) (repeat TMS (setq INCR (+ INCR INC)) (setq NEWPT (polar PNT1 ANG INCR)) (command "_copy" A "" PNT1 NEWPT) ) (setvar "OSMODE" OM) (setq A nil) );end zwischenkopie.lsp