Тема: LISP. Обозначение выносного элемента

;|====================================================
 Обозначение выносного элемента
 Программа Дениса Флюстикова "Elem_Den"
 Макрос для кнопки: ^C^C^P(load "Elem_Den");Elem_Den
 Замечания и предложения по адресу fd-@mail.ru
******************************************************
Если для редактирования размеров используете "DimDen",
то в "DimDen.lsp" замените строчку:
(setq kol_c (vl-string-search "\\H" text))
на:
(setq kol_c (vl-string-search "\\H." text))
====================================================|;
(defun c:Elem_Den (/ aa aa1 aa2 layer CLAYER DIMTOFL DIMCEN DIMTOH DIMTMOVE OSMODE)
(setq layer "Размер"   ; Слой, если активный то nil
      aa1 "А"
      CLAYER (getvar "CLAYER")
      DIMTOFL (getvar "DIMTOFL")
      DIMCEN (getvar "DIMCEN")
      DIMTOH (getvar "DIMTOH")
      DIMTMOVE (getvar "DIMTMOVE")
      OSMODE (getvar "OSMODE"))
(initget 128)
(setq aa (getpoint "\nЦентр выносного элемента [А/Б/В/Г/Д/Е/Ж/З/И/К/Л/М/Н]<А>:"))
(if (null aa)(setq aa aa1))
(if (= (type aa) 'STR)
(setq aa1 aa
      aa (getpoint (strcat "\nЦентр выносного элемента " aa1 ":")))
)
(setvar "CMDECHO" 0)
(vl-cmdf "_.undo" "_g")
(if (= (type aa) 'LIST)(progn
(if layer
(if (tblsearch "Layer" layer)
(vl-cmdf "_.'layer" "_s" layer "")))
(princ (strcat "\nРадиус выносного элемента " aa1 ":"))
(if (vl-cmdf "_.circle" aa pause)(progn
(setq aa1 (strcat "\\H1.5x;" aa1)   ; Высота обозначения отн. шрифта размерного стиля
      aa2 (entget (entlast))
      aa (cdr (assoc 10 aa2))
      aa2 (cdr (assoc 40 aa2))
      aa2 (polar aa 0 aa2)
      aa2 (trans aa2 0 1))
(setvar "DIMBLK" "_None")
(setvar "DIMTOFL" 0)
(setvar "DIMCEN" 0)
(setvar "DIMTOH" 1)
(setvar "DIMTMOVE" 0)
(setvar "OSMODE" 0)
(princ "\nПоложение обозначения выносного элемента:")
(if (vl-cmdf "_.dimradius" aa2 "_t" aa1 pause)
(setq aa1 nil))
(setvar "DIMBLK" ".")
(setvar "DIMTOFL" DIMTOFL)
(setvar "DIMCEN" DIMCEN)
(setvar "DIMTOH" DIMTOH)
(setvar "DIMTMOVE" DIMTMOVE)
(setvar "OSMODE" OSMODE)
))))
(setvar "CLAYER" CLAYER)
(vl-cmdf "_.undo" "_e")
(setvar "CMDECHO" 1)
(if aa1 (vl-cmdf "_.undo" 1))
(princ)
)

Re: LISP. Обозначение выносного элемента

;|====================================================
Обозначение выносного элемента
Программа Дениса Флюстикова "Elem_Den" от 28.01.06(учтены особенности различн.разм.стилей)
Макрос для кнопки: ^C^C^P(load "Elem_Den");Elem_Den
Замечания и предложения по адресу fd-@mail.ru
******************************************************
Если для редактирования размеров используете "DimDen",
то в "DimDen.lsp" замените строчку:
(setq kol_c (vl-string-search "\\H" text))
на:
(setq kol_c (vl-string-search "\\H." text))
====================================================|;
(defun c:Elem_Den (/ aa aa1 aa2 layer CLAYER DIMTOFL DIMCEN DIMTOH DIMTMOVE
           DIMATFIT DIMASSOC DIMSAH SORTENTS OSMODE)
(setq layer "Размер"   ; Слой, если активный то nil
      aa1 "А"
      CLAYER (getvar "CLAYER")
      DIMTOFL (getvar "DIMTOFL")
      DIMCEN (getvar "DIMCEN")
      DIMTOH (getvar "DIMTOH")
      DIMTMOVE (getvar "DIMTMOVE")
      DIMATFIT (getvar "DIMATFIT")
      DIMASSOC (getvar "DIMASSOC")
      DIMSAH (getvar "DIMSAH")
      SORTENTS (getvar "SORTENTS")
      OSMODE (getvar "OSMODE"))
(initget 128)
(setq aa (getpoint "\nЦентр выносного элемента [А/Б/В/Г/Д/Е/Ж/З/И/К/Л/М/Н]<А>:"))
(if (null aa)(setq aa aa1))
(if (= (type aa) 'STR)
(setq aa1 aa
      aa (getpoint (strcat "\nЦентр выносного элемента " aa1 ":")))
)
(setvar "CMDECHO" 0)
(vl-cmdf "_.undo" "_g")
(if (= (type aa) 'LIST)(progn
(if layer
(if (tblsearch "Layer" layer)
(vl-cmdf "_.'layer" "_s" layer "")))
(princ (strcat "\nРадиус выносного элемента " aa1 ":"))
(if (vl-cmdf "_.circle" aa pause)(progn
(setq aa1 (strcat "\\H1.5x;" aa1)   ; Высота обозначения отн. шрифта размерного стиля
      aa2 (entget (entlast))
      aa (cdr (assoc 10 aa2))
      aa2 (cdr (assoc 40 aa2))
      aa2 (polar aa 0 aa2)
      aa2 (trans aa2 0 1))
(setvar "DIMBLK" "_None")
(setvar "DIMTOFL" 0)
(setvar "DIMCEN" 0)
(setvar "DIMTOH" 1)
(setvar "DIMTMOVE" 0)
(setvar "DIMATFIT" 3)
(setvar "DIMASSOC" 2)
(setvar "DIMSAH" 0)
(setvar "SORTENTS" 127)
(princ "\nПоложение обозначения выносного элемента:")
(setvar "OSMODE" 0)
(vl-cmdf "_.dimradius" aa2 "_t" aa1)
(setvar "OSMODE" OSMODE)
(if (vl-cmdf pause)(setq aa1 nil))
(setvar "DIMBLK" ".")
(setvar "DIMTOFL" DIMTOFL)
(setvar "DIMCEN" DIMCEN)
(setvar "DIMTOH" DIMTOH)
(setvar "DIMTMOVE" DIMTMOVE)
(setvar "DIMATFIT" DIMATFIT)
(setvar "DIMASSOC" DIMASSOC)
(setvar "DIMSAH" DIMSAH)
(setvar "SORTENTS" SORTENTS)
))))
(setvar "CLAYER" CLAYER)
(vl-cmdf "_.undo" "_e")
(setvar "CMDECHO" 1)
(if aa1 (vl-cmdf "_.undo" 1))
(princ)
)

Re: LISP. Обозначение выносного элемента

А такой вопрос. На AutoCADe 2006 пойдет?

Re: LISP. Обозначение выносного элемента

Пойдет. По крайней мере должно.

Re: LISP. Обозначение выносного элемента

Некое продолжение эта тема получила здесь:
https://www.caduser.ru/forum/topic30748.html
Просьба посмотреть, т.к. есть вопросы...

Re: LISP. Обозначение выносного элемента

Какие вопросы? И в какой теме?

Re: LISP. Обозначение выносного элемента

> kpblc
Если перейти по ссылке, то почти в конце страницы представлена функция (defun c:v_elem...), сделанная на основе программы Дениса Флюстикова "Elem_Den". Вот там я задал пару вопросов, ответы на которые и хотелось бы услышать от знатоков lisp'a...