|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.09.2006, 11:35 | #1 | |
Создание кнопки для динамического блока
Минск
Регистрация: 16.09.2006
Сообщений: 1,587
|
||
Просмотров: 14124
|
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
А действительно, как?
1. Через команду insert, но тогда как заметил Shoorup получается блок в блоке. Плюс невозможность при вставке задать параметры динамического блока. 2. Черз ToolPalettes. Есть возможность задать все параметры дин.блока. Нельзя дописать макросик к этой вставке. 3. Через DesignCenter. Можно вытащить любой блок из файла, даже если динамических блоков в нем несколько. Вставляет корректно (нет блока в блоке). Но параметры задать нельзя, только стандартные - масштаб, поворот. Как программно вставить динамический блок, с одновременной правкой его динамических параметров? Чтоб прога сначала выдала запрос указать какую-нибудь величину на экране, а уже потом вставляла блок с теми параметрами которые необходимы в данной ситуации? Сдаётся мне что можно сначала вставить, а потом подправить через entmod. Так вот как добраться до ентих параметров? entget выдаёт код блока, который непосредственно присутствует, причем имеет название типа "*U454", и никаких динамо параметров в в приметиве INSERT нет. Где они? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Все, что дальше - сугубо и трегубо ИМХО. В общем, проблема в том, что dxf-коды для многих новых фенечек просто не существуют, а добраться до значений параметров можно только через ActiveX-функции и vla-представления примитивов. И модифицировать уже через vla-put-*
1. По _insert - а разве там нельзя задавать "Explode"? 2. А какой такой макросик нужон? Потому как думаю там будет проще сделать отдельный лисп, который и будет вставлять дин.блок и выполнять над ним операции. Правда, такой метод не лишен своих минусов...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Насколько я увидел, в динамических блоках (по крайней мере, идущих в поставке ADT2006) РД нет:
Код:
Думаю, что написать "универсальную" функцию будет практически нереально. Можно, конечно, сделать немного "в лоб": вставить дин.блок, и через (sssetfirst) "выделить" его. Более чем охотно допускаю, что я закошмариваю ситуацию, просто с дин.блоками особо не работал
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 21.10.2004
Сообщений: 112
|
Я Вставляю динамический блок которому после вставки можно изменить его параметры. А чтобы не получался блок в блоке то на кнопке добавляю explode. При желании можно после этого добавить purge
Вставка динамического блока Eugenius-ось ^C^C_Ortho;_On;_-Insert;Eugenius-ось;\;;;explode;last |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Посмотри ПМ.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Личные сообщения. Посмотри, наверху есть строка (см. картинку). У меня сейчас сообщений нет - у тебя там написано нечто типа "Новых сообщений : 1". Клик на него, попадешь в личный ящик (ПМ = Private Message), а там уже не трудно разобраться
[ATTACH]1158751480.jpg[/ATTACH]
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Спасибо всем за отзывы. Основной выход подсказал Eugenius за что ему огромное спс.
Моя загвоздка была в том что я не знал что расчленить можно последний вставленный блок Так как 2006 у меня RUS то и команды у меня рус привожу мою строку макроса: ^C^C-в DWGPPr_01;\;;;_explode;последний -очистить;все;;нет; в данном случае: -в - команда вставки блока в командной строке. DWGPPr_01 - название файла с динамическим блоком (PPr_01 - предохранитель). ну и командная строка с параметрами... все оказывается просто до безобразия. Есть еще один маленький вопрос по тебе Дблоков: Как организовать всю структуру файлов с блоками так чтобы это не выглядело хаосом. (т.е. все в одной папке - и иконки и файлы и CUI). Есть ли возможность добавлять собственные иконки в файл acadbtn.xmx (для тех кто не знает здесь хранится собрание всех иконок для кнопок автокада). И можно ли создать 1 файл со всеми имеющимися пользовательскими Дблоками и последующей вставкой через собственную кнопку из этого файла. Через DesignCenter долго будет производится поиск, поэтому мне кажется лучший выход это через кнопки с макросами ? Во всяком случае в моем случае.
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Цитата:
Не знаю как в 2006-м, но у меня сейчас стоит 2007 и там через insert динамоблок из файла вообще никак не вставляется. Код:
|
|||
|
||||
Регистрация: 21.10.2004
Сообщений: 112
|
Цитата:
У меня такое было когда ИМЯ блока и ИМЯ файла СОВПАДАЛИ Попробуй переназвать их так чтобы у динамического блока и у файла в котором этот блок находится были разные имена. |
|||
|
||||
Вижу не многие сильны в этой теме по этому (времени много) расскажу как можно подробнее как я создаю кнопку для вставки дблока.
Задача: Создать кнопку для вставки предохранителя у которого можно изменить его расположение в стативе, его наминал (в Амперах), его длину выводов, контроль перегорания. 1)Создаем папку где будет все храниться. (я свою назвал ShSCB). Папка должна располагаться желательно там где проще будет до нее добраться. (я поместил в С:\ShSCB). Но тогда нужно ее прописать.(см.далее) . Или разместить все файлы там где Автокад будет искать их по умолчанию (это можно посмотреть в Сервис - Настройка… - Файлы – Путь доступа к вспомогательным файлам. Тут же и добавляем путь если надо кнопкой добавить) НО ТОГДА БУДЕТ ХАОС!!! 2) Создаем рисунок с дблоком. Еще раз: Имя блока и имя файла рисунка должны быть разные иначе будет выдаваться ошибка. (я тоже этой ошибки скушал )В мое случае называю файл dwgPred_01.dwg а блок в файле:Pred_01. 3)Потом создаю геометрию: 4) Потом делаю блок. И редактирую его в редакторе дблоков. Там добавляю все параметры и операции к блоку сохраняюсь и выхожу из ред.блоков. Потом нужно совместить точку вставки с ПСК. Т.к. акад вставляет блок по центру ПСК. 5) Потом делаем кнопку: я разместил все кнопки в своем частичном файле CUI и другим советую так делать мало ли… Открываем Адаптацию. (Сервис-Адаптация-Интерфейс) создаем свою CUI. (вкладка Перевести. Потом тыкам кнопку в левом верхнем углу Создать новый файл адаптации. Ну и там ежу понятно что делать) потом делаем панельку в своем файле адаптации. И создаем команду на вкладке адаптация. Пишем макрос в свойствах : ^C^C-в DWGPred_01;\;;;_explode;последний -очистить;все;;нет; , называем команду и т.д. указываем где иконка располагается (она должна быть там где и файл с рисунком) Тыкаем Ок и радуемся новой кнопкой : )))))))))))))))))) [ATTACH]1158910094.rar[/ATTACH]
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
Регистрация: 21.10.2004
Сообщений: 112
|
Цитата:
Насколько я помню, если использовать английские команды перед которыми стоит точка, то они будут работать как в русском так и в английском акаде. Таким образом можно добиться универсальности кода |
|||