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

Вернуться   Форум 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.
Просмотров: 171278
 
Непрочитано 12.10.2008, 15:38
#121
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а спдсные объекты можно разносить?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 12.10.2008, 15:40
#122
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от dextron3 Посмотреть сообщение
VVA, а спдсные объекты можно разносить?
Так там же автоматом можно и так.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 12.10.2008, 16:08
#123
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


andrew_ro,
Цитата:
появляется слой с именем "0_Размеры". Что я делаю не так?
Цитата:
* Добавлен новый параметр suff - суффикс слоя, если он есть, то имя слоя получаестся путем
* добавления к имени текущего слоя суффикса suff
Работает так как и было задумано. То, что хочешь ты называется переименование (команда _rename)
Цитата:
А хотелось бы из открытого чертежа отключать создание слоев во вновь открываемых файлах.
Код из #117 так и делает, пока не наберешь CRON никаких реакторов не загрузится. Может у тебя по прежнему болтается код из #25 в автозагрузке?
dextron3, Здесь реакторы на команды. Поэтому теоретически можно, но сам СПДС может менять слой своих объетов после создания vla или arx методами. Тем более, что у СПДС есть родные инструменты.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.10.2008 в 19:34.
VVA вне форума  
 
Непрочитано 12.10.2008, 16:50
#124
andrew_ro

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


VVA, все получилось. Код из #25 действительно висел в атозагрузке: я думал что код из #117 дополнение, а не самостоятельная программа.
Спасибо ну просто ОГРОМНОЕ! Это даже больше, чем я хотел здесь.
andrew_ro вне форума  
 
Непрочитано 12.10.2008, 16:53
#125
wetr

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


andrew_ro, насколько я понял тебе и нужен код Алексея.
попробуй
*добавлено по сравнению с №47
- слой "_Таблицы" для таблиц (включая _dataextraction)
- слой "_Выноски" для лидеров
- слой "_Вспомог" для прямой

*Добавлено*
"И тут Остапа понесло..."
- слой "VPORTS" для вьюпортов

Слои и толщины настраивай под себя

Код:
[Выделить все]
(vl-load-com)
(if (not *kpblc-activedoc*)
  (setq *kpblc-activedoc* (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

;|=============================================================================
*    Создание слоя с указанными параметрами.
*    Параметры вызова:
*   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"
   )
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*    Слой размораживается, разблокируется и включается. Не активируется.
|;
(defun _kpblc-layer-create (layer-list / vla_layer)
  (setq	vla_layer
	 (vla-add
	   (vla-get-layers *kpblc-activedoc*)
	   (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 *kpblc-activedoc*)
		  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))
  (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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Размеры")
	   ("color" . 165)
	   ("lw" . 13)
	   )
	 ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (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 *kpblc-activedoc*)
			) ;_ end of cons
		  (cons "color" (getvar "cecolor"))
		  (cons "lw" (getvar "celweight"))
		  (cons "lt" (getvar "celtype"))
		  ) ;_ end of list
	   ) ;_ end of setq
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Штриховки")
	   ("color" . 175)
	   ("lw" . 09)
	   )
	 ) ;_ 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 *kpblc-activedoc*)
			) ;_ end of cons
		  (cons "color" (getvar "cecolor"))
		  (cons "lw" (getvar "celweight"))
		  (cons "lt" (getvar "celtype"))
		  ) ;_ end of list
	   ) ;_ end of setq
     (vla-put-activelayer
       *kpblc-activedoc*
       (_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 "table" 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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Таблицы")
	   ("color" . 7)
	   ("lw" . 09)
	   )
	 ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar
	     '("cecolor" "celweight" "celtype")
	     '("bylayer" -1 "bylayer")
	     ) ;_ end of mapcar
     )
    ((vl-string-search "leader" 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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Выноски")
	   ("color" . 150)
	   ("lw" . 13)
	   )
	 ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar
	     '("cecolor" "celweight" "celtype")
	     '("bylayer" -1 "bylayer")
	     ) ;_ end of mapcar
     )
    ((vl-string-search "dataextraction" 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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Таблицы")
	   ("color" . 7)
	   ("lw" . 09)
	   )
	 ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar
	     '("cecolor" "celweight" "celtype")
	     '("bylayer" -1 "bylayer")
	     ) ;_ end of mapcar
     )
     ((vl-string-search "xline" 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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "_Вспомог")
	   ("color" . 1)
	   ("lw" . 09)
	   ("plot" . "n")
	   )
	 ) ;_ end of _kpblc-layer-create
       ) ;_ end of vla-put-ActiveLayer
     (mapcar 'setvar
	     '("cecolor" "celweight" "celtype")
	     '("bylayer" -1 "bylayer")
	     ) ;_ end of mapcar
     )
    ((vl-string-search "vports" 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
     (vla-put-activelayer
       *kpblc-activedoc*
       (_kpblc-layer-create
	 '(("name" . "VPORTS")
	   ("color" . 81)
	   ("lw" . 13)
	   ("plot" . "n")
	   )
	 ) ;_ 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)
	 (vl-string-search "dataextraction" cmd_name)
	 (vl-string-search "leader" cmd_name)
	 (vl-string-search "table" cmd_name)
	 (vl-string-search "xline" cmd_name)
         (vl-string-search "vports" cmd_name)
	 ) ;_ end of or
     (if *vlr-settings*
       (progn
	 (vla-put-activelayer
	   *kpblc-activedoc*
	   (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)
         (vl-string-search "dataextraction" cmd_name)
	 (vl-string-search "leader" cmd_name)
	 (vl-string-search "table" cmd_name)
	 (vl-string-search "xline" cmd_name)
         (vl-string-search "vports" cmd_name)
	 ) ;_ end of or
     (if *vlr-settings*
       (progn
	 (vla-put-activelayer
	   *kpblc-activedoc*
	   (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
Отличие этого кода от кода в №113 (для простого юзера)
В №113 слои создаются сразу при открытии файла - даже нового (авторы Кочетков Андрей, VVA, krblc)
В этом коде слои создаются только при вызове соответствующей команды (автор krblc)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 13.10.2008 в 05:27.
wetr вне форума  
 
Непрочитано 17.10.2008, 14:11
#126
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 686


Не подскажете, возможно автоматически относить штриховки созданные с помощью палитр, к слою штриховка?
gest вне форума  
 
Непрочитано 17.10.2008, 14:50
#127
wetr

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


настройка через ПК мыши
Миниатюры
Нажмите на изображение для увеличения
Название: 3.jpg
Просмотров: 451
Размер:	54.2 Кб
ID:	11200  
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.10.2008, 15:00
#128
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 686


Это понятно нужно прописывать, хотелось бы по теме обсуждения автоматический перенос.
gest вне форума  
 
Непрочитано 17.10.2008, 16:08
#129
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


При вставке из палитр выполняется команда EXECUTETOOL. Как на команду реактор поставить можно (скорее всего), но понять что в данный момент вставляется (штриховка или блок) не возможно. Так что на слой штриховки будут попадать и блоки. Правильнее как в #127.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.10.2008, 16:16
#130
andrew_ro

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


wetr, спасибо.
Я давно не заглядывал в ветку, потому что сам методом проб и ошибок (ну их практически не было) переделал код Алексея из #47 "под себя". Сейчас тестирую.Только почемуто он не работает в версиях AutoCAD выше 2007. Заодно поэкспериментирую и с твоим из #125.
Еще раз спасибо.
andrew_ro вне форума  
 
Непрочитано 17.10.2008, 16:25
#131
wetr

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


Цитата:
Сообщение от andrew_ro Посмотреть сообщение
Только почемуто он не работает в версиях AutoCAD выше 2007.
м.б. надо подгрузить visual lisp ? (vl-load-com)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.10.2008, 16:35
#132
andrew_ro

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


Цитата:
м.б. надо подгрузить visual lisp ? (vl-load-com)
Возможно, но я пока не понимаю механизма работы программы. Пока-что меня хватило только на то, чтобы найти в коде однотипные блоки и добавить по аналогии свои.
andrew_ro вне форума  
 
Непрочитано 17.10.2008, 17:52
#133
wetr

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


andrew_ro, я делаю точно также
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.10.2008, 23:22
#134
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от andrew_ro Посмотреть сообщение
wetr, спасибо.
Я давно не заглядывал в ветку, потому что сам методом проб и ошибок (ну их практически не было) переделал код Алексея из #47 "под себя". Сейчас тестирую.Только почемуто он не работает в версиях AutoCAD выше 2007. Заодно поэкспериментирую и с твоим из #125.
Еще раз спасибо.
У меня код с реакторами (ну, конечно, со своими добавлениями) успешно работает в ADT2008Eng.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.10.2008, 12:17
#135
andrew_ro

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


Действительно нужно было
Цитата:
подгрузить visual lisp (vl-load-com)
. Протестировал в Civil 3D 2008 (rus) и в AutoCAD 2009 (eng). Все работает.
andrew_ro вне форума  
 
Непрочитано 25.11.2008, 12:30
#136
Tony_Chu

ИК
 
Регистрация: 28.03.2006
Архангельск
Сообщений: 170
<phrase 1= Отправить сообщение для Tony_Chu с помощью Skype™


Код:
[Выделить все]
("name" . "size")
("color" . 1)
("lw" . 20)
Подскажите пож-ста как задать толщину линии не 0,20, а по умолчанию, а то я в лиспе ни черта не соображаю.
Tony_Chu вне форума  
 
Непрочитано 25.11.2008, 12:40
#137
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
acLnWtByLayer = -1
acLnWtByBlock = -2
acLnWtByLwDefault = -3
Т.е так должно работать
Код:
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.11.2008, 14:16
#138
Tony_Chu

ИК
 
Регистрация: 28.03.2006
Архангельск
Сообщений: 170
<phrase 1= Отправить сообщение для Tony_Chu с помощью Skype™


to VVA

Спасибо большое, всё работает
Tony_Chu вне форума  
 
Непрочитано 25.11.2008, 20:47 код работает не так как нужно в 2009-м акаде
#139
beholder

Конструктор (МК)
 
Регистрация: 27.11.2007
Львів
Сообщений: 456
<phrase 1=


Скачал здесь на форуме код, который загоняет размеры и текст на нужные слои, переделал его под себя, вроде бы все было чудесно на 2007-м акаде, но когда попробовал загрузить у сотрудника на 2009-м возникла следующая ситуация. Допустим, у меня активен другой слои, не размеры. Я проставляю размер (он проставляется в нужном мне слое РАЗМЕРЫ), дальше активным вновь становится мой текущий слой, но (!) после этого я уже не могу сделать активным любой другой слой кроме того, который был до проставления размера, назначить любой слой объекту могу, а сделать слой текущим нет. Такой глюк появился только в 2009-й версии акада.

Прилагаю этот самый код:

Код:
[Выделить все]
(vl-load-com) 
  (setq lyrs (vlax-get (vla-get-activedocument (vlax-get-acad-object)) 'Layers) 
        nlrs (mapcar '(lambda (x) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list lyrs x)));Проверяем наличие слоя в файле 
              (vla-add lyrs x))) '("РАЗМЕРНАЯ" "ТЕКСТ")));

(vlr-command-reactor nil '((:vlr-commandWillStart . startCommand))) 
(vlr-command-reactor nil '((:vlr-commandEnded . endCommand))) 
(vlr-command-reactor nil '((:vlr-commandCancelled . endCommand))) 
;
(defun startCommand (calling-reactor startcommandInfo / thecommandstart)
  (setq thecommandstart (nth 0 startcommandInfo)) 
  (setq *OldLayer* (append *OldLayer* (list (getvar "CLAYER")))) 
  (cond ((wcmatch thecommandstart "DIM*") (setvar "clayer" "РАЗМЕРНАЯ"))
	((wcmatch thecommandstart "*TEXT") (setvar "clayer" "ТЕКСТ"))
	(t nil));cond 
  (princ)
);startCommand
;
(defun endCommand (calling-reactor endcommandInfo) 
 (if *OldLayer* (setvar "clayer" (nth 0 *OldLayer*))) 
 (setq *OldLayer* nil) 
 (princ) 
);endCommand

Прошу знатоков лиспа подсказать мне в чем может быть дело. Я сам на данный момент только начал изучать лисп по скачанных тут уроках (автолисп в восьми уроках), со временем, может буду что-то посерьезнее читать, а пока только знакомлюсь с основными понятиями.

Последний раз редактировалось beholder, 26.11.2008 в 00:01. Причина: Тэги code кто проставлять будет?
beholder вне форума  
 
Непрочитано 25.11.2008, 23:33
#140
Кулик Алексей aka kpblc
Moderator

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


Скорее всего, реакторы загружаются несколько раз и поэтому "хамят". Попробуй такой код:
Код:
[Выделить все]
(vl-load-com)

(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
           "-command-reactor"
           '(
             (:vlr-commandwillstart . startcommand)
             (:vlr-commandended . endcommand)
             (:vlr-commandcancelled . endcommand)
             (:vlr-commandfailed . endcommand)
             )
           ) ;_ end of VLR-Command-Reactor
        ) ;_ end of setq
  ) ;_ end of if

(setq lyrs (vlax-get (vla-get-activedocument (vlax-get-acad-object)) 'layers)
      nlrs (mapcar '(lambda (x)
                      (if (vl-catch-all-error-p
                            (vl-catch-all-apply 'vla-item (list lyrs x))
                            ) ;Проверяем наличие слоя в файле 
                        (vla-add lyrs x)
                        ) ;_ end of if
                      ) ;_ end of lambda
                   '("РАЗМЕРНАЯ" "ТЕКСТ")
                   ) ;_ end of mapcar
      ) ;_ end of setq

(defun startcommand (calling-reactor startcommandinfo / thecommandstart)
  (setq thecommandstart (car startcommandinfo))
  (setq *oldlayer* (getvar "CLAYER"))
  (cond ((wcmatch thecommandstart "DIM*") (setvar "clayer" "РАЗМЕРНАЯ"))
        ((wcmatch thecommandstart "*TEXT") (setvar "clayer" "ТЕКСТ"))
        ) ;_ end of cond
  ) ;_ end of defun

(defun endcommand (calling-reactor endcommandinfo)
  (if *oldlayer*
    (setvar "clayer" *oldlayer*)
    ) ;_ end of if
  (setq *oldlayer* nil)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

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

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