Re: Как повесить на свою кнопку пунктирную линию?

Ок. в таком варианте надо смотреть на команду _.change. Но и тут есть подводный камешек - надо отследить, чтобы слой был создан предварительно. Иначе труба.
В общем, лисп в этом отношении предоставляет больше свободы ИМХО

Re: Как повесить на свою кнопку пунктирную линию?

> kpblc
Так слой уже есть. Если нет, так он создается автоматом строкой "^C^C_.layer;_make;Layer001;_ltype;lt;;_lweight;0.25;;_color;110;;_thaw;;_unlock;;;".
Вроде так? А LISP, конечно, предоставляет больше свободы. Но здесь специфика определенная. Желательно ограничится макросом. Дело в том что dverovoz делает это для "тетек". Понимаешь что я имею в виду? Поставил такие макросы на все машины и часть хлопот с себя снял. Короче, добавить бы такую опцию ( в смысле переброс обьекта в слой) и по моему мнению вопрос можно закрыть.

Re: Как повесить на свою кнопку пунктирную линию?

> Forma
Извиняюсь.В смысле вопрос не закрыть, а решить.

Re: Как повесить на свою кнопку пунктирную линию?

> Forma
у меня эта задача решена и достаточно давно - все элементы общего доступа лежат на серваке, меню копируется по локальным машинам, лиспы на серваке и все грузятся автоматом. Так что мне проще накатать лисп и его подсоединить в меню, чем пытаться работать по-другому. В макросах такого типа есть один момент, о котором сейчас никто не задумывается (а на котором я уже наколоться успел): сделали меню, близкие по функционалу (обращающиеся к одним и тем же слоям) макросы раскиданы по всему меню - например, рисование трасс в одном меню, вставка обозначений на этот слой - в другом, вставка блоков - в третьем. Проходит время, надо добавить кусок. Отследить, в какой кнопке идет обращение, достаточно тяжело было (количество макросов превысило 200 штук), файл огромный, копировать bmp-коллекцию на каждую из 30 машин долго и муторно, а копирование dll из-под када не выполняется, если к этой dll обращается меню. При этом меню может и не быть загружено. Т.е. проблема.
У каждого пользователя свои предпочтения по расположению дополнительных меню, некоторыми кнопками они не пользуются, так что их сносят. И если такое меню предоставить в общий доступ на серваке в режиме разрешения на запись, проблем и крику будет больше, чем решено задач. А если предоставить в режиме "только чтение", то тоже не решение. Ради интересу можно попробовать сделать свое меню, подгрузить его в кад (чтобы было скомпилировано) и на все файлы дать атрибут read-only. А потом выйти из када, зайти повторно и попробовать поменять положение панелек. Поменялось? Замечательно. А если выйти из када и зайти повторно? То-то...

Re: Как повесить на свою кнопку пунктирную линию?

А перенос объектов в определенный слой уж вроде как было такое... Если нет, тогда настройки слоев в студию и будет код. Работать будет всегда. И в том виде, какой нужен. В общем, ТЗ...

Re: Как повесить на свою кнопку пунктирную линию?

> kpblc
Понятно. Я так глубоко не копал. Думал что можно обойтись по самому минимуму. Ладно. Подождем, что, собствено, скажет dverovoz. Его же ветка. Где то нет его.

Re: Как повесить на свою кнопку пунктирную линию?

> kpblc
Было. Было. Как ты написал Т.З., так я сразу и вспомнил:)... Это уж пусть dverovoz заказывает:)

Re: Как повесить на свою кнопку пунктирную линию?

> kpblc
Похоже, что я опять на кодировке споткнулся (вечная моя проблема).
Правильная ссылка https://www.caduser.ru/forum/topic9651.html

Re: Как повесить на свою кнопку пунктирную линию?

> kpblc

^C^C_.-linetype;_load;lt;"d:\\cad\\lines.lin";;

что то не так, например не работает если D:\CAD\acadiso.lin
а lt=ACAD_ISO02W100

^C^C_.-linetype;_load;ACAD_ISO02W100;"d:\\cad\\acadiso.lin";;

пишет В каком файле проводить поиск <acadiso.lin>: "d:
что не так?

Re: Как повесить на свою кнопку пунктирную линию?

Запутали ерундовую проблему, так и растак.

Re: Как повесить на свою кнопку пунктирную линию?

> dverovoz
Долго придется разбираться. Я сегодня целый день периодически занимался. Не могу поймать зависимости с "Enter". Половина макроса отрабатывается, вторая половина нет.
Базируйтесь пока на этом:
^C^C^P_-layer;_M;2Канализация;_L;ACAD_ISO02W100;;;_pline;
Этот четко работает.

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
Ну так обьясните синтаксис. Гору литературы сегодня перелопатил. Нет ничего. Завтра, если будет время, пойду к американцам. Но мыслится мне, что только время потеряю. Вот не понимаю я, поставили бы какой- никакой интерпретатор BASIC проблем бы не было.

Re: Как повесить на свою кнопку пунктирную линию?

отработано и работает следующее:
1 да
2 грузим линию ACAD_ISO02W100 из acadiso.lin в набор.
^C^C_.-linetype;_load;1195;"acadiso.lin";;
не понял правда как написать конкретный путь к файлу?
3 дальше по образцу затык. вылезает окно со слоями как поправить?
Всем спасибо сорри что немогу регулярно посещать форум

Re: Как повесить на свою кнопку пунктирную линию?

В моем понимании задача, которая в конце концов определилась у dverovoz, выглядит так: открывается некий файл, надо нарисовать полилинию на слое "2Канализация" типом линии ACAD_ISO02W100, причем такого слоя нет и тип линии не установлен. Что получается в моем макросе? Если данного слоя нет, то он создается с нужным типом линии и сразу становится текущим. Если данный слой уже есть, то он становится текущим, причем, если в нем был задан другой тип линии, то он заменяется на ACAD_ISO02W100. Поскольку этот тип линии входит в состав файла acadiso.lin, то специально его загружать нет необходимости. Частная задача. Точно также можно написать макрос и для другого слоя с другим типом линии:

^C^C^P_-layer;_M;1Вода;_L;ACAD_ISO04W100;;;_pline;

и еще:

^C^C^P_-layer;_M;3Дорога;_L;ACAD_ISO06W100;;;_pline;

Точно также можно наделать кнопок и для других элементов топографии.
Далее делаем в адаптации новую панель с именем "Топография" в группе меню ACAD и перетаскиваем на нее наши кнопки.
Можно расписать фрагмент меню в текстовом представлении (для AutoCAD версии не выше 2005):

**TB_TOPO
[_Toolbar("Топография", _Floating, _Show, 588, 164, 1)]
[_Button("Вода", "voda.bmp", "voda.bmp")]^C^C^P_-layer;_M;1Вода;_L;ACAD_ISO04W100;;;_pline;
[_Button("Канализация", "kanal.bmp", "kanal.bmp")]^C^C^P_-layer;_M;2Канализация;_L;ACAD_ISO02W100;;;_pline;
[_Button("Дорога", "doroga.bmp", "doroga.bmp")]^C^C^P_-layer;_M;3Дорога;_L;ACAD_ISO06W100;;;_pline;

Типы линий могут быть другими, я взял наугад, главное, чтобы они были определены в файле acadiso.lin. Строки этого кода надо скопировать в файл acad.mns (сделав предварительно копию этого файла) и, желательно, в файл acad.mnu (также сделав предварительно копию). Вставить эти строки можно сразу после строки

***TOOLBARS

в указанных файлах. Естественно, делать это надо при выгруженном AutoCAD'е.

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
Это конференция. Я, наверно тоже могу задавать вопросы? Или нет?
Вопрос 1. Как ввести в макрос еще цвет и толщины линий. А то сейчас устанавливается defolt;
Вопрос 2 (частный). Почему Вы пишете три раза ;;; ?

Re: Как повесить на свою кнопку пунктирную линию?

> Forma
К вопросу 2.
Вариант того же макроса:

^C^C^P_-layer;_M;1Вода;_L;ACAD_ISO04W100;1Вода;;_pline;

Команда "_-layer" ("-слой") выполняется таким образом, что после ввода опции и ее значения надо ввести имя слоя. В нашем случае имя слоя уже было указано в опции "_Make" ("Создать") или сокращенно "_M". Поэтому указание имени слоя еще раз можно пропустить, оставив только ; (что соответствует нажатию клавиши Enter). Вот и получается, что первая ; вводит название типа линии, вторая ; подтверждает имя слоя, уже введенного ранее, а третья ; без опции заканчивает команду.
К вопросу 1.
Полный макрос выглядит так:

^C^C^P_-layer;_Make;1Вода;_Ltype;ACAD_ISO04W100;1Вода;_Color;2;1Вода;_LWeight;0.25;1Вода;;_pline;

Макрос можно упростить за счет применения сокращенных имен опций и отказа от повторного явного ввода имени слоя:

^C^C^P_-layer;_M;1Вода;_L;ACAD_ISO04W100;;_C;2;;_LW;0.25;;;_pline;

Re: Как повесить на свою кнопку пунктирную линию?

А теперь самое время вспомнить kpblc. Если в рисунке тип линии, цвет и вес линии были установленны не в "ByLayer" ("ПоСлою"), а явно, то все эти установки в слое будут проигнорированы.

Re: Как повесить на свою кнопку пунктирную линию?

В моем понимании задача, которая в конце концов определилась у dverovoz, выглядит так: открывается некий файл, надо нарисовать полилинию на слое "2Канализация" типом линии ACAD_ISO02W100, причем такого слоя нет и тип линии не установлен.

Я плакалъ.
Я открываю ЛЮБОЙ чертеж, тыкаю кнопом в TP и рисую линию (полилинию, дугу, круг и т.п.) на нужном слое, с нужной толщиной, цвета и т.д.... Я в гробу видал ваши макросы!
Вы хотите сказать, что тяжело перенести с компа на комп настройки TP? Что нельзя загружать TP c сервера? Или в чем проблема? Давайте обсудим ее.
Я понимаю когда TP не используются в САПР, заточеных под определенные цели, или хотя-бы в системе функций написанных на лиспе, там , возможно, надо большую гибкость. Но тут-то какой смысл? Я не понимаю.
ВАМ ДЕЛАТЬ НЕЧЕГО?

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
Обдумываю... Получается, что синтаксис у команд AutoCAD имеет разный т.с. алгоритм. И причем не строго иерархический. Похоже это тот камень на который я постоянно натыкался. Т.е без хорошего знания этого алгоритма конкретной команды макрос правильно не написать. Для команды "-layer" на одном и том же уровне и создать слой и ввести его параметры... Или это не параметры...
И связь в макросе между &P и ; непонятна.

> Apelsinov
Что такое "...тыкаю кнопом в TP..." ?

Re: Как повесить на свою кнопку пунктирную линию?

> Apelsinov
Не надо плакать и горевать. Все будет хорощо в Новом 2006 году. Все постепенно освоят Палитры инструментов. Не сразу Москва (или другой City) строилась. К тому же, по непроверенным слухам, в AutoCAD 2008 не будет Палитр инструментов, а AutoCAD'а 2010 вообще не будет, как такового...

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
"Я плакалъ." - это блоговский слоган. Что обозначает не помню.

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
К Вам еще один вопрос. Интимный. Вы как макросы для меню осваивали? На примерах? Должен же быть какой то дидактический метод. Хотя бы с чего начинали?

Re: Как повесить на свою кнопку пунктирную линию?

> Forma
Дидактический метод описан в книге В.Света (глава 3). У вас есть эта книга. Именно так и я начинал изучение и написание макросов меню. Только я не настолько углубился в макросы, как В.Свет, потому что меня больше захватил AutoLisp. Одним из необходимых условий для написания правильно действующих макросов меню я считаю хорошее знание команд AutoCAD'а и их опций. Для этого необходимо иметь литературу по AutoCAD'у и справочники команд. Определенную трудность могут испытывать те пользователи, которые работают с локализованными версиями. Ведь для того, чтобы макросы работали как в локализованной версии, так и в английской, желательно использовать английские названия команд и их опций, и записывать их с подчерком "_". Однако, в Справке локализованной версии описываются только русские эквиваленты команд и их опций. Поэтому и необходимы справочники команд, описывающие и английские команды и их русские эквиваленты. Смею думать, что мало кто из пользователей, изначально работающих в стандартной конфигурации русской версии AutoCAD'а, знают и английские команды. Значит их придется изучить. Но те же трудности ожидают пользователей русских версий и при написании программ на AutoLisp'е.
Вот и все, что я могу написать в данной теме по поводу макросов. Более подробное описание приемов составления макросов можно найти в других темах этого Форума, на других Форумах, и в литературе, в том числе и в книге "Язык макрокоманд и создание кнопок". Но если вы изначально настроены против автора и даже против названия его книги, то тут я вам ничем не могу помочь.

Re: Как повесить на свою кнопку пунктирную линию?

> Владимир Громов
Очень хорошо. Значит я на правильном пути. Это я относительно синтаксиса команд AutoCAD. Сейчас ищу в Internet это дело. У меня локализованая версия. Итальянская.
  Относительно книги Света и его самого у меня нет никакого предубеждения. Я просто отстал от жизни. Мне этот мир не знаком. Для меня это большая загадка. Я не понимаю логики этого мира. Но не больше.
  Кстати, книга выпущена в 2004 году. Вы что за 1.5 года освоили макросы на кнопках и LISP ?
  Если это так, тогда я видимо "включил тупого" еще в 1991 году и забыл выключить. Шучу, конечно.
  Не подскажете, где можно найти синтаксис команд AutoCAD. Желательно в виде справочника.