(defun c:loo( / a b c d1 e PT pt1 PTT pt2 pt3 lst1 d2 d3 lst2 lst3 LN laynmlst NL OL e1 e2 e3) ;(init_bonus_error ;(list ; (list "cmdecho" 0 ; "expert" 0 ;) ;T ;) ;)(setvar "osmode" 0) (setq pt1 (getpoint "\nSelect First Corner Point:")) (setq pt (getCORNER PT1 "\nSelect Second Corner Point:")) (setq pt2 (getpoint "\nEnter The Ready place Point:")) (setq a (ssget "C" PT PT1)) (LAYERLIST)(SETQ NL NIL OL NIL) (FOREACH LN laynmlst (IF (= (STRLEN LN) 4)(SETQ NL(CONS LN NL)))) (SETQ laynmlst NL)(setq lst1 NIL)(setq lst2 NIL)(setq lst3 NIL) (FOREACH LN laynmlst (SETQ LN (SUBSTR LN 1 4))(IF (/=OL LN)(PROGN(SETQ OL LN)(IF (= (SUBSTR LN 1 1) "D")(SETQ lst1(CONS LN lst1)))))) (SETQ NL NIL OL NIL) (FOREACH LN laynmlst (SETQ LN (SUBSTR LN 1 4))(IF (/= OL LN)(PROGN(SETQ OL LN)(IF (= (SUBSTR LN 1 1) "P")(SETQ lst2(CONS LN lst2)))))) (SETQ NL NIL OL NIL) (FOREACH LN laynmlst (SETQ LN (SUBSTR LN 1 4))(IF (/= OL LN)(PROGN(SETQ OL LN)(IF (= (SUBSTR LN 1 1) "S")(SETQ lst3(CONS LN lst3)))))) (setq e1 0) (setq e2 0) (setq e3 0) (setq d1 0) (setq d2 0) (setq d3 0) (IF lst1(while (( d1 (LENGTH lst1)) (setq c (nth d1 lst1)) (command "layer" "lock" "*" "") (SETQ C (STRCAT C "*")) (command "layer" "unlock" c "") (setq pt3 (list (+ (car pt2)(* (DISTANCE PT PT1) e1) ) (cadr pt2))) (command "copy" a "" pt1 pt3) (SETQ PTT(POLAR PT3 (/ PI 2.7) (/ (DISTANCE PT PT1)1.5) )) (COMMAND "TEXT" "J" "BL" PTT "200 "0" (nth d1 lst1)) (setq d1 (+ d1 1)) (setq e1 (+ e1 1)) )) (IF lst2(while (( d2 (LENGTH lst2)) (setq c (nth d2 lst2)) (command "layer" "lock" "*" "") (SETQ C (STRCAT C "*")) (command "layer" "unlock" c "") (setq pt3 (list (+ (car pt2)(* (DISTANCE PT PT1) e2 ) )(+ (cadr pt2) (*(DISTANCE PT PT1)2)))) (command "copy" a "" pt1 pt3) (SETQ PTT(POLAR PT3 (/ PI 2.7) (/ (DISTANCE PT PT1)1.5) )) (COMMAND "TEXT" "J" "BL" PTT "200" "0" (nth d2 lst2)) (setq d2 (+ d2 1)) (setq e2 (+ e2 1)) )) (IF lst3(while (( d3 (LENGTH lst3)) (setq c (nth d3 lst3)) (command "layer" "lock" "*" "") (SETQ C (STRCAT C "*")) (command "layer" "unlock" c "") (setq pt3 (list(+(car pt2)(* (DISTANCE PT PT1) e3) ) (+ (cadr pt2) (DISTANCE PT PT1)))) (command "copy" a "" pt1 pt3) (SETQ PTT(POLAR PT3 (/ PI 2.7) (/ (DISTANCE PT PT1)1.5) )) (COMMAND "TEXT" "J" "BL" PTT "200" "0" (nth d3 lst3)) (setq d3 (+ d3 1)) (setq e3 (+ e3 1)) )) (command "layer" "unlock" "*" "") ; (restore_old_error) (setvar "osmode" 39) ) (defun LAYERLIST (/ layname sortlist name templist layer_number) (setq sortlist nil) (setq templist (tblnext "LAYER" T)) (while templist (if (/= (logand 16 (cdr (assoc 70 templist))) 16) (progn (setq name (cdr (assoc 2 templist))) (setq sortlist (cons name sortlist)) ) ) (setq templist (tblnext "LAYER")) ) (if ()= (getvar "maxsort") (length sortlist)) (progn (setq sortlist (acad_strlsort sortlist)) ) (setq sortlist (reverse sortlist)) ) (setq laynmlst sortlist) ) (PRINC "\n\t Press LO to layout the plate!")? |