|
Тема |
Re: слоеве [re: kolumb] |
|
Автор | StSt (Нерегистриран) | |
Публикувано | 09.06.06 11:41 |
|
|
Ето ти програма, извеждаща легенда и спецификация на блоковете
;нова програма за изброяване и показване на блокове
(defun c:blkspec (/ i mx ISCALE nab BLKLIST BLNAME en bll name pt oldtxt oldLAY)
(ALERT "В легендата ще се включат всички блокове, които:
\n1.Имат невидим константен атрибут с име \"N\" или \"HIDDENNAME\"
\n2.Не са в ИЗКЛЮЧЕН слой или в слой \"LEGEND\"
\n
\nЗа да включите блоковете само в част от чертежа
\nпредварително селектирайте необходимите елементи.
\nВ селекцията може да влизат всякакви елементи ")
(PROMPT "Изберете обектите за легенда или `ENTER` за всички")
(if (or
(setq i 0 mx 0 ISCALE 1 nab (ssget))
(setq nab (ssget "x" '((0 . "INSERT"))))
);or
(PROGN
(SETQ BLKLIST NIL BLNAME NIL BLL NIL)
(REPEAT (SSLENGTH nab)
(SETQ EN (SSNAME NAB I)
I(1+ I))
(IF (and
(/= "LEGEND"(STRCASE(cdr(ASSOC 8 (entget en)))))
(>= (cdr(ASSOC 62 (TBLSEARCH "layer" (cdr(ASSOC 8 (entget en))))))0)
(= "INSERT"(cdr(ASSOC 0 (entget en))))
);and
(PROGN
(SETQ NAME (CDR(ASSOC 2 (ENTGET en)))
mx (max mx (abs (cdr(ASSOC 41 (entget en))))))
(IF (NOT (ASSOC NAME BLKLIST))
(SETQ BLKLIST (APPEND BLKLIST (LIST(CONS NAME 1)))
BLNAME (APPEND BLNAME (LIST (CONS NAME (CDR (ASSOC 2 (ENTGET EN))))))
BLL (APPEND BLL (LIST NAME ))
);SETQ
(SETQ BLKLIST (SUBST (CONS NAME (1+ (CDR (ASSOC NAME BLKLIST))))(ASSOC NAME BLKLIST)BLKLIST))
);IF NOT ASSOC NAME IN BLKLIST
);PROGN
);IF GET-CATT
);REPEAT
(if (not bll)
(ALERT "НЯМА ИМЕНОВАНИ БЛОКОВЕ")
(if
(setq i 0 pt (getpoint "\nНачална точка на легендата"))
(PROGN
(setq oldtxt (GETVAR "textsize")
oldLAY (GETVAR "CLAYER"))
(setvar "textsize" (* mx 0.3 ISCALE))
(COMMAND "LAYER" "M" "LEGEND" (COMMAND))
(COMMAND "text" pt (GETVAR "textsize") 0 "ЛЕГЕНДА И СПЕЦИФИКАЦИЯ"(COMMAND))
(COMMAND "TEXT" "" "-----------------------"(COMMAND))
(FOREACH MM (VL-SORT BLL '<)
(setq i (1+ i))
(COMMAND "TEXT" "" "")
(COMMAND "TEXT" "" (STRCAT (if (= 0 (rem i 2))"" " ")
(STRCASE MM) " - " (ITOA (CDR(ASSOC MM BLKLIST)))" БР.")(COMMAND))
(SETQ PT (CDR(ASSOC 10 (ENTGET(ENTLAST)))))
(COMMAND "INSERT" (CDR(ASSOC MM BLNAME))(MAPCAR '+ PT (LIST (* (+ (rem i 2)-3) mx ISCALE) 0)) MX MX 0 )
);FOREACH
(repeat 10 (COMMAND " "))
(setvar "textsize" oldtxt)
(setvar "CLAYER" oldLAY)
);PROGN
(ALERT "НЕ Е ПОСОЧЕНА НАЧАЛНА ТОЧКА НА ЛЕГЕНДАТА")
);if pt
);if not BLL
);PROGN
(if (not nab)(ALERT "Няма избрано"))
);if
);blkspec
|
| |
|
|
|