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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > создание размеров на специализированном слое?????

создание размеров на специализированном слое?????

Ответ
Поиск в этой теме
Непрочитано 02.09.2004, 10:29 #1
создание размеров на специализированном слое?????
maxw
 
Сообщений: n/a

Возможно ли и как программным путем автоматизировать переключение текущего слоя на специализированный слой (например -"Размеры") при использовании штатных команд образмеривания AutoCADа и возвращение на текущий слой после выполнения команды. Плииииз.
P.S. СПДС не предлагать ))
Просмотров: 6455
 
Непрочитано 02.09.2004, 11:12
#2
Lenich

Опер дир
 
Регистрация: 28.04.2004
Москва
Сообщений: 291


Если разбираетесь в VB то можно примерно так:
Прописать следующее в Autocad object'ах в VB
Код:
[Выделить все]
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)

CName = Array("DIMLINEAR", и остальные размеры можно здесь добавить)
'При этих командах будет всегда выполняться функция "switchToLayer".
'MsgBox CommandName
   For Each X In CName
    If (CommandName = X) Then
        switchToLayer
     End If
   Next
End Sub

Private Sub AcadDocument_EndCommand(ByVal CommandName As String)

   For Each X In CName
    If (CommandName = X) Then
        switchToBack
     End If
   Next
End Sub
И сделать модуль с описанием функций switchToLayer и switchToBack

Код:
[Выделить все]
Dim currLayer As AcadLayer

Public Function switchToEnglish()

    Set currLayer = ThisDrawing.ActiveLayer
    ThisDrawing.ActiveLayer = "DimLayer"

End Function
Public Function switchToBack()
    ThisDrawing.ActiveLayer = currLayer
End Function
Конечно не проверял но должно все работать.
Lenich вне форума  
 
Непрочитано 02.09.2004, 11:12
#3
Лентяй


 
Сообщений: n/a


Возможно путем переопределения соотв. команды и введения переключателя слоев.
 
 
Непрочитано 02.09.2004, 11:26
#4
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


http://autokad.ru/forum/viewtopic.php?t=1710
Эдуард вне форума  
 
Непрочитано 02.09.2004, 15:59 Re: создание размеров на специализированном слое?????
#5
maxw


 
Сообщений: n/a


Спасибо всем откликнувшимся.Решение нашли в книге Зуева, Полещука "САПР...Как это делается" (Книга просто супер)
Приводим код своей программы. Команды с префиксом "NC_" собственные подпрограммки. Действие их расшифрованы в примечаниях.

(defun C:NC_DimLinear ()
(NC_Starter); сохранение важных системных переменных , в том числе имя текущего слоя
(NC_SetLayer NC_DIMLAY)); включение (и при необходимости создание) размерного слоя
(NC_EchOn); включение вывода запроса команды в командную строку
(command "_.dimlinear");вызов команды образмеривания AutoCAD
(while (= (logand (getvar "CMDACTIVE") 1) 1) (command pause)); выполняем все запросы этой команды
(NC_Finisher);восстановление всех важных системных переменных, в том числе имя текущего слоя
(princ)
)

Подобная прогрммка создается для каждой команды образмеривания ("dimangular", "dimradius" и т.д. или чего угодно другого) AutoCAD.
 
 
Непрочитано 03.09.2004, 21:54
#6
Garbag


 
Регистрация: 21.06.2004
Тула
Сообщений: 164


А вот объясните мне чем плохо дописать в макрос команды
_-Layer (установка текущим размерного слоя) - а после выполнения команды размера - _-Layerp
:?:
Жду ГНЕВНЫХ отзывов
Garbag вне форума  
 
Непрочитано 04.09.2004, 07:03
#7
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


>>Garbag

Я делаю примерно так же..... Ну зачем огород городить для такой простой задачи?
И на кнопку посадил...... :shock:
Startrek вне форума  
 
Непрочитано 05.09.2004, 19:51
#8
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от Garbag
А вот объясните мне чем плохо дописать в макрос команды
_-Layer (установка текущим размерного слоя) - а после выполнения команды размера - _-Layerp
:?:
Жду ГНЕВНЫХ отзывов
Нечто вроде этого?
Код:
[Выделить все]
^C^C_.-layer;_s;размеры;;_.dimlinear;\\\_.layerp;
Скорей всего, к этому придется привыкнуть. Предположим, текущий слой "Детали", на нем что то рисуется, рисуется, образмеривается (с кнопки!), опять рисуется, опять нажимается кнопка и... ой, что то не дорисовали - жмем ESC.... Внимание! Вопрос: Какой слой останется активным :?: :wink:


Лучче так
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_l;;_la;размеры;;
ИМХО, конечно.
vk вне форума  
 
Непрочитано 05.09.2004, 20:41
#9
Garbag


 
Регистрация: 21.06.2004
Тула
Сообщений: 164


>>vk
Абсолютн согласен с замечанием - текущим слоем останется слой Размеры, но по опыту - это не так часто происходит (нажатие Esc), и перейти на предыдущий слой в принципе несложно.
ИМХО.
Ваш макрос очень неплох - опробую завтра на работе - спасибо.
Но в любом случае, мне кажется писать для такой маленькой проблемки ЛИСП - перебор ИМХО

в догонку: я просто переделал акадовскую панельку РАЗМЕРЫ с использованием этого макроса и сделал ее в отдельное меню - так что нежелающим таким образом размеры ставить - всегда можно воспользоваться стандартной панелью.
Garbag вне форума  
 
Непрочитано 06.09.2004, 09:26
#10
maxw


 
Сообщений: n/a


Привет всем и спасибо за учебу. И в самом деле-попробовал на кнопки макросы посадить-работает. Но штриховка, если вешать по такому же принципу, становиться текущим слоем-по завершению команды. Создал аналог слоя пунктир -по типу line -странно отрабатываю точки привязки. Может кто разъяснит?
И еще-команды через правую кнопку на повтор не включаются, только через повторное нажатие кнопки-что не есть хорошо. :roll:
Да объясняю зачем лисп привязывал-хотелось бы чтобы нужные слои создавались автоматом, при их отсутсвии в данном файле. Хотя и то что вы показали-не лишено здравого смысла.
Вопрос еше по существу-как Вы предпочитаете вводить слой невидимых линий в слой объекта(меняя их свойства), или создавать отдельный слой?
 
 
Непрочитано 06.09.2004, 15:05
#11
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Но штриховка, если вешать по такому же принципу, становиться текущим слоем-по завершению команды.
С этим зверем посложней, если из макроса... Лиспом надежней.

Цитата:
И еще-команды через правую кнопку на повтор не включаются, только через повторное нажатие кнопки-что не есть хорошо.
А вот это, батенька, RTFM. И через Enter и пробел тоже. Такова природа.

Цитата:
Создал аналог слоя пунктир -по типу line -странно отрабатываю точки привязки. Может кто разъяснит?
А может кто разъяснит суть вопроса? :wink:

Для невидимых предпочтительно юзать отдельный слой (его можно отключать по необходимости)
vk вне форума  
 
Непрочитано 06.09.2004, 16:31
#12
Vova

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


Цитата:
Сообщение от maxw
И еще-команды через правую кнопку на повтор не включаются, только через повторное нажатие кнопки-что не есть хорошо.
Если твой автокад 2000 или 2002, то надо выставить на правой кнопке контекстное меню (через Option) и через него повторять макрос команды. А если автокад 2004 или 2005, то можно регулировать длительностью правого клика свое желания-повторить ли предыдущую команду сразу или через контекстное меню. Но макрос повторяется только через это меню.
Насчет отдельного слоя для определенных типов линий-я предпочитаю назначать слои в соответствии с технологией чертежа, например, разводка проводов в трубах в отдельном слое от разводки их в подшивном потолке. А если среди тех и других встречаются по каким то причинам выделенные цветом или типом линии, то надо принять решение - закладывать ли их в отдельные слои или нет. Это зависит только от того, что дальше с ними предполагается делать. То есть, решай этот вопрос самостоятельно
Vova вне форума  
 
Непрочитано 20.09.2004, 12:39
#13
lee


 
Регистрация: 28.02.2004
43
Сообщений: 1,817
<phrase 1=


Цитата:
Сообщение от vk
Лучче так
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_l;;_la;размеры;;
ИМХО, конечно.
Попробовал. Все работает. А ПОТОМ. Нажал правую клавишу мыши, чтоб повторить предыдущую команду. OOPS ((
lee вне форума  
 
Непрочитано 20.09.2004, 13:01
#14
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


А не лучше ли это сделать через реакторы?
Но это для владеющих высшим пилотажем программирования.
Pilot вне форума  
 
Непрочитано 20.09.2004, 13:06
#15
Dima

инженер
 
Регистрация: 30.08.2003
Одесса-Мама
Сообщений: 176
<phrase 1= Отправить сообщение для Dima с помощью Skype™


Код:
[Выделить все]
(Command "-layer" "m" "dim" "c" "12" "dim" "");^C^C_dimlinear
когда-то так посоветовали

12 - цвет
dim - слой

P.S. кстати со штриховкой тоже работает
__________________
vinum
Dima вне форума  
 
Непрочитано 20.09.2004, 15:06
#16
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от lee
Цитата:
Сообщение от vk
Лучче так
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_l;;_la;размеры;;
ИМХО, конечно.
Попробовал. Все работает. А ПОТОМ. Нажал правую клавишу мыши, чтоб повторить предыдущую команду. OOPS ((
Можно Лиспик прицепить
Код:
[Выделить все]
^C^C(defun c:dimlinearl () (command "_.dimlinear" pause pause pause "_.chprop" "_l" "" "_la" "размеры" ""));dimlinearl;
vk вне форума  
 
Непрочитано 20.09.2004, 19:23
#17
Star

Конструктор штампов
 
Регистрация: 10.03.2004
г. Киев
Сообщений: 92


Вернемся к штриховке:

Код:
[Выделить все]
^C^C_-Bhatch;p;u;45;3;n;\;_chprop;_l;;_la;штриховка;;
Работает, но штрихует только один контур за раз.
Star вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > создание размеров на специализированном слое?????