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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает макрос

Не работает макрос

Ответ
Поиск в этой теме
Непрочитано 17.11.2004, 11:58 #1
Не работает макрос
Torino
 
Штаб
Регистрация: 21.08.2003
Сообщений: 943

Пытаюсь сделать аналог команды LAYOFF (из expressov), с той разницей, что для отключения слоев должна быбраться группа объектов, а не один объект.
Судя по логике работы команды LAYER делаю такой макрос:

-layer;off;;\;;

Не работает.
В чем проблема?
Просмотров: 4058
 
Непрочитано 17.11.2004, 12:27
#2
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,117


какая то проблемма с выбором объектов... после ввода при запросе <select object> начинается повторятся макрос... странно.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail на форуме  
 
Непрочитано 17.11.2004, 13:56
#3
plaz

Проектирование обустройства нефтяных месторождений
 
Регистрация: 28.08.2003
Самара
Сообщений: 352


Блин, фигня какая-то! Ничего не получается, слетает на выборе объекта. как вариант, могу предложить, на первое время (пока проблема не решится) пользоваться Экспрессовским Layoff, модифицировав его * (звездочкой):
Код:
В какой то степени удобно, сразу видно че вырубается
plaz вне форума  
 
Непрочитано 17.11.2004, 14:38
#4
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,117


почему то так работает
^C^C-layer;off;;
если поставить \ ,то виснет если в этом зависшем положении ввести дальше off потом ентер то команда норамльно дальше работает, но макрос почему то не читает \, а вернее читает, но вроде как Ентер...
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail на форуме  
 
Автор темы   Непрочитано 17.11.2004, 14:46
#5
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Правда, чудеса какие, то.
Пытаюсь добавить еще один ENTER в конце, чтобы лишний раз на кнопки не жать, так макрос вообще из команды выходит.
Torino вне форума  
 
Непрочитано 18.11.2004, 00:29
#6
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Torino ->
Несмотря на то, что на форуме есть раздел "Программирование", я разрешаю Вам постить соответствующие темы в раздел "Автокад"
Perezz!! вне форума  
 
Непрочитано 18.11.2004, 04:01
#7
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Команда -Layer не при всех своих опциях предусматривает выбор. Видимо поэтому она сделана как-то хитро. Если не хочешь использивать Layoff из Express (Почему?) то я смог выжать только так: ^C^C-layer;off; Но сначала отключи все меню на правой кнопке мыши
- через Options. Как закончишь выбор объектов, жми на правую кнопку 2 раза. (то есть один дополнительный щелчок, от которого не смог избавиться) Но отключать меню я бы не стал. Пользуйся Layoff> a если у тебя LT то попробуй это. ^C^C_setenv;oldlayer;$m=$(getvar,clayer);_ai_molc;\"_-layer;_set;$M=$(getenv,oldlayer);_off;$M=$(getvar,clayer)";;
Нашел в сети. Здесь используется команда Setenv, которой нет в полной версии.
Vova вне форума  
 
Автор темы   Непрочитано 18.11.2004, 10:24
#8
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>Perezz!!
Сорри, просто я не сообразил, что макросы тоже относятся к программированию.

>>Vova, Mikhail
Спасибо за макрос!

>>Vova
Я не могу пользоваться командой (вернее могу, но зачем?) LAYOFF, т.к. она не позволяет выбирать несколько объектов.

А вообще мне помогли решить этот вопрос с помощью лиспа.
Если интересно, могу выложить.
Torino вне форума  
 
Непрочитано 18.11.2004, 10:55
#9
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,117


Цитата:
Сообщение от Torino
А вообще мне помогли решить этот вопрос с помощью лиспа.
Если интересно, могу выложить.
Зачем лишнии слова... ) Выкладывайте
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail на форуме  
 
Автор темы   Непрочитано 18.11.2004, 14:41
#10
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Выкладываю. Автор Эдуард.

Код:
[Выделить все]
(defun C:layoff2 (/ new-nabor obj-nabor)
  (vl-load-com)
  (setq new-nabor '())
  (if
    (setq obj-nabor (ssget))
     (progn
       (setq obj-nabor (mapcar 'vla-get-layer
			       (mapcar 'vlax-ename->vla-object
				       (vl-remove-if
					 'listp
					 (mapcar 'cadr
						 (ssnamex obj-nabor)
					 ) ;_ end of mapcar
				       ) ;_ end of vl-remove-if
			       ) ;_ end of mapcar
		       ) ;_ end of mapcar
       ) ;_ end of setq
       (foreach	i obj-nabor
	 (if
	   (not
	     (member i new-nabor)
	   ) ;_ end of not
	    (setq new-nabor (cons i new-nabor))
	 ) ;_ end of if
       ) ;_ end of foreach
       (vlax-for item (vla-get-Layers
			(vla-get-ActiveDocument (vlax-get-acad-object))
		      ) ;_ end of vla-get-Layers
	 (if
	   (member (vla-get-name item) new-nabor)
	    (vla-put-LayerOn item :vlax-false)
	 ) ;_ end of if
       ) ;_ end of vlax-for
     ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Запуск: layoff2
Torino вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает макрос

Размещение рекламы