|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
На палитрах штатными средствами AutoCAD можно разместить строго определенные Flyout'ы. Для создания собственных надо капитально ломать голову и, по-моему, использовать как минимум dll, подгружаемые через _.netload или ObjectARX. И, по-моему, в "чистом" autoCAD'e далеко не каждому инструменту можно назначить "любую" кнопку.
Ты, по-моему, немного не договариваешь о группировке палитр. Кстати, все эти вопросы уже поднимались на форуме (по-моему, в теме по играм с CUI). --- По #96 : увы и ах, сейчас капитально не хватает времени на исправление. Может, кто из зубров подключится...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
|
|||
|
||||
Регистрация: 05.09.2008
Сообщений: 24
|
Цитата:
1) Если есть талант художника: рисуете квадрат в Автокаде, в этот квадрат вписываете свою картинку обычными примитивами автокада. 2) создаете из того, что вы вписали в квадрат, блок с характерным названием <название>, чтобы потом его найти. 3) сохраняете чертеж 4) перетаскиваете вхождение созданого вами блока на палитру. По успешному помещению этого блока на палитру автокад создает в папке ToolPallette\Pallettes\Images два рисунка в формате PNG с названиями <название>32.png и <название>64.png. Путь к ToolPallette можно посмотеть в Options на вкладке Files->Tool Pallettes File Location. 5)выделяте на tool pallette свой lisp, правым кликом вызываете контекстное меню, выбираете пункт Specify image.. - должен появиться стандартный диалог выбора файла с допустимыми расширениями gif,jpeg,bmp,png и открыться по умолчанию он должен именно в папке ToolPallette\Pallettes\Images. Указываете любую из созданных в п.4 картинок - и все: вместо стандартной картинки с листом бумаги со скобками и надписью LISP на нем появляется ваша иконка. В принципе, картинку можно подготовить в любом графическом редакторе, но так как вы владеете авткадом, проще нарисовать в нем. Блок нужен только для генерации картинки. С вылетающими кнопками я погорячился, похоже, в автокаде все два предустановленных флайоута - с командами рисования и с размерами. Я даже не знаю пока, есть ли возможность создать дополнительные. Я также думаю, что народ, который постился в теме "игры с CUI" знаем по-более моего, так что следите за новыми сообщениями там. Чтобы создать свой лисп на палитре, перетащите туда любой примитив типа линии, текста из риснунка, зайдете в свойства созданного инструмента (properties в контекстном меню по правому клику ), выставьте use flyout в No, а Command string - ваш лисп или макрос. Можно перетащить на палитру команду из диалога настройки CUI Последний раз редактировалось Красин, 20.09.2008 в 18:33. |
|||
|
||||
VVA, а можно дополнить лисп №25 еще 2 элементами:
Перенос _table в слой "Таблицы" Перенос _mleader в слой "_Выноски"?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
wetr, Обновил #25. С цветами слоев думаю сам разберешься
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
VVA, отлично все работает!!!
Но есть 2 момента. 1) Реактор не срабатывает при вставке таблицы с помощью лиспа "vrc.lsp" 2) Реактор не срабатывает при вставке таблицы с помощью _dataextraction
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
wetr, Реактор срабатывает на команду (например _table), а таблица в vrc вставляется с помощью vla-* методов. Реактор никоим способом ее не видит. Здесь нужно назначать слой таблицы в vrc.
Предлагаю использовать или ф-цибю Алексея _kpblc-layer-create из #47 или ее модификацию _dwgru-layer-create Отличия Цитата:
Тогда код из #25 может выглядеть так Важно Необходима ф-ция _dwgru-layer-create отсюда http://dwg.ru/f/showpost.php?p=93168&postcount=3 Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Дело в том, что функция Алексея не работает в 2009 каде. Ну или я ее не смог запустить. Поместил в автогагрузку, а при создании нового файла пишет
Код:
Твой код работает на ура. Я потому к тебе и обратился.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
wetr, Добавь в начало (vl-load-com) (лучше самой первой строкой автозагрузки (mnl или lsp файла)
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Цитата:
И в эту функцию _dwgru-layer-create, тоже добавить пришлось. Цитата:
А в чем отличия? Я заметил только, что реактор крыса создает слои только после выполнения команды, а твой сразу при загрузке нового файла
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) |
||||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Про реакторы не скажу, не смотрел.
_dwgru-layer-create отличается от ф-ции Алексея только Цитата:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.10.2008 в 17:56. |
|||
|
||||
Спасибо, VVA. Теперь я знаю для кого пишут коменты в лиспах
Вот здесь попробовал - все получилось. Добавил еще непечатаемый слой "_Вспомогательные" реагирует на простановку _xline. И добавил обработку команды _dataextraction. Все работает вроде. Тьфу-тьфу, штоб не сглазить В общем с меня пыво Код:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14) Последний раз редактировалось wetr, 09.10.2008 в 16:47. |
||||
|
||||
лайсенсед инжиниа Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158
|
VVA, у меня возникает следующая проблема... Код из поста 25 работает, но после завершения команды часто возвращается не на предыдущий слой, а на сохраненный по умолчанию текущим в шаблоне чертежа. Иногда вообще не возвращается. У меня стоит AutoCAD 2008 русский + СПДС. Может это в ней дело?
Прикладываю ролики... |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
gipro, Вполне возможно. У меня нет опыта эксплуатации #25. Скорее это нужно спросить у wetr (про возвращение слоя). Там все простою: при старте команды слой запоминается в переменной и устанавливается текущим, по окончании восстанавливается сохраненный.
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 11.10.2008 в 23:02. |
|||
|
||||
Светопрозрачные конструкции, проектирование Регистрация: 29.07.2008
Сообщений: 47
|
VVA, wetr: ну просто супер!
Однако есть одно несущественное неудобство. Допустим нужно открыть файл только чтобы просмотреть его содержимое не производя никаких действий. В этом случае при закрытии файла AutoCAD выдает запрос о сохранении изменений. А если таких файлов нужно открыть и закрыть несколько подряд (мне иногда приходится просматривать каталоги алюминиевых профилей в dwg-формате) - появляется много рутины. В связм с этим вопрос: нельзя ли создание слоя повесить не на открытие чертежа, а на ту или иную команду, как это сделано у kpblca в #47. Буду очень благодарен |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
andrew_ro, Вариант из #25 (вариант с функциями _dwgru-layer-create в коментариях, сама ф-ция по ссылке #108 или в #113)
Две команды: CRON - Command Reactor ON Включает командный реактор CROFF - Command Reactor OFF Отключает командный реактор. Можно в процессе работы приостанавливать разнос примитивов по слоям и снова включать Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 12.10.2008 в 15:38. Причина: орфография |
|||
|
||||
Светопрозрачные конструкции, проектирование Регистрация: 29.07.2008
Сообщений: 47
|
VVA, спасибо. Возможность откл/вкл реактор добавляет универсальность программе.
И еще я не пойму как задать суффикс имени слоя. Если я правильно понял, при открытии чертежа, в котором есть слой "Размеры", имя слоя изменится на "_Размеры" без создания нового слоя? Какую строку и в какое место в коде нужно добавить? Перепробовал несколько вариантов с учетом #112, но в результате: например, если говорить о нулевом слое, появляется слой с именем "0_Размеры". Что я делаю не так? |
|||
|
||||
Светопрозрачные конструкции, проектирование Регистрация: 29.07.2008
Сообщений: 47
|
VVA,
Цитата:
Цитата:
А хотелось бы из открытого чертежа отключать создание слоев во вновь открываемых файлах. P.S. Я извиняюсь за навязчивось, уж больно полезная программа и хочется отшлифовать ее. |
|||