Model Studio CS
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

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

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

Piton вне форума Вставить имя

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

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:42.
Просмотров: 107349
 
Непрочитано 01.03.2005, 13:10
#2
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


Код:
С тебя пиво
X-DeViL вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2005, 13:17
#3
Piton

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


Не так, чтоб опцию first не надо было с клавы вводить
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.03.2005, 13:21
#4
Lenich

Менеджер по продажам лифтов и эскалаторов
 
Регистрация: 28.04.2004
Москва
Сообщений: 291
Отправить сообщение для Lenich с помощью ICQ


Код:
[Выделить все]
*^C^C_break \f \@
Списано со штатной кнопки кад 2002.
Lenich вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2005, 13:31
#5
Piton

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


догнал в 2005, надо так *^C^C_break \f; \@
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.03.2005, 13:39
#6
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Если не в лайт версии, тогда можно так:
^C^C^P(defun c:break2 () (vl-cmdf "break" pause "f" pause pause)(princ))(c:break2)
Тогда будет работать повтор по правой правой кнопке.
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2005, 13:50
#7
Piton

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


Torino, не работает-повтор просто команнда break (не LT у меня)
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.03.2005, 13:53
#8
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Тогда вот так:

Код:
[Выделить все]
^C^C^P(defun c:break2 () (vl-cmdf "break" pause "f" pause pause)(princ));break2;
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2005, 14:09
#9
Piton

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


Torino - кудесник, все ок
Есть еще вопрос
Для размеров пользуюсь макросом
Код:
[Выделить все]
^C^C_-layer;m;размеры;c;151;;;_DIMALIGNED;\\\_layerp
,но повтор по правой кнопке не срабатывает
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.03.2005, 16:06
#10
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Код:
[Выделить все]
;;;Просто добавь этот файл в автозагрузку
(vl-load-com)


(setq layers (vla-get-layers
	       (vla-get-activedocument
		 (vlax-get-acad-object)
	       )
	     )
)
(setq OldLayer (getvar "CLAYER"))
(vl-cmdf "layer" "m" "размеры" "c" 151 "" "") ;Да простят меня гуру...

(setvar "clayer" OldLayer)


(vlr-command-reactor
  nil
  '((:vlr-commandWillStart . startCommand))
)
(vlr-command-reactor
  nil
  '((:vlr-commandEnded . endCommand))
)
(vlr-command-reactor
  nil
  '((:vlr-commandCancelled . cancelCommand))
)


(defun startCommand (calling-reactor
		     startcommandInfo
		     /
		     thecommandstart
		    )
  (setq OldLayer (getvar "CLAYER"))
  (setq thecommandstart (nth 0 startcommandInfo))

  (if (wcmatch thecommandstart "DIM*")
    (setvar "clayer" "размеры")
  )


  (princ)
)


(defun endCommand (calling-reactor
		   endcommandInfo
		   /
		   thecommandend
		  )
  (setq thecommandend (nth 0 endcommandInfo))

  (if
    (wcmatch thecommandend "DIM*")
     (setvar "clayer" OldLayer)
  )


  (princ)
)


(defun cancelCommand (calling-reactor
		      cancelcommandInfo
		      /
		      thecommandcancel
		     )
  (setq thecommandcancel (nth 0 cancelcommandInfo))

  (if
    (wcmatch thecommandcancel "DIM*")
     (setvar "clayer" OldLayer)
  )


  (princ)
)


(princ)
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2005, 18:50
#11
Piton

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


Не срабатывает
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.03.2005, 18:55
#12
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Что пишет?
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.03.2005, 09:02
#13
plaz

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


2Piton:

По поводу твоего макроса могу предложить поставить * в начале кода:
  • *^C^C_-layer;m;размеры;c;151;;;_DIMALIGNED;\\\_layerp
тогда и правая клавиша не нужна, единственное, выход только по ESC, и соответственно не возвращает на предыдущий слой
plaz вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.03.2005, 09:51
#14
Piton

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


При запуске пишет :
AutoCAD menu utilities loaded.layer
Current layer: "0"
Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
m
Enter name for new layer (becomes the current layer) <0>: размеры Enter an
option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
c
New color [Truecolor/COlorbook] : 151
Enter name list of layer(s) for color 151 <размеры>: Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.03.2005, 11:25
#15
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Все правильно. А теперь создай размер обычным способом и посмотри на каком слое он окажется.
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.03.2005, 12:20
#16
Piton

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


2 Torino Все ок. Просто я запускал команду через предыдущий макрос, а надо было запускать обычно без модиффикации
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.03.2005, 13:53
#17
Piton

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


2Torino Подскажи тогда и для штриховки
^C^C_-layer;m;ШТРИХОВКА;c;5;;;_bhatch;\\\_layerp
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.03.2005, 13:55
#18
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Ну вот общими усилиями мы это сделали:

Код:
[Выделить все]
;;;Автоматический перенос размеров на слой "размеры"
;;;и заливки на слой "заливка"


;;;Просто добавь этот файл в автозагрузку
(vl-load-com)


(setq layers (vla-get-layers
	       (vla-get-activedocument
		 (vlax-get-acad-object)
	       )
	     )
)
(setq OldLayer (getvar "CLAYER"))

(vl-cmdf "layer" "m" "размеры" "c" 151 "" "") ;Да простят меня гуру...
(vl-cmdf "layer" "m" "штриховка" "c" 5 "" "")

(setvar "clayer" OldLayer)


(vlr-command-reactor
  nil
  '((:vlr-commandWillStart . startCommand))
)
(vlr-command-reactor
  nil
  '((:vlr-commandEnded . endCommand))
)
(vlr-command-reactor
  nil
  '((:vlr-commandCancelled . cancelCommand))
)


(defun startCommand (calling-reactor
		     startcommandInfo
		     /
		     thecommandstart
		    )
  (setq OldLayer (getvar "CLAYER"))
  (setq thecommandstart (nth 0 startcommandInfo))

  (cond
    ((wcmatch thecommandstart "DIM*")
     (setvar "clayer" "размеры")
    )
    ((wcmatch thecommandstart "*HATCH*")
     (setvar "clayer" "штриховка")
    )
  )
;;;  (if (wcmatch thecommandstart "DIM*")
;;;    (setvar "clayer" "размеры")
;;;  )


  (princ)
)


(defun endCommand (calling-reactor
		   endcommandInfo
		   /
		   thecommandend
		  )
  (setq thecommandend (nth 0 endcommandInfo))

  (cond
    ((wcmatch thecommandend "DIM*")
     (setvar "clayer" OldLayer)
    )
    ((wcmatch thecommandend "*HATCH*")
     (setvar "clayer" OldLayer)
    )
  )




  (princ)
)


(defun cancelCommand (calling-reactor
		      cancelcommandInfo
		      /
		      thecommandcancel
		     )
  (setq thecommandcancel (nth 0 cancelcommandInfo))

  (cond
    ((wcmatch thecommandcancel "DIM*")
     (setvar "clayer" OldLayer)
    )
    ((wcmatch thecommandcancel "*HATCH*")
     (setvar "clayer" OldLayer)
    )
  )



  (princ)
)


(princ)
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.03.2005, 14:14
#19
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 942
Отправить сообщение для Torino с помощью ICQ


Или лучше так:
Код:
[Выделить все]
;;;Автоматический перенос размеров на слой "размеры"
;;;и заливки на слой "заливка"

;;;Просто добавь этот файл в автозагрузку
(vl-load-com)
(setq layers (vla-get-layers
	       (vla-get-activedocument
		 (vlax-get-acad-object)
	       )
	     )
)

;;;-------------------------------------------------------------

(setq OldLayer (getvar "CLAYER"))
(vl-cmdf "layer" "m" "размеры" "c" 151 "" "") ;Да простят меня гуру...
(vl-cmdf "layer" "m" "штриховка" "c" 5 "" "")
(setvar "clayer" OldLayer)

;;;-------------------------------------------------------------

(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 OldLayer (getvar "CLAYER"))
  (setq thecommandstart (nth 0 startcommandInfo))

  (cond
    ((wcmatch thecommandstart "DIM*")
     (setvar "clayer" "размеры")
    )
    ((wcmatch thecommandstart "*HATCH*")
     (setvar "clayer" "штриховка")
    )
  )
  (princ)
)

;;;-------------------------------------------------------------

(defun endCommand (calling-reactor
		   endcommandInfo
		   /
		   thecommandend
		  )
  (setq thecommandend (nth 0 endcommandInfo))

  (cond
    ((wcmatch thecommandend "DIM*")
     (setvar "clayer" OldLayer)
    )
    ((wcmatch thecommandend "*HATCH*")
     (setvar "clayer" OldLayer)
    )
  )
  (princ)
)

;;;-------------------------------------------------------------

(princ)

;;;-------------------------------------------------------------
Torino вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.03.2005, 14:33
#20
Piton

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


2Torino СУПЕР об этом мечтал 2 года 8)
Piton вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


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