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

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

Попасть в слой.

Ответ
Поиск в этой теме
Непрочитано 22.02.2006, 05:38 #1
Попасть в слой.
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 10,288

Все хотят, чтобы размер встал в слой РАЗМЕРЫ (условно) не переключаясь в него
Как это сделать?
Просмотров: 38448
 
Непрочитано 22.02.2006, 05:45
#2
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Попробуйте найти книгу В. Света "AutoCAD Язык макрокоманд и создание кнопок". Там на эту тему кажется, кое что написано.
forMA вне форума  
 
Непрочитано 22.02.2006, 05:47
#3
vk

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


В смысле, без столь тобою любимых кнопочных макросов, которые помещают размер куда надо :?:
Идея проста - сделать реактор, реагирующий на появление новых примитивов в чертеже и нехай он закидывает куда надо.... Разумеется, если образмеривание делается на нескольких слоях, то нужно учесть также слой под активным ВЭ.

> forMA
Шутка удалась
vk вне форума  
 
Непрочитано 22.02.2006, 05:53
#4
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для vk
------
Не понял. Какая шутка?
forMA вне форума  
 
Непрочитано 22.02.2006, 06:06
#5
vk

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


Цитата:
Сообщение от forMA
для vk
------
Не понял. Какая шутка?
Не понял... ты не читал эту книгу? Прочти обязательно! Автор Владимир Свет.
Его ник на этом и на другом форуме Vova

PS Кто автор темы :?: Посмотри :wink:
vk вне форума  
 
Непрочитано 22.02.2006, 06:10
#6
Profan


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


Действительно ВСЕ хотят? Тем, кто имеет отношение к архитектуре, можно посоветовать перейти на ArchiCAD. Там размеры ставятся на свой слой автоматически. Или перейти на Revit. Там проблемы со слоями вообще нет, поскольку самих слоев нет. Остальные перебьются. Сделать нужный слой текущим - велика проблема. Скажут, мол, много слоев, в глазах рябит. Так обзовите слои так, чтобы сразу можно было найти, например, как у forMA:
06-DIMENSION.
Насчет кнопок с соответствующими макросами говорить не буду, Vova сам лучше знает...
Profan вне форума  
 
Непрочитано 22.02.2006, 06:13
#7
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для vk
--------
У меня эта книга есть. Разве Vova автор этой книги? Совершенно разные позиции. Vova- идейный "клавишник", В. Свет явный "кнопочник". И книга этому прямое доказательство. Нет этого не может быть.
forMA вне форума  
 
Непрочитано 22.02.2006, 06:22
#8
vk

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


Может.... Откройте страницу 245, вторая строка снизу... сравните емайл ))

А вобще то на этом форуме было много сказано об этой книге...
vk вне форума  
 
Непрочитано 22.02.2006, 06:46
#9
Profan


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


Странно мне, что Autodesk не предусмотрела механизма или инструмента, необязательного к исполнению, - механизма увязки объекта с определенным слоем, назначаемым пользователем. Сверхуниверсальность AutoCAD'а создает много проблем, главная из которых - неоднозначность приемов работы. Поэтому и приходится продвинутым пользователям придумывать разные СТП, чтобы подавить эту неоднозначность. Однако, ВСЕ знают, что размер - специфический объект AutoCAD'а, и к нему вполне можно было бы применить этот инструмент. Поставить, например, в соответствие команде образмеривания слой 06-DIMENSION и больше не думать об этом, слой становился бы текущим автоматически. А то вот пользователи должны сочинять реакторы. То же самое можно сказать и про текст. Правда, мне кажется, что тот факт, что слой является свойством объекта, как-то мешает реализации этого инструмента.
Profan вне форума  
 
Непрочитано 22.02.2006, 06:52
#10
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для Profan
-----------
Я с огромным удивлением все это читаю.
Просто обалдеваю от такого. Для меня одна загадка сменяется другой. Теперь мне понятна реакция публики, когда я только заикнулся о постоянно включенных привязках.
forMA вне форума  
 
Непрочитано 22.02.2006, 07:06
#11
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для Profan
-----------
Поставьте тот же ЕСКД как теоретическую базу для черчения в AutoCAD хотя бы в своей области и не будет никаких вопросов или проблем. Насколько я знаю в CS многое решено. Дорого, конечно, стоит. Но можно вполне обойтись и LISP c VBA. Я пребываю в огромном удивлении.
forMA вне форума  
 
Автор темы   Непрочитано 22.02.2006, 07:21
#12
Vova

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


Что-то мало предложений. Макрос, реактор, переход на др программы, и все? А как-же для простых смертных, которым это не под-силу? А хочется... И текст также хочется в слой засунуть, и еще кое-что. А переключатся ох как неохота. Как и кисточкой мазать. А СТП велят, чтобы было единообразно.
Да, чуть не забыл, я говорю об АС-2005.
Vova вне форума  
 
Непрочитано 22.02.2006, 07:34
#13
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


мое решение:
Код:
[Выделить все]
^C^C(command "_layer" "Set" "_Размер" _$ (command "_dimlinear" pause pause pause (command "_layerP")))
v_alex вне форума  
 
Непрочитано 22.02.2006, 07:48
#14
vk

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


Vova, это очередная загадка?

Мое решение на VBA (пока без обработки ошибок по нажатию ESC - если пользователь отказался от продолжения команды то будет оставлен слой размеров)
Для простоты также предполагаем что слой для размеров "6-DIM" уже присутствует в чертеже (хотя, создать его программно - не проблема)
Код:
[Выделить все]
Option Explicit

Dim preLayer As AcadLayer
Public WithEvents ACADApp As AcadApplication


Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  If InStr(CommandName, "DIM") = 1 Then
    Set preLayer = ActiveDocument.ActiveLayer
    ActiveDocument.ActiveLayer = ActiveDocument.Layers("6-DIM")
  End If
End Sub

Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  If InStr(CommandName, "DIM") = 1 Then
    ActiveDocument.ActiveLayer = preLayer
  End If
End Sub
Почему сначала переключил а потом рисовать заставил? Гммм... Некоторые размеры (метка центра, цепочка размеров, угловой размер в некоторых случаях, может еще что то) строятся по какому то хитрому способу. То есть, команда закончилась, а работа с примитивами продолжается. Почему так - пока не понял.
vk вне форума  
 
Непрочитано 22.02.2006, 08:11
#15
Кулик Алексей aka kpblc
Moderator

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


Есть мааахлонький вопрос: работаем чисто в каде? Никаких ADT / MDT / ABS? Если да, то (ИМХО!!!) проще либо сделать макрос на кнопку, либо лисп, меняющий свойства последнего примитива, либо (что еще лучше) - реактор. Правда, с реакторами тоже морока. У моих сделан именно реактор, но, чую, учтено было не все.
> vk : Умоляю, если сегодня еще появишься, напиши мне в почту либо в аську, чертовски хочу некоторые моменты обсудить!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2006, 09:37
#16
Star

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


Раз Vova акцентирует внимание на АС2005, то может в нём предумотрено что-то такое? Сам пользуюсь пока 2002-й версиией, поэтому жду ответа.
Star вне форума  
 
Непрочитано 22.02.2006, 09:40
#17
Profan


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


Для forMA
При чем тут ЕСКД, Господи? Я говорю об полуавтоматическом управлении объектными слоями средствами самого AutoCAD'а. Не автоматическим, как в ADT и т.п., в которых слои уже назначены программно, а по желанию пользователя. А то, что спрашивает Vova можно же решить с помощью AutoLisp'а, только заменить стандартные макросы на кнопках и в пунктах меню новыми командами, в которых нужные слои будут переключаться автоматически. Ну, и обработчик ошибок нужен, который лучше записать в acad.lsp. Конечно, остается проблема с командной строкой, так это пусть "клавишники" подумают.
Profan вне форума  
 
Непрочитано 22.02.2006, 09:40
#18
X-DeViL

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


Я дико извиняюсь, а если взять и попробовать сделать макрос не кнопочный, а temporary override keys?
X-DeViL вне форума  
 
Непрочитано 22.02.2006, 09:43
#19
Кулик Алексей aka kpblc
Moderator

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


> X-DeViL : А перевод?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2006, 09:55
#20
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Конечно, остается проблема с командной строкой, так это пусть "клавишники" подумают.
А можно и команды переопределить.
Krieger вне форума  
 
Непрочитано 22.02.2006, 09:59
#21
X-DeViL

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


Ну чтобы не создавать кнопочку, можно сделать макрос который при нажатии определенной комбинации клавиш на клаве ВРЕМЕННО (temporary) переключает слой в, например, "КЖ_Стены_Размеры" и затем в момент отпускания клавиш, слой возвращается в текущий...
X-DeViL вне форума  
 
Непрочитано 22.02.2006, 10:42
#22
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


По мне - так самый простой и действенный вариант делать все полу-автоматом т.е. сделать лисп, прицепить его куда душе угодно и вызывать, как пожелаешь, время от времени, а он пусть раскладывает все по слоям - и ни каких проблем и все под контролем (ну разве, что маркер центра, который рисуется двумя линиями может не попадать на слой размеров т.к. примитв - не размер и попробуй его отфильтруй).
AY вне форума  
 
Непрочитано 22.02.2006, 11:46
#23
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Рисовать размер на слое РАЗМЕРЫ (DIM и т.д) - примитивное решение для частных случаев.

Слоев с размерами разного назначения должно быть много! Размеры между координационными осями, которые нужны всем, кладочные и т.п.

Самое худшее, когда файл с размерами в одном слое попадает смежникам - ненужное не отключишь, приходится вытирать или сортировать по другим слоям.

Размеры - только частный случай, когда с объектом хочется связать слой.

Мы сделали так - в классификаторе слоев имеется свойство - метод слоя. Метод - это любое LISP-выражение. Имеется одна "команда" - нарисовать методом слоя.

В этом случае не надо много кнопок. При установке слоя можно одним щелчком запускать требуемую программу (команду). В частном случае, для слоев размеров это может быть команда простановки размеров.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 22.02.2006, 12:07
#24
Vova

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


Вы пока думайте, а я возьму тайм-аут. Надо подвозбудить народ в другом месте
Vova вне форума  
 
Непрочитано 22.02.2006, 12:09
#25
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Ребята, че-то вы тут шибко умные все.
В ToolPalettes можно слой в опциях задать, и не надо никаких макросов да лиспов.
Krieger вне форума  
 
Непрочитано 22.02.2006, 14:12
#26
Piton

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


Вот решени для размеров и штриховки. Сам очень активно пользуюсь
http://dwg.ru/forum/viewtopic.php?p=...ghlight=#25374
Piton вне форума  
 
Непрочитано 22.02.2006, 14:15
#27
vk

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


Цитата:
Сообщение от Krieger
В ToolPalettes можно слой в опциях задать, и не надо никаких макросов да лиспов.
Клавишники тихо курят в сторонке?
vk вне форума  
 
Автор темы   Непрочитано 22.02.2006, 14:32
#28
Vova

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


Krieger!!!!
Между прочим, в свой тайм-аут я зашел на autocad ru и создал тему-Удобно-ли работать с клавиатуры-продолжение 2. И задал там вопрос: кто-бы победил, если-бы надо было в конкурсе начертить 10 линий, и из них через одну в своем слое.
ТЕМА УДАЛЕНА МОДЕРАТОРОМ
А какая связка=бы получилась!
Клавишники отдыхают. Я перехожу в другой лагерь
Krieger, расскажи подробно, как это сделать
Vova вне форума  
 
Непрочитано 22.02.2006, 15:07
#29
Profan


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


Для Krieger
Точно, в свойствах инструмента все есть. А я тут распинался... Только и выполнять команды надо через палитру инструментов. На кнопки и командную строку настройка инструмента в палитре не действует. А кто-то говорит, что на кой переходить с 2002 на 2006.
Profan вне форума  
 
Непрочитано 22.02.2006, 15:09
#30
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от Vova
Клавишники отдыхают. Я перехожу в другой лагерь
В смысле: Переходите в "кнопочники"? Не делайте этого! Как говорят в американских фильмах: "Стой там, где стоишь"
forMA вне форума  
 
Непрочитано 22.02.2006, 15:11
#31
Profan


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


Для Vova
Стоит только щелкнуть правой кнопкой мыши на инструменте палитры (в том чмсле и на размере) и выбрать "Свойства объекта..." ("Properties...").
Profan вне форума  
 
Непрочитано 22.02.2006, 15:12
#32
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от Profan
...говорит, что на кой переходить с 2002 на 2006.
Речь идет о ACAD 2005.
forMA вне форума  
 
Непрочитано 22.02.2006, 15:19
#33
Profan


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


Однако, для размерных команд кое-какие сложности есть, надо разбираться.
Profan вне форума  
 
Непрочитано 22.02.2006, 15:21
#34
Profan


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


Для forMA
Да это я вспомнил тему из другого форума. А проверял я сейчас свойства инструмента именно в 2005-ом.
Profan вне форума  
 
Непрочитано 22.02.2006, 15:26
#35
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для Profan
--------------------
Настораживает то, что решение не лежит на поверхности. Есть у меня большая доля опасения, что испытаю я очередное разочарование. Однако, будем ждать, затаив дыхание
forMA вне форума  
 
Непрочитано 22.02.2006, 15:30
#36
Кулик Алексей aka kpblc
Moderator

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


> Profan : А поконкретнее? Какие сложности? Может, я их прошел, не заметив, а может, еще не столкнулся?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2006, 15:51
#37
vk

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


Как то от этой темы уже мистикой веять начинает.... :roll:
vk вне форума  
 
Непрочитано 22.02.2006, 16:02
#38
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,345


Лучшим решением вопроса, все таки являются тулпалитры. Я в них блоки различных дверей и окон засунул - они на нужные слои ложатся и разными цветами, настройками
>Vova
Цитата:
Сообщение от Vova
Клавишники отдыхают. Я перехожу в другой лагерь
Не уж то предать наш лагерь хотите ?
asys вне форума  
 
Непрочитано 22.02.2006, 16:06
#39
Profan


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


Для kpblc
Да что-то там с "Использованием подменю" (в русской версии).
Profan вне форума  
 
Непрочитано 22.02.2006, 16:20
#40
Кулик Алексей aka kpblc
Moderator

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


> Asys : Дело в том, что инструментов будут пользоваться только в том случае, если предоставлен инструмент удобный. Копать можно и стальной пластиной, но удобнее - лопатой. Заодно вступает в игру и особенность психики - запоминается лучше графическая, а не текстовая инфа (не относится к программистам ) Т.е. toolpalettes одно из самых лучших решений ИМХО. Соответственно клавиши становятся не особо нужны.
> Profan : На каком каде? И что там конкретно начинается?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2006, 16:25
#41
X-DeViL

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


Мою идею о temporary override key все забыли?
X-DeViL вне форума  
 
Непрочитано 22.02.2006, 18:18
#42
Neznayka


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


Цитата:
Сообщение от vk
Цитата:
Сообщение от Krieger
В ToolPalettes можно слой в опциях задать, и не надо никаких макросов да лиспов.
Клавишники тихо курят в сторонке?
Клавишники тихо курят в сторонке?

Так ли это. Ведь благо в 2006 появилась возможность настроить свою комбинацию на самопальный макрос. У меня, например, при нажатии на ctrl+shift+1 начинает отрисовывается полилиния на своём слое, при ctrl+shift+2 другая pl и т.д.
МАКРОС ( ^C^C_-Layer;_Make;All.50;;_-Lweight;Послою;(command ^M;"_pline")(while (= (getvar "cmdactive") 1) (command ^M;pause))(setvar "clayer" "0")(princ) ; )

Так что можно спорить с ctrl+3. Но самое главное это не зацикливатся на одном, нужно все грамотно чередовать.

выкладываю как я это делаю, может не так
[ATTACH]1140621535.jpg[/ATTACH]
Neznayka вне форума  
 
Непрочитано 22.02.2006, 20:40
#43
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от X-DeViL
Мою идею о temporary override key все забыли?
Что за идея? Или где можно посмотреть?
forMA вне форума  
 
Непрочитано 23.02.2006, 00:03
#44
vk

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


> Neznayka
Про 2006 ничего не скажу, не работал. Однако, если к примеру набрать команду отрисовки размера к клавиатуры или же испрользовать стандартную кнопку, то отрисовка пойдет все же на текущем слое?

> ALL
Немного подправленая версия, хотя, тоже далекая от идеала
Код:
[Выделить все]
Option Explicit
Public WithEvents ACADApp As AcadApplication

Private preLayer As AcadLayer
Private dimStart As Boolean
Const DIMLAYERNAME = "Размеры"

Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  If dimStart Then
    ActiveDocument.ActiveLayer = preLayer
    dimStart = False
  End If
  
  If InStr(CommandName, "DIM") = 1 Then
    Set preLayer = ActiveDocument.ActiveLayer
    ActiveDocument.ActiveLayer = ActiveDocument.Layers(DIMLAYERNAME)
    dimStart = True
  End If
End Sub

Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  If InStr(CommandName, "DIM") = 1 Or dimStart = True Then
    ActiveDocument.ActiveLayer = preLayer
    dimStart = False
  End If
End Sub
При выходе по ESC остается висеть слой размеров, но только до начала следующей команды. С метками центра прекрасно справляется
Предполагается что слой "Размеры" уже существует и не заморожен.
vk вне форума  
 
Непрочитано 23.02.2006, 03:31
#45
Piton

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


У меня используются на чертежах порядка 15 слоев. И чтоб нарисовать линию в одном из них надо 15 кнопок или 15 сокращений в acad.pgp :idea: (про меню не говорю-оооочень долго)
Я делаю так: размеры и штриховка сразу отрисовывается в своих слоях, остальное кисточкой и панелью слоев, блоки из тулпалетсов сразу на свой слой.
Piton вне форума  
 
Непрочитано 23.02.2006, 04:12
#46
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Ждем! Продолжаем ждать способ Vova. Нетерпение достигает предела. Уж сутки на исходе...
forMA вне форума  
 
Непрочитано 23.02.2006, 13:39
#47
X-DeViL

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


Temporary override keys - это фича 2006го (извиняйте, что не 2005) которая ВРЕМЕННО выполняет какой-то макрос (при событии KEYDOWN) и возвращает все на место при событии KEYUP
X-DeViL вне форума  
 
Непрочитано 23.02.2006, 13:44
#48
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от X-DeViL
Temporary override keys - это фича 2006го (извиняйте, что не 2005) которая ВРЕМЕННО выполняет какой-то макрос (при событии KEYDOWN) и возвращает все на место при событии KEYUP
У меня 2006. Где эта фича? Можно поподробней?
Или может ссылка есть на подробности?
forMA вне форума  
 
Непрочитано 23.02.2006, 14:02
#49
X-DeViL

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


в CUI она находится... там где все кнопочки настраиваются...

mk:@MSITStore:C:\Program%20Files\AutoCAD%202006\help\acad_acg.chm::/ACG.04.102.htm

попробуй так
X-DeViL вне форума  
 
Непрочитано 23.02.2006, 14:18
#50
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для X-DeViL
---------------
А ранее Вы писали, что это Ваша идея
По help- ам шуршать это мы сами могем
forMA вне форума  
 
Непрочитано 23.02.2006, 15:11
#51
X-DeViL

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


Ну моя идея это использовать... А идея этих фишек - разработчиков

А хэлпе все грамотно написано...
X-DeViL вне форума  
 
Непрочитано 23.02.2006, 15:15
#52
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


для X-DeViL
----------------------
Понятно. Понятно. Мне не непонятно где Vova?
Заинтриговал и исчез.
forMA вне форума  
 
Автор темы   Непрочитано 25.02.2006, 15:46
#53
Vova

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


Цитата:
Сообщение от Asys
Лучшим решением вопроса, все таки являются тулпалитры. Я в них блоки различных дверей и окон засунул - они на нужные слои ложатся и разными цветами, настройками
>Vova
Цитата:
Сообщение от Vova
Клавишники отдыхают. Я перехожу в другой лагерь
Не уж то предать наш лагерь хотите ?
Насчет перехода в лагерь кнопочников это, конечно, шутка. Надо применять все, что умеешь, когда что выгодно. Сейчас работаю над чертежом, где надо рисовать две разные системы параллельно. (Дуги, сплайны, линии и блоки) Обе систему в разных слоях. То есть, то что-то в одной системе, что-то в другой, и так передвигаюсь по чертежу. Раньше работал-бы так: текущим выставляется слой той системы, которой больше в данном месте. Рисую объекты другой системы в слое первой, и далее кисточкой... Бывает, тел зазвонит. Или кто-то сообщит новость-секретарша, мол, беременна, а знаешь от кого? Ну разве можно в таких условиях не забыть помазать кисточкой? тем более, я точно знаю, что не от меня и в душе сожалею. Теперь я настроил палетку так, что в ней то, чем рисую вторую систему, ложится в ее слой. То есть первую систему рисую клавишами, а вторую как-вы кнопками. А когда выхожу на участок чертежа, где больше другой системы, ее слой делаю текущим, а в палетке меняю слой системы. И пусть все они размножаются и беременеют, мой чертеж от этого не пострадает. Надеюсь, те, кто обладают автокадом 2005 и выше, сами разобрались, как это сделать. Если что не получается, задавайте конкретные вопросы. Здесь много народу уже разобрались, как все настроить
Vova вне форума  
 
Автор темы   Непрочитано 26.02.2006, 16:25
#54
Vova

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


Цитата:
Сообщение от forMA
Цитата:
Сообщение от X-DeViL
Temporary override keys - это фича 2006го (извиняйте, что не 2005) которая ВРЕМЕННО выполняет какой-то макрос (при событии KEYDOWN) и возвращает все на место при событии KEYUP
У меня 2006. Где эта фича? Можно поподробней?
Или может ссылка есть на подробности?
Цитата:
Сообщение от forMA
А ранее Вы писали, что это Ваша идея
По help- ам шуршать это мы сами могем
Об идее X-DeVil. Oн, видимо, начал изучать возможность временного назначения горячих клавиш для перевода текущего слоя в другой, да что-то не получилось. Иначе выложил-бы.
forMa, как бы мы с X-DeViL и все остальные были тебе благодарны, если-бы ты, пошуршав Хелпом, разобрался с этим вопросом и разжевал всем остальным, как это сделать. Наводка, куда смотреть: Help по слову Tеmporary. Затем Temporary Override keys. Макрос для вызова слоя, пусть с названием Sloi-2:
^C^C-La;set;Sloi-2;; (пишу по памяти, нет под рукой АС, но у тебя есть много примеров перевода в слой) Предварительно такой слой надо создать. При нажатии на заданные клавиши текущим должен стать слой Sloi-2, а при отпускании клавиш возвращается прежний текущий. С ходу у меня не получилось, а на работе перегруз. Я думаю, Мастеру под силу такая работа. Это будет хорошим пропуском в Профессионалы
Vova вне форума  
 
Непрочитано 26.02.2006, 16:52
#55
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Первое:
Цитата:
Макрос, реактор, переход на др программы, и все? А как-же для простых смертных, которым это не под-силу? А хочется...
Ваша цитата? Так что макросы (маленькие программы), LISP и прочие языки отпадают....

Второе:
Цитата:
Убедительно прошу не отвечать на этот пост и по-возможности впредь, в темах, открытых мной...
Ваша реплика?...Без комментариев

p.s. Спровоцировать, что бы потом обвинить в провоцировании. Уже проходил. Так, что лучше я промолчу.
forMA вне форума  
 
Непрочитано 26.02.2006, 17:32
#56
X-DeViL

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


Да... собственно я разобрался с тем как менять значения переменных (там на дизеле вроде все пишется) из temporary overrides, а вот как поменять значение переменной на <текущее значение>+<какой-то суффикс> (например - сейчас слой "Стены", а прибавить надо "_Размеры")! Вот с этим я не разобрался... по хэлпу сложно...
X-DeViL вне форума  
 
Автор темы   Непрочитано 26.02.2006, 17:50
#57
Vova

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


forMa не простой смертный. Уже использует много макросов, которые получил на AutoCAD.ru. Даже сам выставлял. А в данном случае вот он, нужный макрос, в посте №54.
Мою цитату следовало бы закончить:
Цитата:
....если постить то только по-существу
Итак, на forMA надежды нет.
Х-deVIL> по твоей идее объявляется МОЗГОВАЯ АТАКА
Как создать горячие клавиши, делающие нужный слой текущим при их нажатии и возвращающие предыдущего при их отпускании?
Дай, пожалуйста, все свои шаги, чтобы стартовать не с нуля.
Vova вне форума  
 
Непрочитано 26.02.2006, 18:02
#58
X-DeViL

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


Наработка еще настолько сыра что ее даже выкладывать стыдно...

Код:
[Выделить все]
^P_.clayer $(+,$(getvar,clayer),"_Размеры")
Проблемы на которых все застопорилось:

- temporary overrides работает только при активной команде, а в такой формулировке она прерывает уже начатую команду
- и вообще она как-то работет не так как я хочу... точнее совсем не работает...
X-DeViL вне форума  
 
Непрочитано 01.03.2006, 11:33
#59
X-DeViL

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


Что-то нет криков! Куда все пропали? у всех мой макрос работает что ли? )
X-DeViL вне форума  
 
Непрочитано 01.03.2006, 12:00
#60
Profan


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


Для X-DeViL
Какой макрос? Вот этот:
Код:
[Выделить все]
^P_.clayer $(+,$(getvar,clayer),"_Размеры")
Так здесь работает только
Код:
да и все, IMHO.
Profan вне форума  
 
Непрочитано 01.03.2006, 12:33
#61
X-DeViL

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


Это макрос для temporary override keys...

А если работает только clayer, то как заставить работать остальное?
X-DeViL вне форума  
 
Непрочитано 01.03.2006, 13:02
#62
Кулик Алексей aka kpblc
Moderator

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


Я с temporary overrides не работал, но у меня вопрос - а слой-то вообще существует? или идет попытка назначить clayer невозможное значение? Может, слой сначала все же создавать надо, а?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.03.2006, 13:15
#63
X-DeViL

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


Существует... 100%
X-DeViL вне форума  
 
Непрочитано 01.03.2006, 13:28
#64
Кулик Алексей aka kpblc
Moderator

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


Попробовал на 2005 провернуть просто назначение слоя в прозрачном режиме. Ни фига, имя сначала надо вычислить для слоя. Народ, может, стоит сначала попробовать простой макрос наваять, а потом уже на temp override замахиваться? Потому как у меня простого универсального макроса не получилось (лисп не упоминаю сознательно).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.03.2006, 13:44
#65
X-DeViL

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


Если получится наваять ЛИСП в одну строчку который все это делает, то флаг в руки я в лиспе них... чего не смыслю вааааабще
X-DeViL вне форума  
 
Непрочитано 01.03.2006, 14:37
#66
vk

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


Цитата:
Сообщение от X-DeViL
Если получится наваять ЛИСП в одну строчку .....
Легко получится. Наваять много строк, потом убрать (или привести к виду ;| каммент |;) комментарии и убрать переводы строки.
vk вне форума  
 
Непрочитано 01.03.2006, 14:56
#67
Кулик Алексей aka kpblc
Moderator

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


Маленький момент - лисп должен поддерживать работу в прозрачном режиме (ЯТД). Лично мне такое не реализовать (надеюсь, что это когда-нибудь исправится).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.03.2006, 15:01
#68
X-DeViL

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


ну тогда на дизеле... он поддерживает... только как сделать так чтобы уже запущеная команда не прерывалась?
X-DeViL вне форума  
 
Автор темы   Непрочитано 02.03.2006, 05:27
#69
Vova

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


Невысокая активность говорит о том, что обладатели 2006 не очень понимают, о чем речь. Я бы хотел, чтобы мы коллективно разобрались с одной фитчей, которая обещает интересную перспективу-работая в текущем слое можно прижать клавишу, при этом текущим станет другой слой-нарисовать в него что-то и, отпустив клавишу, вернуть прежний слой. Создайте в учебном чертеже 2 слоя-один с именем Sloi-1, и другой- Sloi-2. Текущим сделайте первый. Хелп откройте на статье Temporary Override Keys. Я даю здесь вольный перевод, где больше отсебятины.
1. Откроем окно CUI, в левом верхнем углу выбираем Main CUI File (acad.cui) и в этом списке открываем Keyboard Shortcuts.
2. Здесь 2 строки Shortcut Keys и Temporary Override Keys (Горячие клавиши и временные горячие клавиши) Кликнем на Temporary... Раскрывается список существующих временных (а кто про них знает?). Здесь, по идее, можно назначить и свое собственное. Но сначала опробуем существующее. Пусть это будет включалка привязок. -Toggles Object Snap Mode - и дважды по ней щелкнем. В окне справа вверху выделилась строка с F3. Мы знаем эту клавишу. При нажатии она переключала привязки. Но чтобы при удержании? Здесь есть и вторая строка SHIFT+' Клик по любой из этих строк выдает в нижнем правом окне совершенно одинаковый макрос переклучения привязок, по-идее должно работать одинаково. Но ведь Shift + одинарная кавычка должен выдать двойную кавычку, это верхний регистр? Странно. Возьмем команду Line, прижмем Shift+' и видим... Точнее, кто видит, а кто нет. В зависимости от состояния переменной Tempoverrides. Поставьте ее в 1. Теперь можно в процессе команды прижать либо F3, либо SHIFT+' и около курсора появится чашка с блюдцем (для любителей кофе) Привязки временно отключатся. Отпуская клавиши, привязки возобновляются.
Точно также можно назначить перемену слоя. Продолжаем читать HELP.
3. ...
Продолжение от меня поступит только через сутки. Если не найдутся нетерпеливые, и не продолжат. Макрос, который я дал в №54, работает. Но у меня не все получилось, поэтому готового решения не будет. Пробуйте...
Vova вне форума  
 
Непрочитано 02.03.2006, 09:15
#70
Profan


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


Вот что я сделал (AutoCAD 2006 РУС).
Создал новую клавишу временной замены с названием "Замена слоя". Сочетание клавиш SHIFT+1 (для пробы).
Макрос 1 (нажатие клавиши):
^C^C(setq lay (getvar "clayer"));_-layer;_m;Размеры;;
Макрос 2 (отпускание клавиши):
^C^C(setvar "clayer" lay);(setq lay nil);
Как работает.
Допустим, вызвал команду "_line" ("отрезок"). Не указывая точки, нажимаю SHIFT+1. Команда отменяется, слой переключается на "Размеры". Теперь при нажатых SHIFT+1 могу рисовать на слое "Размеры". Нарисовал, отпустил клавиши, вернулся предыдущий слой.
Что надо проверить.
Роль ^C^C.
Думаю, что для клавишников такая фигня с клавишами временной замены малоприемлима.
Profan вне форума  
 
Непрочитано 02.03.2006, 17:27
#71
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Варианты макросов на DIESEL.
Нажатие:
Код:
[Выделить все]
'_.users1;$(eval,$(getvar,clayer));'_.-layer;_m;"Размеры";;
Отпускание:
Код:
[Выделить все]
'_.clayer;$(eval,$(getvar,users1));
AY вне форума  
 
Автор темы   Непрочитано 03.03.2006, 04:36
#72
Vova

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


1. ^c^c должно быть, без них не работает, поэтому сначала надо взять (почти?) любую команду рисования, затем нажать врем. горячие клавиши, в результате знаки ^c^c отменят эту команду, но позволят войти в режим временной команды, где чашка с блюдцем. Затем надо взять уже нужную команду - рисования или вставки блока и работать, не отпуская клавиш.
2. Согласно Help при отпускании клавиш, если во второй строке (отпускание) ничего нет, должен восстановиться постоянный режим. В нашем случая, должен вернуться прежний слой. Но этого не происходит. Profan и АУ дали вторую строку. (Profan> можешь дать здесь выписку из русского хелпа?) В моем варианте макроса (№54) я дал во второй строке ^C^C_Layerp. И все работает.
НО
При последующей попытке возобновить команду правой кнопкой мыши выдается Layerp и автокад ругается. То есть здесь недоработка AutoDesk
3. Чисто работать только на клавишах не удается. Если первый раз команду можно взять с клавиш, то, уже удерживая клавиши (Shift+1-в варианте Profan), приходится работать только с кнопок. Даже с Tool Palette команды не берутся.
4. Есть еще одно необычное для автокада ограничение для назначения горячих клавиш. Но я оставляю это как загадку. Кто возится с этим делом, должен обязательно наткнуться и задaться вопросом-почему комбинации не создаются?
5. Попробуйте нарисовать Spline в режиме перевода в новый слой. У меня при удержании Shift+1 и нажатии ПК комп начинает трещать и на экран выходит законное меню с привязками. Это что, две фитчи вступили в противоречие?
Vova вне форума  
 
Непрочитано 03.03.2006, 06:42
#73
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Попробуйте так:
Нажатие:
Код:
[Выделить все]
(setq lay (getvar "clayer"));(setvar "clayer" "Размерные")
Отпускание:
Код:
[Выделить все]
(setvar "clayer" lay);(setq lay nil);
Так как все реализовано функциями лиспа, есть возможность запускать их ПРОЗРАЧНО! ^С^С - здесь не надо.
Порядок действий:
Вводим команду, например vov-ин сплайн; жмем shift+1; указываем на экране две точки; теперь можно отпустить shift+1 и слой поменяется назад, а сплайн дальше будет чертиться в слое "Размерные"; указываем остальные точки; жмем правую кнопку сколько угодно раз; если хотим привязки жмем с ctrl. У меня все зашибись, команды можно вводить хоть с комстроки, хоть с кнопок, хоть с тулпалета - все работает.
Единственный минус - слои должны быть заранее определены в чертеже. Но так как я не гуру, пользуюсь шаблонами и все моё всегда со мной.
Krieger вне форума  
 
Непрочитано 03.03.2006, 06:49
#74
Profan


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


Для Vova
Вот выдержка из русского "Руководства по адаптации":

Для создания клавиши временной замены

1 Щелкните меню "Сервис" -> "Адаптация" -> "Интерфейс".
2 На вкладке "Адаптация" диалогового окна "Настройка интерфейса
пользователя" нажмите знак (+) рядом со списком "Горячие клавиши", чтобы
развернуть этот список.
3 На панели "Адаптации в <имя файла> щелкните правой кнопкой мыши
"Клавиши временной замены". Щелкните "Создать" -> "Временно заменить".
Новая временная замена (с именем "Временная замена1") будет размещено в
нижней части дерева "Клавиши временной замены".
4 Выполнить одно из следующих действий:
¦ Введите новое имя вместо текста "Временное изменение1".
¦ Щелкните правой кнопкой мыши надпись "Временное изменение1". Выбрать
"Переименовать". Введите новое имя временной замены.
5 Выберите в области структуры новую временную замену и обновите панель
"Свойства":
¦ В поле "Пояснение" введите описание временной замены.
¦ В поле "Макрос 1 (нажатие клавиши)" введите макрос, который будет
выполнен при нажатии клавиши временной замены. Если никакое значение
не назначено, макрос по умолчанию будет c^c^.
¦ Чтобы открыть диалоговое окно "Сочетания клавиш", в поле "Клавиши"
нажмите кнопку [...]. В диалоговом окне "Сочетания клавиш" в поле
"Нажмите новую комбинацию быстрого вызова" нажмите клавишу.
Разрешенные модифицирующие клавиши включают функциональную
клавишу (клавиши Fn) без модификаторов, SHIFT+буква, SHIFT+цифра
или SHIFT+функциональная клавиша.
¦ В полях "Нажмите новую комбинацию быстрого вызова" и "Назначена для:"
отображаются текущие назначения для клавиши. Если выбранная клавиша
еще не назначена, щелкните "Назначить", затем щелкните OK.
¦ В поле "Макрос 2 (отпускание клавиши)" введите макрос, который будет
выполнен, если отпустить клавишу временной замены. Если значение не
определено, то при отпускании клавиш приложение возвращается в
предыдущее состояние (до выполнения временной замены).

Для изменения клавиши временной замены

1 Щелкните меню "Сервис" -> "Адаптация" -> "Интерфейс
2 На вкладке "Адаптация" диалогового окна "Настройка инте
пользователя" нажмите знак (+) рядом со списком "Горячие
развернуть этот список.
3 В панели "Адаптации в <имя файла>" щелкните клавишу вр
которую нужно изменить.
4 Внесите необходимые обновления в панель "Свойства":
¦ В поле "Пояснение" введите описание временной замены
¦ В поле "Макрос 1 (нажатие клавиши)" введите макрос, к
выполнен при нажатии клавиши временной замены. Если
не назначено, макрос по умолчанию будет c^c^.

Должен сказать, что меня данный прием работы (хоть я и преимущественно кнопочник) не прельщает. Неудобно. Лучше было бы, на мой взгляд, реализовать данную возможность с помощью одной из кнопок многокнопочной мыши. И вообще, я не уверен, что скорость работы сколько-нибудь существенно увеличится. Углубляться дальше в эту проблему нет желания.
Profan вне форума  
 
Непрочитано 03.03.2006, 07:05
#75
Profan


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


Честно говоря, меня больше устраивает возможность назначать слой (и другие свойства) для команд отрисовки так, как это реализовано в палитре инструментов.
Profan вне форума  
 
Непрочитано 03.03.2006, 07:29
#76
Михаил74

инженер-строитель
 
Регистрация: 04.12.2005
Нижневартовск
Сообщений: 48


[Есть еще одно необычное для автокада ограничение для назначения горячих клавиш. Но я оставляю это как загадку. Кто возится с этим делом, должен обязательно наткнуться и задaться вопросом-почему комбинации не создаются?]

Почему не вводится комбинация клавиш Ctrl+F10, например с F9 F11 F12 все в норме, а F10 не пишет?
Михаил74 вне форума  
 
Непрочитано 03.03.2006, 07:39
#77
Profan


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


Для Krieger
Вот тут я логику не вижу. Если слой переключается прозрачно, то возможна следующая ситуация:
Допустим, я начал рисовать отрезок. Указал первую точку, переключил слой и указал вторую точку. И что получится? Вот проверить сейчас не могу, дома нет установленного AutoCAD 2006, а на работе мы сегодня переезжаем.
Profan вне форума  
 
Непрочитано 03.03.2006, 07:40
#78
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


По-моему, болше напрягает, что при назначении сочетаний клавишам временной замены вообще ctrl, alt и комбинации с ними не работают, только shift.
Krieger вне форума  
 
Непрочитано 03.03.2006, 07:42
#79
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Profan
Для Krieger
Вот тут я логику не вижу. Если слой переключается прозрачно, то возможна следующая ситуация:
Допустим, я начал рисовать отрезок. Указал первую точку, переключил слой и указал вторую точку. И что получится? Вот проверить сейчас не могу, дома нет установленного AutoCAD 2006, а на работе мы сегодня переезжаем.
Надо клавиши жать после ввода команды, но перед указкой первой точки. Вот и все.
Krieger вне форума  
 
Непрочитано 03.03.2006, 08:03
#80
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Можно еще так сделать:
назначить сочетанию макрос:
Код:
[Выделить все]
^C^C(setq lay (getvar "clayer"));_-layer;_m;Размерные;;(setvar "clayer" lay);(setq lay nil);_laymch;_L;;_T;Размерные;
Нарисовали отрезок, нажали сочетание (например ctrl+shift+1) и последний объект (то есть отрезок) отправляется в слой "Размерные". Причем это реализовать можно в любой версии автокада.
Krieger вне форума  
 
Автор темы   Непрочитано 04.03.2006, 04:35
#81
Vova

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


Вариант Krieger (№73) работает превосходно. Хотел было подитожить, но остались несколько вопросов.
1. В выписке из HELP, приведенной Profan-ом читаем последние строки пункта 5:
Цитата:
В поле "Макрос 2 (отпускание клавиши)" введите макрос, который будет
выполнен, если отпустить клавишу временной замены. Если значение не определено, то при отпускании клавиш приложение возвращается в предыдущее состояние (до выполнения временной замены)
. По английски звучит также. Я понимаю так, что второй макрос как-бы в нашем случае не нужен. Но увы, без него не работает. Почему?
2. Если в Options, System включить Beep on Error... то при входе и выходе из режима временного действия прижатых клавишей автокад бипает, если макрос на лиспе, и молчит, если лиспа в нем нет.
3 Осталась нерешенной моя загадка (№72 п4). А к ней добавка - Вариант AY на DIESEL (№71). Там есть нечто, очень важное. (сам макрос я проверить на работе не успел, но углядел нечто неожиданное) Что это?
Vova вне форума  
 
Непрочитано 04.03.2006, 20:11
#82
Aragorn

Продажа навыков и умений
 
Регистрация: 20.11.2004
Сибирь
Сообщений: 2,501


Не в продолжение а в начало темы, так как я клавишник

defun c:d1 () (dimchange "ARKO_TICK") (command "dimlinear" pause pause pause) (command "chprop" (entlast) "" "layer" "000" "" ) (princ))
(defun c:d5 () (dimchange "ARKO_TICK-50") (command "dimlinear" pause pause pause) (command "chprop" (entlast) "" "layer" "000" "" ) (princ))
(defun c:d2 () (dimchange "ARKO_TICK-20") (command "dimlinear" pause pause pause) (command "chprop" (entlast) "" "layer" "000" "" ) (princ))
(defun c:dd () (dimchange "ARKO_TICK-10") (command "dimlinear" pause pause pause) (command "chprop" (entlast) "" "layer" "000" "" ) (princ))
(defun c:d55 () (dimchange "ARKO_TICK-5") (command "dimlinear" pause pause pause) (command "chprop" (entlast) "" "layer" "000" "" ) (princ))

В автозагрузке у меня находится файл, в котором уже есть все блоки и стили. Разные размерные стили у меня разным цветом (при помощи этого удается избежать частой ошибки неправильного размера в узлах разного масштаба). Может кому подойдет...
Aragorn вне форума  
 
Непрочитано 06.03.2006, 10:04
#83
X-DeViL

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


Krieger

А как сделать так чтобы в этом макросе слой был не жеско прописан, а к "Слой1" прибавлялось просто "_Размеры"?
X-DeViL вне форума  
 
Непрочитано 06.03.2006, 11:14
#84
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


X-DeViL
Не знаю, у меню не получилось. Дело в том, что опять таки надо создавть этот слой (что в прозрачном режиме не работает), отчего я собсно и ушел. Но в варианте из поста №80, можно:

Код:
[Выделить все]
(setq lay (getvar "clayer") Nlay (strcat lay "_размеры")) (vl-cmdf "_-layer" "_m" Nlay "") (setvar "clayer" lay);(setq lay nil);_change;_L;;_Properties;_LAyer;!Nlay;;(setq Nlay nil)
Krieger вне форума  
 
Автор темы   Непрочитано 06.03.2006, 13:30
#85
Vova

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


Цитата:
Сообщение от Vova
4. Есть еще одно необычное для автокада ограничение для назначения горячих клавиш. Но я оставляю это как загадку. Кто возится с этим делом, должен обязательно наткнуться и задaться вопросом-почему комбинации не создаются?
Назначение клавишам нужно задавать только при нижнем регистре!
Цитата:
Сообщение от Vova
....А к ней добавка - Вариант AY на DIESEL (№71). Там есть нечто, очень важное. (сам макрос я проверить на работе не успел, но углядел нечто неожиданное) Что это?
Это кавычка, делающая работоспособным макрос без ^C^C. При этом макрос может быть и без лиспа.
Ай-Яй-Яй. Никаких предположений
Vova вне форума  
 
Непрочитано 06.03.2006, 14:20
#86
X-DeViL

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


Krieger
давай исходить из предположения что слой уже существует?

не надо создавать ничего

я просто не знаю как реализовать такое выражение clayer=clayer+"_Размеры"
X-DeViL вне форума  
 
Непрочитано 07.03.2006, 05:56
#87
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от X-DeViL
Krieger
давай исходить из предположения что слой уже существует?

не надо создавать ничего

я просто не знаю как реализовать такое выражение clayer=clayer+"_Размеры"
Тогда так:
Нажатие:
Код:
[Выделить все]
(setq lay (getvar "clayer") Nlay (strcat lay "_размеры"));(setvar "clayer" Nlay);
Отпускание:
Код:
[Выделить все]
(setvar "clayer" lay);(setq lay nil Nlay nil);
Krieger вне форума  
 
Непрочитано 07.03.2006, 08:51
#88
Profan


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


Я не пойму, зачем вам прозрачный режим? Этот режим был бы хорош без клавиш временной замены, а в данном-то случае - ведь не будете же вы действительно первую выносную линию делать на одном слое, а вторую на другом слое? Или это чисто теоретический интерес? Vova сетует, что предложений мало, а я вот увидел, что этот способ для меня мало пригоден и мало интересен, и перестал дальше разбираться. По-моему, не для этого эта возможность создавалась, а только для тех случаев, когда не нарушается логика выполнения команды.
Profan вне форума  
 
Непрочитано 07.03.2006, 10:44
#89
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Profan
Я не пойму, зачем вам прозрачный режим?
Все же прозрачный лучше чем непрозрачный с ^C^C. :wink:
Цитата:
Этот режим был бы хорош без клавиш временной замены, а в данном-то случае - ведь не будете же вы действительно первую выносную линию делать на одном слое, а вторую на другом слое?
См. пост №80, 81.
Да это все как посмотреть, если размеров предстоит ставить много то лучше конечно переключить слой на необходимый. А если один-два, то почему бы и нет? Еще более интересна идея X-DeViL (пост 87), чертим стены в текущем слоем "стены", надо поставить размеры - зажимаем клавиши и ставим размеры в слое "стены_размеры" и т.д. с любым объектом.
Цитата:
По-моему, не для этого эта возможность создавалась, а только для тех случаев, когда не нарушается логика выполнения команды.
А вчем нарушение логики-то?
Цитата:
Или это чисто теоретический интерес?
Для меня скорее спортивный. Может и пригодится, когда перейду на 2006-й. :wink:
Krieger вне форума  
 
Непрочитано 07.03.2006, 11:23
#90
X-DeViL

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


Krieger

[sm166]

ШАМАН! то что надо теперь буду "как великий нехочуха"
X-DeViL вне форума  
 
Непрочитано 07.03.2006, 15:47
#91
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
давай исходить из предположения что слой уже существует?
не надо создавать ничего
я просто не знаю как реализовать такое выражение clayer=clayer+"_Размеры"
У меня получилось создавать слой, устанавливать, если надо, цвет, вес, тип линии и т.д. Правда будет лисп. Необходимо сохранить как lsp файл и обеспечить подгрузку в рисунок, хотябы через _appload -> автозагрузка.
Сам лисп.
Код:
[Выделить все]
;|==============================================
* Ф-ция установки текущим слоя
* Нажатие temporary override keys
* список параметров layer-list см ниже
* Примеры:
  (dwgru-layer-set '(("name" . "Test")("color" . 1)("lw" . 50)))
* создать если нет и установить текущим слой Test цветом 1 (красный) весом линии 0.5
  (dwgru-layer-set '(("suff" . "_Текст")))
* создать если нет и установить текущим слой Текущий + суффикс _Текст

==============================================|;
(defun dwgru-layer-set (layer-list)
 (if (and (cdr(assoc "suff" layer-list))   ;_Есть суффикс
       (wcmatch (getvar "CLAYER") (strcat "*" (cdr(assoc "suff" layer-list)))))
       ;_Суффикс текущего слоя и переданного совпадают
       ;_суффикс к слою не добавляем
       (progn
        (setq layer-list (vl-remove (assoc "name" layer-list) layer-list))
        (setq layer-list (vl-remove (assoc "suff" layer-list) layer-list))
        (setq layer-list (append (list(cons "name" (getvar "clayer"))) layer-list))
	))
     (vla-put-activelayer
       (vla-get-activedocument (vlax-get-acad-object))
       (_dwgru-layer-create layer-list)))


;|==============================================
*  Ф-ция восстановления предыдущего слоя
*  Отпускание temporary override keys
=============================================|;
(defun dwgru-layer-restore ( )
(if *vlr-settings*
       (progn
	 (vla-put-activelayer
	   (vla-get-activedocument (vlax-get-acad-object))
	   (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)
	 )))


;|==============================================
*   На основе ф-ции _kpblc-layer-create
*   
*   Добавлен новый  параметр  suff - суффикс слоя, если он есть, то имя слоя получаестся путем
*   добавления к имени существующего слоя суффикса suff
*   Создание слоя с указанными параметрами.
*   Параметры вызова:
*   layer-list   список параметров слоя вида:
   '(("name" . "TestLayer")   ; имя слоя. может быть пропущено, если указан suff
     ("color" . 3)         ; номер цвета. nil -> 7
     ("lw" . 50)         ; вес линии слоя. nil -> 25
                            ;значение должно быть как в списке * 100
     ("lt" . "hidden")      ; тип линии слоя. nil -> Continuous
               ; Если описания типа линии в acadiso.lin
               ; нет, обязательно указывать следующий
               ; параметр
   ("ltfile" . "c:\\cad\\ltypes\\lt.lin")   ; полный путь к файлу с описанием
               ; типа линии. Если файл находится в путях
               ; поддержки, путь можно не указывать
   ("plot" . "y")         ; Печатать ("y") или нет ("n") слой.
               ; nil -> "y"
   ("suff" . "_Размеры")  ;_Добавляемый суффикс с текущему слою. Если задан, поле "name" игнорируется            
   )
*    Возвращает vla-указатель на созданный слой. Если слой существует, его
* настройки приводятся в соответствие с переданным списком.
*    Слой размораживается, разблокируется и включается. Не активируется.
==============================================|;

(defun _dwgru-layer-create (layer-list / vla_layer)
       (setq *vlr-settings*
	    (list (cons	"layer"
			(vla-get-activelayer (vla-get-activedocument (vlax-get-acad-object)))
			) ;_ end of cons
		  (cons "color" (getvar "cecolor"))
		  (cons "lw" (getvar "celweight"))
		  (cons "lt" (getvar "celtype"))
		  ) ;_ end of list
	   ) ;_ end of setq

  ;;;Если есть suff добавляем в начало списка,
  ;;;чтобы assoc нашел раньше
  (if (cdr(assoc "suff" layer-list))
    (progn
     (setq layer-list (vl-remove (assoc "name" layer-list) layer-list))
     (setq layer-list (append (list(cons "name" (strcat (getvar "clayer") (cdr(assoc "suff" layer-list))))) layer-list))
    )
  )
  (setq	vla_layer
	 (vla-add
	   (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
	   (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 (vla-get-activedocument (vlax-get-acad-object)))
		  vla_layer
		  ) ;_ end of equal
	   ) ;_ end of not
    (vla-put-freeze vla_layer :vlax-false)
    ) ;_ end of if
  vla_layer
  ) ;_ end of defun
Макросы
Нажатие
Код:
[Выделить все]
 (dwgru-layer-set '(("suff" . "_Размеры")("color" . 5)))
Отпуск
Код:
[Выделить все]
 (dwgru-layer-restore)
Примеры:
(dwgru-layer-set '(("suff" . "_Размеры")("color" . 5))) - добавить суффикс _Размеры к текущему слою (если его нет), установить цвет 5 и сделать слой текущим
(dwgru-layer-set '(("name" . "Test")("color" . 1)("lw" . 80))) Создать если нет слой Test цветом 1 и весом 0.8

Анализируется имя текущего слоя и если у него такой же суффикс, то слой не создается, а остается текущий. Таким образом не будут получаться слои Стена_Размеры, Стена_Размеры_Размеры и т.д.

PS. Почему-то изменяется имя ф-ции (vla-put-0000) то код брать отсюда
[ATTACH]1141736834.rar[/ATTACH]

Последний раз редактировалось VVA, 19.09.2015 в 20:34.
VVA вне форума  
 
Непрочитано 07.03.2006, 15:58
#92
Кулик Алексей aka kpblc
Moderator

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


Можно в принципе и еще немного добавить - сделать так, чтобы этот лисп прописался в автозагрузку. Если такое надо, то примерный код я показал (с объяснениями) вот здесь. Мне, если честно, просто лень повторять...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.03.2006, 17:18
#93
Profan


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


Для Krieger
Я вот вижу кое-какой смысл в клавишах замены при выполнении одной команды. Но ведь у вас получается так: выполняется одна команда, потом другая (рисую стены, потом ставлю размеры). Вот было интереснее: рисую стены, зажимаю клавиши, слой заменился, команда заменилась, ставлю размеры, отпускаю клавиши, слой вернулся, команда вернулась, продолжаю рисовать стены. Это, конечно чепуха, но на AutoLisp'e можно провернуть. Да все написанные тут вещи можно реализовать на AutoLisp'е. Ну, будет дополнительная кнопка, зато зажимать ничего не надо. А если во время зажима ошибся и надо Esc нажать? А уж с помощью палитры инструментов и кнопок не надо, да и Esc классно срабатывает, команда отменяется, но слой-таки возвращается на исходный, и никакого обработчика ошибок и переназначения переменных не надо, как в лиспе. А ведь надо еще придумать и удобное сочетание клавиш. А у многих сочетания клавиш забиты по самое некуда и даже Shift+1, которое я предложил для пробы, тоже бывает занято.
Profan вне форума  
 
Непрочитано 07.03.2006, 17:39
#94
X-DeViL

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


А сослаться на lisp хранящийся в CUI можно?
X-DeViL вне форума  
 
Непрочитано 07.03.2006, 17:55
#95
Profan


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


Вот политику Vova я понимаю. Он последовательно и целеустремленно пропагандирует изучение новых возможностей AutoCAD'а, находит тонкости, заставляет других шевелить мозгами. Это очень хорошее устремление. Он задает вопросы и ждет, как другие пользователи ответят на них. Я так думаю, что с временным переключением слоя все более или менее понятно, только лучше, все-таки, создать нужный слой заранее. Но вот проблема: мне надо бы не только проставить размеры стен, т.е. иметь слой "Стены_размеры", но и проставить цепочку размеров между перегородками, т.е. по логике вещей иметь или создать слой "Перегородки_размеры". Создавать другое сочетание клавиш для временной замены? И т.п. Вряд-ли, ерунда получается. Лучше я буду аккуратно работать со слоями, потому что мне еще нужен слой "Осевые_размеры", но он у меня автоматически создается при установке рабочих параметров рисунка.
Так вот, для того, чтобы в полной мене оценить возможность использования клавиш временной замены мне и хочется тоже задать вопрос: а в каких еще случаях, кроме замены слоя, можно применить клавиши временной замены? Опять же, по логике вещей можно временно заменить тип линии. Но если он задан по слою, то и не надо. Так же с другими изменяемыми свойствами. Так что же, вся эта матата годится только для одной операции - изменения текущего слоя? Мелковато, IMHO, чтобы извращаться.
Profan вне форума  
 
Непрочитано 07.03.2006, 18:00
#96
Profan


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


Для X-DeViL
А разве в CUI ХРАНЯТСЯ лиспы? Они могут, конечно, присуствовать в виде макросов меню, но ведь не для самостоятельной загрузки. Вот в acad.mnl они могут находится для загрузки.
Profan вне форума  
 
Непрочитано 07.03.2006, 18:51
#97
Profan


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


А кто-нибудь пробовал во время отрисовки полилинии при нажатых клавишах Shift+1 воспользоваться контекстным меню по правой кнопке мыши? Вот уж хрень бесподобная.
Profan вне форума  
 
Непрочитано 07.03.2006, 20:06
#98
Profan


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


А хрень эта проявляется в том, что сочетание клавиш "Shift+правая кнопка мыши" вызывает контекстное меню временного переопределения объектных привязок. А мне надо начать полилинию с дуги или задать ширину полилинии после указания начальной точки. И что, бросать мышь и правой рукой вводить с клавиатуры опцию, а потом еще, допустим, надо ввести ширину, равную 0.5. Тут забудешь, что надо давить на клавиши еще и левой рукой. Придираюсь, наверное.
Profan вне форума  
 
Автор темы   Непрочитано 08.03.2006, 05:31
#99
Vova

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


Отвечая на №95-Profan
Именно для изучения неизвестных возможностей АС я и поднял эту тему. Несколько выдвинувшись в изучении некоторых разделов и в силу дурацкого склада характера хочу подтянуть до этого уровня других. Для этого-же создаются темы-загадки. Иногда бьют, и больно. Старожилы помнят, как в теме про наложение V-ports один известный в мире автокада спец походя ударил, не пожелав извиниться. Призываю всех к исследованию автокада. Это безумно интересно. Именно на исследовани повышается уровень владения Кадом.
Vova вне форума  
 
Автор темы   Непрочитано 08.03.2006, 06:05
#100
Vova

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


Система временных клавиш работает не всегда четко. По протоколу F2 не очень понятно, что происходит (в отличие от работы с кнопочными макросами). Иногда сбоит при отпускании клавиш. В ком строке вдруг появляется буква той клавиши, которая в паре с Shift. Много непоняток. Видимо, это начало эксперимента Autodesk-a. Вроде как Tool Palettes. Младенец в 2004 и муж в 2006. Profan поначалу сомневался в нужности такой примочки. Вспоминаю старый спор-когда лучше образмеривать, когда все нарисовано, или по ходу рисования. Большинство (не подавляющее) ставит размеры по ходу. То есть работают (условно) по-очереди в 2-х слоях-то в рисуночном, то в размерном. И не только это касается размеров. Электрики могут рисовать параллельно две системы-нормальное питание и резервное. Технологи могут рисовать существующее оборудование и новое, и так далее. То есть, если текущим установлен слой, в котором объектов больше, то, прижав пару клавиш и получив временно текущим другой слой, удобно в нем нарисовать что-то мелкое. Я уже неск. дней рисую 3 параллельные системы при помощи временных клавиш
Таком образом, Autodesk в 2005 сделал подарок кнопочникам, позволив из Tool Palettes забирать команды рисования с нужными параметрами (например, слой). А в 2006 похожий, хотя и не совершенный подарок получили клавишники. Это Temporary Override keys. Паритет сохранился. . Уверен, это направление будет развиваться. Наш мозговой штурм удался. X-DeViL подал идею. Profan дал первый работающий код. Krieger убрал ^C^C, которое мешало. AY предложил кавычку, заменяющую ^C^C а Vova нашел, что клавиши назначаются только при низшем регистре. Все это маленькие открытия, не указанные в HELP. Будут ли еще предложения по мозговой атаке:?:
ЗЫ. AY, как ты раскопал про кавычку?
Vova вне форума  
 
Непрочитано 08.03.2006, 08:06
#101
Profan


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


Вариант AY я как-то прозевал. Вот сейчас попробовал. Работает, но как-то иногда неоднозачно. Почему-то текущим оставался слой "Размеры". И вот еще какая штука. Нажимать клавиши надо в такой последовательности: сначала Shift, потом 1. Это легко. А вот отпускать? Иногда одновременно отпустить две клавиши не получается. Shift отпускается (у меня) чуть-чуть раньше. В результате при отрисовке того же сплайна в командной строке зависает единица и не дает продолжить отрисовку сплайна. Значит, надо стараться отпускать клавиши в такой последовательности: сначала 1, потом Shift. Подобные тонкости, конечно, затрудняют применение клавиш временной замены, IMHO.
Profan вне форума  
 
Непрочитано 08.03.2006, 08:32
#102
Profan


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


Хочется сказать несколько слов о CUI. Еще год назад, когда AutoCAD 2006 только появился, отношение к CUI у меня, как и у многих, было отрицательное. И это неудивительно. Литературы еще никакой не было, а вникнуть в тему с помощью английской Справки было затруднительно. Но потом я получил доступ к русской версии и отношение к CUI стало меняться в лучшую сторону. Я тоже искал всякие XML редакторы, но теперь пришел к выводу, что средства редактирования CUI, предоставляемые самим AutoCAD'ом - самые удобные. Оказалось, что CUI - это тоже целый мир. Вот и возможность назначения клавиш временной замены подтверждает это. Но есть там еще одна возможность - возможность редактирования контекстного меню. И очень мне захотелось переключать слой не с помощью клавиш временной замены, а с помощью контекстного меню. Пока получилось вставить пункт "Замена слоя" в контекстное меню команд. И макрос там простейший:
'_.clayer;Размеры;
Ясно, что слой "Размеры" должен быть создан заранее. Но вот для команды "_dimlinear" (рзмлинейный) контекстное меню не предусмотрено. Пришлось в настройках задать вывод контекстного меню в любом случае. После ввода команды _dimlinear в контекстном меню можно выбрать пункт "Замена слоя" и размеры уже будут отрисовываться на своем слое. Проблема в том, как вернуть предыдущий слой по завершении команды образмеривания. Еще проблема - как создать свое контекстное меню именно для команды _dimlinear.
Profan вне форума  
 
Непрочитано 09.03.2006, 09:53
#103
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
ЗЫ. AY, как ты раскопал про кавычку?
Из Helpa
Цитата:
Выполнение команды или изменение значения системной переменной в ходе действия другой команды
Многие команды вызываются прозрачно, т.е. в ходе выполнения другой команды. Прозрачные команды, например, СЕТКА или МАСШТАБ, часто изменяют параметры рисунка или параметры отображения. Прозрачные команды можно запускать с помощью кнопок этих команд на панелях или вводить в ответ на любую из подсказок программы, предваряя их имена символом апострофа.

Прозрачные команды можно запускать с помощью кнопок этих команд на панелях или вводить в ответ на любую из подсказок программы, предваряя их имена символом апострофа. В командной строке перед подсказками, которые отображаются для прозрачных команд, отображаются двойные угловые скобки (>>). После завершения прозрачной команды возобновляется работа исходной. Например, для включения сетки с интервалом в 1 единицу в ходе рисования отрезка нужно ввести:

Команда: отрезок

Первая точка: 'сетка

>>Интервал сетки (X) или [Вкл/Откл/Шаг/Аспект] <0.000>: 1

Возобновляется команда ОТРЕЗОК

Первая точка:

'сетка В прозрачном режиме можно открывать некоторые из диалоговых окон, но произведенные с их помощью изменения не вступят в действие до завершения приостановленной команды. При выполнении некоторых команд изменяются значения системных переменных; если системную переменную изменить в прозрачном режиме, ее новое значение проявляется только в следующей команде.
VVA вне форума  
 
Непрочитано 09.03.2006, 10:21
#104
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Еще проблема - как создать свое контекстное меню именно для команды _dimlinear.
Теория (Help)
Цитата:
Контекстные меню отображаются в месте расположения курсора при нажатии правой кнопки указывающего устройства. Набор предлагаемых функций зависит от того, в какой области экрана находится курсор, а также от других факторов (наличие выбранного объекта, выполняемая команда и т.п.). Для отображения контекстных меню можно также использовать сценарии.
В контекстно-зависимых меню при нажатии правой кнопки мыши отображаются параметры, относящиеся к текущей команде или выбранному объекту.
Псевдонимы контекстных меню
Для ссылок на контекстные меню, используемые в текущей ситуации, используются псевдонимы. Для псевдонимов в диалоговом окне "Настройка интерфейса пользователя" должны строго соблюдаться соглашения по именованию. Например, для контекстного меню "Меню по умолчанию" в разделе "Псевдонимы" панели "Свойства" отображается следующая информация:
POP501, CMDEFAULT
Для контекстного меню "Объектная привязка" должен быть назначен псевдоним POP0. Псевдонимы для контекстно-зависимых меню должны иметь номера от POP500 до POP999. Следующие псевдонимы зарезервированы для внутреннего использования в программе:
Псевдонимы в программе для контекстных меню
Псевдоним Описание
GRIPS Определяет контекстное меню выделенной ручки (щелкните правой кнопки в области рисования при выборе ручки на объекте).
CMDEFAULT Определяет контекстное меню режима по умолчанию (щелкните правой кнопкой мыши в области рисования, если не активна ни одна команда и не выбран ни один объект).
CMEDIT Определяет контекстное меню режима редактирования (щелкните правой кнопкой мыши в области рисования, если не активна ни одна команда, не выбран ни один объект и ни одна ручка).
Команды Определяет контекстное меню командного режима (щелкните правой кнопкой мыши в области рисования, если команда активна). МЕНЮЗАГР
ШАГ Определяет меню объектной привязки (нажмите клавишу SHIFT и щелкните правой кнопкой мыши в области рисования).

Создание контекстных меню Помимо содержимого меню CMEDIT при выборе одного или нескольких указанных типов объектов в меню добавляется меню соответствующего объекта (свое для каждого типа). Для объектов меню используется одно из следующих соглашений по именованию: OBJECT_имя
OBJECTS_имя
Если выбран один объект определенного типа, используется меню OBJECT_имя, если несколько объектов - меню OBJECTS_имя. Если меню OBJECT_имя недоступно, программа использует меню OBJECTS_имя (если оно существует).
Имя объекта - это имя объекта в формате (DXF™) во всех случаях, за исключением вставки объекта. GRIPS Контекстное меню ручек (вызывается щелчком правой кнопки в области рисования, если имеется выбранная ручка).
Например, для поддержки команды контекстного меню для объектов одного или нескольких выбранных вхождений блоков на вкладку "Адаптация" панели "Свойства" диалогового окна "Настройка интерфейса пользователя" необходимо добавить следующие свойства.
Свойства для контекстного меню объектов блоков
Элемент панели свойств Запись
Имя Mеню объектов блоков
Описание Контекстное меню объектов блоков
Псевдоним POP512,OBJECTS_BLOCKREF
Код элемента ID_BLOCK [Explode]
Как и меню CMEDIT, меню CMCOMMAND может содержать контекстную информацию. Меню с именем COMMAND_имя добавляется к меню CMCOMMAND. Текст имя_команды может принадлежать любой команде AutoCAD, в том числе любой пользовательской или команды стороннего приложения.
Для многих команд доступ к интерфейсу командной строки осуществляется путем ввода дефиса перед именем команды для предотвращения отображения диалогового окна и запросов в командной строке. Для создания контекстно-зависимых меню, выводящих подсказки в командной строке (например, ?ВСТАВИТЬ) контекстному меню необходимо присвоить имя КОМАНДА_?ВСТАВИТЬ.
VVA вне форума  
 
Непрочитано 09.03.2006, 10:53
#105
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Для создания контекстного меню

1. Щелкните меню "Сервис" "Адаптация" "Интерфейс".
2. В диалоговом окне "Настройка интерфейса пользователя" перейдите на вкладку "Адаптация". В панели "Адаптации в <имя файла>" правой кнопкой мыши щелкните на "Контекстные меню". Щелкните "Создать" -> "Контекстное меню".
Новое контекстное меню (под именем "КонтекстноеМеню1") будет помещено в нижней части дерева меню.

3. Выполнить одно из следующих действий:
-> Введите новое имя вместо текста "КонтекстноеМеню1".
-> Щелкните правой кнопкой мыши надпись "КонтекстноеМеню1". Выбрать "Переименовать". Введите новое имя контекстного меню.
4. В палитре "Свойства" выполните следующие действия.
-> В поле "Пояснение" введите текстовое пояснение для контекстного меню.
-> В поле "Псевдонимы" введите для этого меню дополнительный псевдоним. Автоматически присваивается псевдоним, по умолчанию соответствующий следующему доступному номеру POP согласно числу загруженных контекстных меню.
Здесь есть нюансы:
В поле "Псевдонемы" надо нажать на ..., откроется окно, где надо ввести построчно
POP519 (тот номер, который будет)
COMMAND_РЗМЛИНЕЙНЫЙ - для русского автокада
COMMAND_DIMLINEAR - для английского,
т.е. имя ЛОКАЛИЗОВАННОЙ команды

5. В панели "Список команд" перетащите команду, которую необходимо добавить, в положение строго под контекстным меню в панели "Адаптации в <имя файла>".
6. Таким же образом добавьте команды в список нового контекстного меню, пока он не заполнится.
7. Нажать "ОК".
[ATTACH]1141890829.jpg[/ATTACH]
VVA вне форума  
 
Непрочитано 09.03.2006, 12:36
#106
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


>Vova
Ну, собственно, догадаться о необходимости прозрачного ввода было не мудрено - если применять ^C^C команда прерывается, а временное переопределение должно выполняться, насколько я понимаю, именно при работающей комманде, иначе удерживание Shift+... производило бы ввод в альтернативном регистре. Кроме того, перед тем как писать свой вариант я посмотрел на то что уже прописано в меню и старался далать по аналогии, однако там ни где нет двух макрсов, что по началу несколько сбило с пути.

>Profan
Что касается нестабильности работы макроса - у меня тоже было такое ощущение, когда я его только прописал. Тогда я грешил на динамический ввод. Сегодня снова попробовал установленное сочетание и, вроде, нестабильности не заметил. Я думаю что перезапуск автокада поправил ситуацию учтывая отзывы о глюках в cui особенно в отсутствии sp. А что касается очередности отпускания клавиш, то у меня одновременное отпускание проблем не вызывает и все срабатывает.
AY вне форума  
 
Автор темы   Непрочитано 10.03.2006, 04:36
#107
Vova

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


Прижатая клавиша Shift (так-же как и F-восемь) выдает перемену Othо. При отпускании возврат в исходное. (Shift только в 2006, а F8 и в 2005) А теперь (в 2006) возьмите любую команду и, внимательно глядя на кнопочку Ortho внизу экрана, прижмите Shift. Чувствуете, что происходит? Для временного переопрделения надо жать Shift и еще что-то, пусть Shift+1. Смекаем, что задержка на Shift-е перевернет Ortho. (А нам это надо?) Наблюдаем за кнопкой дальше, прижимая 1. Кнопочка Ortho внизу экрана опять дернулась. А как отпускать? Не потому-ли автокад бипает, если бип включен, что у него мозги набекрень от этого?
Зы Админ, как написать цифрой F- восемь? то смайлик получается, то нормально
Vova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Попасть в слой.