| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

Автоматический перенос размеров на слой размеры. Break макро

Ответ
Поиск в этой теме
Непрочитано 01.03.2005, 12:58
Автоматический перенос размеров на слой размеры. Break макро
Piton
 
Инженер строитель
 
Москва
Регистрация: 24.02.2005
Сообщений: 396

Подскажите макрос на кнопку чтоб команда break разрывала в двух указанных точках (First point, second break point). ACAD2005
---
Добавлено (спасибо VVA): Рабочие варианты
#25
#190
#272
#273

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:42.
Просмотров: 171284
 
Непрочитано 11.06.2009, 10:08
#181
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тогда получается, что надо предлагать обработку для следующих примитивов:
  • Отрезок (_.line)
  • Дуга (_.arc)
  • Полилиния (_.pline)
  • Полигон (_.polygon)
  • 3d-полилиния (_.3dpoly)
  • Мультилиния (_.mline)
  • Окружность (_.circle)
  • Эллипс (_.ellipse)
  • Область (_.region)
  • Штриховка (_.hatch / _.bhatch)
  • Однострочный текст (_.text / _.dtext). Дополнительно настройки текстового стиля - требуются или нет?
  • Многострочный текст (_.mtext). Дополнительно настройки текстового стиля - нужны?
  • Выноски (_.leader / _.qleader)
  • Многострочные выноски (_.mleader)
  • Таблица (_.table)
  • Извлечение данных (_.dataextraction)
  • Размеры. Что с настройками размерного стиля?
    • Линейные размеры
    • Ортогональные размеры
    • Параллельные размеры
    • Угловые размеры
    • Радиусы
    • Диаметры
    • Выноски и допуски
Определись, какие надо команды обрабатывать и, самое главное - как. Потом уже можно и голову ломать
тогда уж так
  • Отрезок (_.line) - не нужно обрабатывать
  • Дуга (_.arc) - не нужно обрабатывать
  • Полилиния (_.pline) - не нужно обрабатывать
  • Полигон (_.polygon) - не нужно обрабатывать
  • 3d-полилиния (_.3dpoly) - не нужно обрабатывать
  • Мультилиния (_.mline) - не нужно обрабатывать
  • Окружность (_.circle) - не нужно обрабатывать
  • Эллипс (_.ellipse) - не нужно обрабатывать
  • Область (_.region) - не нужно обрабатывать
  • Штриховка (_.hatch / _.bhatch) - обрабатывать
  • Однострочный текст (_.text / _.dtext). Дополнительно настройки текстового стиля - требуются или нет? - обрабатывать, можно и дополнительнительные настройки ввести, ежели время будет.
  • Многострочный текст (_.mtext). Дополнительно настройки текстового стиля - нужны? - обрабатывать, можно и дополнительнительные настройки ввести, ежели время будет.
  • Выноски (_.leader / _.qleader) - обрабатывать
  • Многострочные выноски (_.mleader) - обрабатывать
  • Таблица (_.table) - обрабатывать, а можно и оставить на совести юзера
  • Извлечение данных (_.dataextraction) - обрабатывать, а можно и оставить на совести юзера
  • Размеры. Что с настройками размерного стиля?
    • - - обрабатывать, а вот по настройкам..., думаю можно и позаморачитваться, хотя лучше это все через шаблон оставить на откуп юзеру
    • Линейные размеры
    • Ортогональные размеры
    • Параллельные размеры
    • Угловые размеры
    • Радиусы
    • Диаметры
    • Выноски и допуски
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon на форуме  
 
Непрочитано 11.06.2009, 10:09
#182
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ок, попробую на выходных время выкроить...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.06.2009, 12:55
#183
Piton

Инженер строитель
 
Регистрация: 24.02.2005
Москва
Сообщений: 396


Как вариант программа FLAY
http://www.xanadu.cz/dl_file.asp?ID=860
Piton вне форума  
 
Непрочитано 11.06.2009, 14:18
#184
gipro

лайсенсед инжиниа
 
Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158


Кстати, об VetCAD... Я активно пользуюсь его инструментами "сварка" (считаю их куда более удачными, чем СПДС). Помогите заставить их отрисовываться на соответствующем слое... Сам пользуюсь кодом из 25-го поста. Подскажите, что и куда там добавить.

Последний раз редактировалось gipro, 11.06.2009 в 14:29.
gipro вне форума  
 
Непрочитано 11.06.2009, 14:50
#185
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Кулик Алексей aka kpblc, еще можно вьюпорты обрабатывать. На вырост, можно и мультилинии добавлять. Если имя слоя брать из Стиля мультилинии.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 05.01.2010, 15:25
#186
Positron


 
Регистрация: 25.06.2009
Сообщений: 147


Добрый день!

Хотел спросить, а как в код добавить авто определение стиля размера:
чтоб определяло какой именно стиль размера и тогда кидало на заданный слой.

Причиной тому есть то что я работаю имея для каждого стиля свой слой.
Positron вне форума  
 
Непрочитано 05.01.2010, 21:05
#187
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Цитата:
Сообщение от Positron Посмотреть сообщение
Хотел спросить, а как в код добавить авто определение стиля размера:
чтоб определяло какой именно стиль размера и тогда кидало на заданный слой.
Причиной тому есть то что я работаю имея для каждого стиля свой слой.
Просто. Вставить такой кусок кода вместо написанного:
Код:
[Выделить все]
 (defun cmd-start (react	cmd / selset   cmd_name ent
		  svr res tag text index _attreq_  _attdia_
		  )
  (setq cmd_name (strcase (car cmd) t))
(setq *dim_style* (strcase (getvar "dimstyle")));;ДОБАВИТЬ ЭТУ СТРОКУ
;; для определения текущего размерного стиля
(cond
 ((vl-string-search "dim" cmd_name)
  (setq *vlr-settings*
	(list (cons "layer"
		    (vla-get-activelayer *kpblc-activedoc*)
		    ) ;_ end of cons
  	(cons "color" (getvar "cecolor"))
	(cons "lw" (getvar "celweight"))
	(cons "lt" (getvar "celtype")) ) ;_ end of list
	   ) ;_ end of setq
;;НАЧАЛО ВСТАВКИ. "DIM_ONE", "DIM_TWO" и "DIM_THREE" - имеющиеся размерные стили
(cond
((= *dim_style* "DIM_ONE") ;; для первого стиля размеров, писать всеми заглавными
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_one");;Имя слоя для первого стиля размеров "dim_one"
       ("color" . 140)
       ("lw" . 20) )
     )
   )
 )
((= *dim_style* "DIM_TWO") ;; для второго стиля
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_two")
       ("color" . 140)
       ("lw" . 20)
       )
     )
   )
 )
((= *dim_style* "DIM_THREE") ;; и еще для одного
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_three")
       ("color" . 140)
       ("lw" . 20)
       )
     )
   )
 )
;; и т.д и т.п. сколько есть стилей
);;cond 
;; КОНЕЦ ВСТАВКИ
 (mapcar 'setvar
	 '("cecolor" "celweight" "celtype")
	 '("bylayer" -1 "bylayer")
	 ) ;_ end of mapcar
...
__________________
Мой сайт ingnmb.wixsite.com/acad-s

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:44.
nik_mb вне форума  
 
Непрочитано 06.01.2010, 18:11
#188
Positron


 
Регистрация: 25.06.2009
Сообщений: 147


Цитата:
Сообщение от nik_mb Посмотреть сообщение
Просто. Вставить такой кусок кода вместо написанного:
Код:
[Выделить все]
(defun cmd-start (react	cmd / selset   cmd_name ent
		  svr res tag text index _attreq_  _attdia_
		  )
  (setq cmd_name (strcase (car cmd) t))
(setq *dim_style* (strcase (getvar "dimstyle")));;ДОБАВИТЬ ЭТУ СТРОКУ
;; для определения текущего размерного стиля
(cond
 ((vl-string-search "dim" cmd_name)
  (setq *vlr-settings*
	(list (cons "layer"
		    (vla-get-activelayer *kpblc-activedoc*)
		    ) ;_ end of cons
  	(cons "color" (getvar "cecolor"))
	(cons "lw" (getvar "celweight"))
	(cons "lt" (getvar "celtype")) ) ;_ end of list
	   ) ;_ end of setq
;;НАЧАЛО ВСТАВКИ. "DIM_ONE", "DIM_TWO" и "DIM_THREE" - имеющиеся размерные стили
(cond
((= *dim_style* "DIM_ONE") ;; для первого стиля размеров, писать всеми заглавными
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_one");;Имя слоя для первого стиля размеров "dim_one"
       ("color" . 140)
       ("lw" . 20) )
     )
   )
 )
((= *dim_style* "DIM_TWO") ;; для второго стиля
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_two")
       ("color" . 140)
       ("lw" . 20)
       )
     )
   )
 )
((= *dim_style* "DIM_THREE") ;; и еще для одного
 (vla-put-activelayer *kpblc-activedoc*
   (_kpblc-layer-create
     '(("name" . "Размеры_three")
       ("color" . 140)
       ("lw" . 20)
       )
     )
   )
 )
;; и т.д и т.п. сколько есть стилей
);;cond 
;; КОНЕЦ ВСТАВКИ
 (mapcar 'setvar
	 '("cecolor" "celweight" "celtype")
	 '("bylayer" -1 "bylayer")
	 ) ;_ end of mapcar
...
Спасибо что откликнулся!

Проверил, но почемуто не работает, говорю что делал:
Закинул в автозапуск, создал как в примере
слой DIM_TWO и стиль Размеры_two
чтоб проверить работоспособность...
подставлял и свои, но не работает ни один.

Возможно я чо не так сделал?
Positron вне форума  
 
Непрочитано 06.01.2010, 22:25
#189
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Полностью исправленный лисп-файл (правда, мною немного поковерканый) и чертеж-двг, как пример.
Пробуй. У меня работает.
Вложения
Тип файла: zip lay_jump.zip (23.8 Кб, 157 просмотров)
__________________
Мой сайт ingnmb.wixsite.com/acad-s
nik_mb вне форума  
 
Непрочитано 09.02.2010, 14:18
#190
Positron


 
Регистрация: 25.06.2009
Сообщений: 147


Цитата:
Сообщение от nik_mb Посмотреть сообщение
Полностью исправленный лисп-файл (правда, мною немного поковерканый) и чертеж-двг, как пример.
Пробуй. У меня работает.
Запустил чертёж, там работают твои слоя и стили, но как непойму, я перед этим лисп даже не загрузил в автокад...
Когда загрузил в автозагрузку лисп со своими натсройками(красным), то оно неработает:

Код:
[Выделить все]
 ;; Перенесение заданных примитивов (размеры, штриховка, текст) на заданный слой

(if (not ActiveDocument)
  (setq ActiveDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
 ) ;_ end of if

(if *vlr-cmd*
  (progn (setq *vlr-cmd* nil)(vlr-remove-all :vlr-command-reactor)) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-cmd*)(setq *vlr-cmd*
(vlr-command-reactor "cmd" '(
		      (:vlr-commandwillstart . cmd-start)
		      (:vlr-commandended . cmd-end)
		      (:vlr-commandcancelled . cmd-cancel)
		      (:vlr-commandfailed . cmd-fail)
		      )
		    ) ;_ end of VLR-Command-Reactor
	) ;_ end of setq
  ) ;_ end of if
;; Функция подгрузки типа линии - на http://www.autocad.ru/cgi-bin/f1/board.cgi?t=22730iW

;|=============================================================================
*    Создание слоя с указанными параметрами.
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*   layer-list   список параметров слоя вида:
   '(("name" . "TestLayer")   ; имя слоя. Не может быть пропущено
   ("color" . 3)         ; номер цвета. nil -> 7
   ("lw" . 50)         ; вес линии слоя. nil -> 25
   ("lt" . "hidden")      ; тип линии слоя. nil -> Continuous
               ; Если описания типа линии в acadiso.lin
               ; нет, обязательно указывать следующий
               ; параметр
   ("ltfile" . "c:\\cad\\ltypes\\lt.lin")   ; полный путь к файлу с описанием
               ; типа линии. Если файл находится в путях
               ; поддержки, путь можно не указывать
   ("plot" . "y")         ; Печатать ("y") или нет ("n") слой.
               ; nil -> "y"
   )
*    Слой размораживается, разблокируется и включается. Не активируется.
|;
(defun _kpblc-layer-create (layer-list / vla_layer)
(setq vla_layer (vla-add (vla-get-layers ActiveDocument)
	   (cdr (assoc "name" layer-list))
	   ) ;_ end of vla-add
	) ;_ end of setq
  (vla-put-color vla_layer 
    (if	(cdr (assoc "color" layer-list))
      (cdr (assoc "color" layer-list))
      7
      ) ;_ end of if
    ) ;_ end of vla-put-color
  (vla-put-lineweight
    vla_layer
    (if	(cdr (assoc "lw" layer-list))
      (cdr (assoc "lw" layer-list))
      aclnwt025
      ) ;_ end of if
    ) ;_ end of vla-put-lineweight
  (if (and (cdr (assoc "lt" layer-list))
	   (_kpblc-linetype-load
	     (cdr (assoc "lt" layer-list))
	     (cdr (assoc "ltfile" layer-list))
	     ) ;_ end of _kpblc-linetype-load
	   ) ;_ end of and
    (vla-put-linetype vla_layer (cdr (assoc "lt" layer-list)))
    (vla-put-linetype vla_layer "Continuous")
    ) ;_ end of if
  (vla-put-plottable
    vla_layer
    (if	(= (cdr (assoc "plot" layer-list)) "n")
      :vlax-false
      :vlax-true
      ) ;_ end of if
    ) ;_ end of vla-put-Plottable
  (vla-put-lock vla_layer :vlax-false)
  (vla-put-layeron vla_layer :vlax-true)
  (if (not (equal (vla-get-activelayer ActiveDocument)
		  vla_layer
		  ) ;_ end of equal
	   ) ;_ end of not
    (vla-put-freeze vla_layer :vlax-false)
    ) ;_ end of if
  vla_layer
  ) ;_ end of defun

(defun cmd-start (react	cmd / selset   cmd_name ent
		  svr res tag text index _attreq_  _attdia_
		  )
  (setq cmd_name (strcase (car cmd) t))
(setq *dim_style* (strcase (getvar "dimstyle")))
(cond
((vl-string-search "dim" cmd_name)(setq *vlr-settings* (list (cons "layer" (vla-get-activelayer ActiveDocument)) ;_ end of cons
  	(cons "color" (getvar "cecolor"))
	(cons "lw" (getvar "celweight"))
	(cons "lt" (getvar "celtype")) ) ;_ end of list
	   ) ;_ end of setq
(cond
((= *dim_style* "01_1x1")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x1)")("color" . 140)("lw" . 20)))))
((= *dim_style* "02_1x2")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x2)")("color" . 140)("lw" . 20)))))
((= *dim_style* "03_1x4")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x4-5)")("color" . 140)("lw" . 20)))))
((= *dim_style* "04_1x5")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x4-5)")("color" . 140)("lw" . 20)))))
((= *dim_style* "05_1x8")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х08-10)")("color" . 140)("lw" . 20)))))
((= *dim_style* "06_1x10")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х08-10)")("color" . 140)("lw" . 20)))))
((= *dim_style* "07_1x16")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х16-20)")("color" . 140)("lw" . 20)))))
((= *dim_style* "08_1x20")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х16-20)")("color" . 140)("lw" . 20)))))
((= *dim_style* "09_1x30")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
((= *dim_style* "10_1x40")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
((= *dim_style* "11_G1x1")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
);;cond
(mapcar 'setvar '("cecolor" "celweight" "celtype") '("bylayer" -1 "bylayer")) ;_ end of mapcar
     )
    ((vl-string-search "hatch" cmd_name)(setq *vlr-settings*
	    (list (cons	"layer" (vla-get-activelayer ActiveDocument)	) ;_ end of cons
		  (cons "color" (getvar "cecolor"))
		  (cons "lw" (getvar "celweight"))
		  (cons "lt" (getvar "celtype"))
		  ) ;_ end of list
	   ) ;_ end of setq
     (vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "Штриховка")("color" . 190)("lw" . 15)) ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar '("cecolor" "celweight" "celtype")'("bylayer" -1 "bylayer")) ;_ end of mapcar
     )
    ((vl-string-search "text" cmd_name)
     (setq *vlr-settings* (list (cons	"layer" (vla-get-activelayer ActiveDocument)	) ;_ end of cons
		  (cons "color" (getvar "cecolor"))
		  (cons "lw" (getvar "celweight"))
		  (cons "lt" (getvar "celtype"))
		  ) ;_ end of list
	   ) ;_ end of setq
     (vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "Текст")("color" . 150)("lw" . 25))) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar '("cecolor" "celweight" "celtype") '("bylayer" -1 "bylayer")) ;_ end of mapcar
     )
    ) ;_ end of cond
  ) ;_ end of defun

(defun cmd-end (react  cmd  / list_obj selset  item counter leader_item cmd_name
		leader_item_list up_string low_string )
  (setq	cmd_name (strcase (car cmd) t) 	counter	 0 ) ;_ end of setq
  (cond
    ((or (vl-string-search "dim" cmd_name)
	 (vl-string-search "text" cmd_name)
	 (vl-string-search "hatch" cmd_name)
	 ) ;_ end of or
     (if *vlr-settings*
       (progn
	 (vla-put-activelayer
	   ActiveDocument
	   (cdr (assoc "layer" *vlr-settings*))
	   ) ;_ end of vla-put-ActiveLayer
	 (mapcar 'setvar
		 '("cecolor" "celweight" "celtype")
		 (list (cdr (assoc "color" *vlr-settings*))
		       (cdr (assoc "lw" *vlr-settings*))
		       (cdr (assoc "lt" *vlr-settings*))
		       ) ;_ end of list
		 ) ;_ end of mapcar
	 (setq *vlr-settings* nil)
	 ) ;_ end of progn
       ) ;_ end of if
     )
    ) ;_ end of cond
  ) ;_ end of defun

(defun cmd-cancel (react cmd / cmd_name)
  (setq cmd_name (strcase (car cmd) t))
  (cond
    ((or (vl-string-search "dim" cmd_name)
	 (vl-string-search "text" cmd_name)
	 (vl-string-search "hatch" cmd_name)
	 ) ;_ end of or
     (if *vlr-settings*
       (progn
	 (vla-put-activelayer
	   ActiveDocument
	   (cdr (assoc "layer" *vlr-settings*))
	   ) ;_ end of vla-put-ActiveLayer
	 (mapcar 'setvar
		 '("cecolor" "celweight" "celtype")
		 (list (cdr (assoc "color" *vlr-settings*))
		       (cdr (assoc "lw" *vlr-settings*))
		       (cdr (assoc "lt" *vlr-settings*))
		       ) ;_ end of list
		 ) ;_ end of mapcar
	 (setq *vlr-settings* nil)
	 ) ;_ end of progn
       ) ;_ end of if
     )
    ) ;_ end of cond
  ) ;_ end of defun

;|=============================================================================
*    Функция подгрузки типа линии в текущий файл. Учитывает возможную
* локализацию системы.
*    Параметры вызова:
*  ltype-name  имя типа линии для английской версии
*  ltype-file  имя файла описания типа линии. nil -> "acadiso.lin"ю
*      Если файл с описанием типа линии не лежит по путям
*      поддержки када, надо указывать полный путь к нему.
*    Примеры вызова:
(_kpblc-linetype-load "center" nil)  ; для русской версии подгружает Осевая и возвращает
                                     ; t при успехе
***  Соответствие наименований линий обеспечивается огромным списком ltype_list
*** который можно и нужно дополнять :) Только надо либо все делать мелкими
*** буквами, либо жестко соблюдать регистр в моменты вызовов.
***  Тип линии "Continuous" обработке не подвергается — он есть во всех версиях
=============================================================================|;
(defun _kpblc-linetype-load
       (ltype-name ltype-file / ltype_normal ltype_list result)
  (vl-load-com)
  (setq	ltype_list '(("center" . "осевая")
		     ("center2" . "осевая2")
		     ("hidden" . "скрытая")
		     ("hidden2" . "скрытая2")
		     )
	ltype-name (strcase ltype-name t)
	) ;_ end of setq
  (if (not ltype-file)
    (setq ltype-file "acadiso.lin")
    ) ;_ end of if
  (if (vl-string-search "419" (vlax-product-key))
    ;; Русская версия, меняем имя типа линии
    (setq ltype_normal (cdr (assoc ltype-name ltype_list)))
    (setq ltype_normal ltype-name)
    ) ;_ end of if
  (if (not (tblsearch "ltype" ltype_normal))
    ;; тип линии не найден, надо его загрузить. Тип линии должен быть
    ;; описан в файле
    (setq result (not (vl-catch-all-error-p
			(vl-catch-all-apply
			  'vla-load
			  (list
			    (vlax-get-property
			      (vla-get-ActiveDocument (vlax-get-acad-object))
			      'linetypes
			      ) ;_ end of vlax-get-property
			    ltype_normal
			    ltype-file
			    ) ;_ end of list
			  ) ;_ end of vl-catch-all-apply
			) ;_ end of vl-catch-all-error-p
		      ) ;_ end of not
	  ) ;_ end of setq
    ) ;_ end of if
  result
  ) ;_ end of defun

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:46.
Positron вне форума  
 
Непрочитано 10.02.2010, 20:49
#191
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Так писать нельзя. Надо, что бы в программе название слоев были заглавными буквами от того, что строчка у kpblc такая:
Код:
[Выделить все]
(setq *dim_style* (strcase (getvar "dimstyle")))
Поэтому в коде выглядеть должно так:
Код:
[Выделить все]
;; "X" - заглавная латинская икс
((= *dim_style* "01_1X1")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x1)")("color" . 140)("lw" . 20)))))
((= *dim_style* "02_1X2")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x2)")("color" . 140)("lw" . 20)))))
((= *dim_style* "03_1X4")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x4-5)")("color" . 140)("lw" . 20)))))
((= *dim_style* "04_1X5")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1x4-5)")("color" . 140)("lw" . 20)))))
((= *dim_style* "05_1X8")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х08-10)")("color" . 140)("lw" . 20)))))
((= *dim_style* "06_1X10")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х08-10)")("color" . 140)("lw" . 20)))))
((= *dim_style* "07_1X16")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х16-20)")("color" . 140)("lw" . 20)))))
((= *dim_style* "08_1X20")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM (1х16-20)")("color" . 140)("lw" . 20)))))
((= *dim_style* "09_1X30")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
((= *dim_style* "10_1X40")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
((= *dim_style* "11_G1X1")(vla-put-activelayer ActiveDocument (_kpblc-layer-create '(("name" . "02 DIM")("color" . 140)("lw" . 20)))))
В самом файле можно называть размерные стили какими угодно буквами

ЗЫ. Как говорил Жванецкий: "Тщательнее надо ребята..."
__________________
Мой сайт ingnmb.wixsite.com/acad-s
nik_mb вне форума  
 
Непрочитано 11.02.2010, 14:06
#192
Positron


 
Регистрация: 25.06.2009
Сообщений: 147


Спасибо, исправил, работает замечательно.

Есть ещо 1-н вопросик, а возможно штоб текст в зависимости от высоты перемещался на слои.

вот по таким параметрам (первый столбик высота текста, после "-слой->" название слоя):


2.5, 3, 4 -слой-> 02 DIM (1x1)
__________________________________________
5, 6, 8 -слой-> 02 DIM (1x2)
__________________________________________
10,12.5,16 -слой-> 02 DIM (1x4-5)
__________________________________________
20, 25 -слой-> 02 DIM (1х08-10)
__________________________________________
40, 50 -слой-> 02 DIM (1х16-20)
__________________________________________
любые другие высоты -слой-> 10 Text

Последний раз редактировалось Positron, 11.02.2010 в 14:24. Причина: Вопрос по высотам текста на слоя
Positron вне форума  
 
Непрочитано 11.02.2010, 16:43
#193
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Такое (в общем случае) будет возможно только по завершении команды. Или писать переопределенную команду.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.02.2010, 17:01
#194
Positron


 
Регистрация: 25.06.2009
Сообщений: 147


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Такое (в общем случае) будет возможно только по завершении команды. Или писать переопределенную команду.
а если забить каждую высоту в определённый стиль текста?
может так?
Positron вне форума  
 
Непрочитано 11.02.2010, 19:27
#195
nik_mb

конструктор
 
Регистрация: 23.03.2009
Волгоград
Сообщений: 120


Я, в своем "строителе" сделал для текста высотой 2,5мм (команда "текст_м") такой программный перевод на нужный слой (он настраивается). Но прежде небольшое пояснение.
Не нравится мне чертить в видовых экранах на листах (layout). Разбиваю чертеж в пространстве модели на масштабные зоны, управляемые программой через блок с скрытыми атрибутами. В этом блоке записаны масштаб и координаты зоны этого масштаба. Рисуя в той или иной зоне, происходит автоматический переход масштабов для отрисовки оформительских элементов "строителя", текста и размерных стилей (для каждого масштаба определяю свой размерный стиль с заданным глобально масштабом).

Код:
[Выделить все]
(defun c:текст_м (/ pt1 htet1 pr_te prm_te)
  (setvar "cmdecho" 0)
  (vlax-invoke-method activedocument "StartUndoMark")
  (setq old_lay (getvar "clayer"))
  (setvar "celweight" tolsh_29)
  (у_сл_те)
  ;; установка слоя текста
  (if (not msh)
    (progn (masht))
  ) ;_ конец if
  ;; установка заданного масштаба
  (p_mash)
  (setq	pr_te nil
	prm_te nil
  ) ;_ конец setq
  (setq
    pt1	(getpoint "\nНачальная точка текста [Enter - Выравнивание]: ")
  ) ;_ конец setq
  (princ "\n")
  (if pt1
    (progn
      (setq ptum pt1)
      ;; если точка попадает в масштабную зону то переустановить масштаб
      (zmash);; функция определения масштаба по координатам точки pt1
      (setq htet1 (* mshv 2.5));; установить высоту по масштабу
      (setvar "cmdecho" 1)
      (command "_dtext" pt1 htet1 pause)
    ) ;_ конец progn
    (progn
      ;;если не указана точка начала текста
      (initget
	32
	"вписанный поширине центр середина вправо ВЛ ВЦ ВП СЛ СЦ СП НЛ НЦ НП И и П п Ц ц Е е Р р вл вп сл сц сп нл нц нп"
      ) ;_ конец initget
      (setq pr_te
	     (getkword
	       (strcat
		 "\nЗадайте параметр "
		 "\n[впИсанный/Поширине/Центр/сЕредина/впРаво/ВЛ/ВЦ/ВП/СЛ/СЦ/СП/НЛ/НЦ/НП]: "
	       ) ;_ конец strcat
	     ) ;_ конец getkword
      ) ;_ конец setq
      (if pr_te
	(setq prm_te pr_te)
	(setq prm_te "_bl")
      ) ;_ конец if
      (while (not pt1)
	(setq pt1 (getpoint "\nНачальная точка текста: "))
      ) ;_ конец while
      (princ "\n")
      (setq ptum pt1)
      ;; если точка попадает в масштабную зону то переустановить масштаб
      (zmash)
      (setq htet1 (* mshv 2.5))
      (setvar "cmdecho" 1)
      (command "_dtext" "_j" prm_te pt1 htet1 pause)
    ) ;_ конец progn
  ) ;_ конец if
  (setvar "clayer" old_lay)
  (setvar "celweight" old_wgt)
  (vlax-invoke-method activedocument "EndUndoMark")
) ;_ конец defun

(defun у_сл_те ( / s_layer lay_cr v_col)
  ;; установка слоя текста
  (if (and (not (tblsearch "layer" lay_29)) (/= lay_29 "_ByLayer"))
    (progn ;; если такого слоя нет то создать
	   (if (not l_col_te)
	     (progn
	       (princ "\nЦвет слоя ")
	       (princ lay_29)
	       ;; установка настроенного слоя 
	       (princ " голубой <140>?: ")
	       (setq v_col (getint))
	       (if v_col
		 (setq l_col_te v_col)
		 (setq l_col_te 140)
	       ) ;_ конец if
	     ) ;_ конец progn
	   ) ;_ конец if
	   (setq s_layer (vla-get-layers activedocument))
	   (setq lay_cr (vlax-invoke-method s_layer "add" lay_29))
	   (vla-put-color lay_cr l_col_te)
	   (setvar "clayer" lay_29)
    ) ;_ конец progn
    (if	(/= lay_29 "_ByLayer")
      (setvar "clayer" lay_29)
    ) ;_ конец if
    ;; переход на нужный слой
  ) ;_ конец if
) ;_ конец defun
Наделать таких программок для каждой высоты текста можно сколько угодно.

С масшатабными зонами пока не все дается просто. По части переключения размерных стилей, в тех, где требуется выбрать примитив - круг, дугу или линии (размеры угла или радиуса).
__________________
Мой сайт ingnmb.wixsite.com/acad-s
nik_mb вне форума  
 
Непрочитано 26.02.2010, 09:15
#196
milamu

конструктор
 
Регистрация: 30.04.2009
Красноярск
Сообщений: 53
<phrase 1=


С недавних пор задалась проблемой, а можно ли командам присвоить слои..Прочитала ваше обсуждение данной проблемы с самого начала и до конца...
Скажу честно, програмист из меня никакой, я ничего не поняла в ваших кодах и лиспах, что и куда вставлять надо....
Ответьте мне пожлста, можно ли профану, такому как я, без кодов и подобных ему..., присваивать командам слои в 2009 акаде?
milamu вне форума  
 
Непрочитано 26.02.2010, 09:28
#197
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Можно. С помощью палитры инструментов.
Profan вне форума  
 
Непрочитано 26.02.2010, 09:35
#198
andrew_ro

Светопрозрачные конструкции, проектирование
 
Регистрация: 29.07.2008
Сообщений: 47


.. или так (см. .doc файл). Там по выделению цветом все понятно.
Вложения
Тип файла: doc kpblc-vlr_modif.doc (71.0 Кб, 270 просмотров)
andrew_ro вне форума  
 
Непрочитано 26.02.2010, 09:38
#199
milamu

конструктор
 
Регистрация: 30.04.2009
Красноярск
Сообщений: 53
<phrase 1=


Цитата:
Сообщение от Profan Посмотреть сообщение
Можно. С помощью палитры инструментов.
напишите пжлста как, только по русски, я в английских названиях не разбираюсь
milamu вне форума  
 
Непрочитано 26.02.2010, 09:52
#200
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Содаете новую палитру инструментов с помощью контекстного меню по щелчку правой кнопкой мыши на пустом месте существующей палитры инструментов. С помощью контекстного меню запускаете Адаптацию палитр. Удерживая нажатой клавишу Ctrl, перетаскиваете любую кнопку с панелей на новую палитру. Далее смотрите и редактируете свойства этого инструмента по правой кнопке мыши.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск