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

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

Создание пользовательских кнопок в AutoCAD 2006

Ответ
Поиск в этой теме
Непрочитано 16.09.2006, 11:35 #1
Создание кнопки для динамического блока
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Здрасте уважаемые специалисты в области AutoCAD.
:!: Вопрос следующего характера: AutoCAD2006 подарил кучу новых возможностей в том числе и динамические блоки. Проблема состоит в том что-КАК СОЗДАТЬ КНОПКУ ДЛЯ ВСТАВКИ ДИНАМИЧЕСКОГО блока. Конечно желательно чтобы команда писалась на макросе а не на лиспе (в виду не знания последнего). Кнопку удается создать для вставки блока, но блок вставляется в блоке т.е. его приходится еще и взрывать. И можно ли как небудь организовать более прилично папку с файлами блоков и иконок к ним. [/b]
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 02.04.2008 в 11:04.
Просмотров: 14124
 
Непрочитано 18.09.2006, 20:07
#2
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


tool palettes - ploh?
Dym вне форума  
 
Непрочитано 20.09.2006, 08:15
#3
Krieger

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


А действительно, как?
1. Через команду insert, но тогда как заметил Shoorup получается блок в блоке. Плюс невозможность при вставке задать параметры динамического блока.
2. Черз ToolPalettes. Есть возможность задать все параметры дин.блока. Нельзя дописать макросик к этой вставке.
3. Через DesignCenter. Можно вытащить любой блок из файла, даже если динамических блоков в нем несколько. Вставляет корректно (нет блока в блоке). Но параметры задать нельзя, только стандартные - масштаб, поворот.
Как программно вставить динамический блок, с одновременной правкой его динамических параметров? Чтоб прога сначала выдала запрос указать какую-нибудь величину на экране, а уже потом вставляла блок с теми параметрами которые необходимы в данной ситуации? Сдаётся мне что можно сначала вставить, а потом подправить через entmod. Так вот как добраться до ентих параметров? entget выдаёт код блока, который непосредственно присутствует, причем имеет название типа "*U454", и никаких динамо параметров в в приметиве INSERT нет. Где они?
Krieger вне форума  
 
Непрочитано 20.09.2006, 08:39
#4
Кулик Алексей aka kpblc
Moderator

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


Все, что дальше - сугубо и трегубо ИМХО. В общем, проблема в том, что dxf-коды для многих новых фенечек просто не существуют, а добраться до значений параметров можно только через ActiveX-функции и vla-представления примитивов. И модифицировать уже через vla-put-*
1. По _insert - а разве там нельзя задавать "Explode"?
2. А какой такой макросик нужон? Потому как думаю там будет проще сделать отдельный лисп, который и будет вставлять дин.блок и выполнять над ним операции. Правда, такой метод не лишен своих минусов...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2006, 09:00
#5
Krieger

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


Цитата:
Сообщение от kpblc
что dxf-коды для многих новых фенечек просто не существуют, а добраться до значений параметров можно только через ActiveX-функции и vla-представления примитивов.
Если только расширенные данные не считать dxf-кодом (помоему фенечки там сидят).
Цитата:
1. По _insert - а разве там нельзя задавать "Explode"?
Конечно можно, но я это отметил как отличие от дизайнцентра. Во всяком случае это не проблема.
Цитата:
А какой такой макросик нужон? Потому как думаю там будет проще сделать отдельный лисп, который и будет вставлять дин.блок и выполнять над ним операции. Правда, такой метод не лишен своих минусов...
Цитата:
Сообщение от Krieger
Чтоб прога сначала выдала запрос указать какую-нибудь величину на экране, а уже потом вставляла блок с теми параметрами которые необходимы в данной ситуации?
Короче, нужна прога по вставке динамического блока из файла. При вставке должны быть выведены запросы по доступным для этого блока динамопараметрам, или же как-то оформить их в аргументы функции.
Krieger вне форума  
 
Непрочитано 20.09.2006, 09:16
#6
Кулик Алексей aka kpblc
Moderator

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


Насколько я увидел, в динамических блоках (по крайней мере, идущих в поставке ADT2006) РД нет:
Код:
[Выделить все]
((-1 . <Имя объекта: 7ef81438>) (0 . "INSERT") (5 . "16F") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 7ef81440>) (102 . "}") (330 . <Имя объекта: 7ef6ecf8>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "*U6") (10 165.632 135.204 0.0) (41 . 0.0393701) (42 . 0.0393701) (43 . 0.0393701) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
То есть надо работать со словарями, что тоже не гуд.
Думаю, что написать "универсальную" функцию будет практически нереально. Можно, конечно, сделать немного "в лоб": вставить дин.блок, и через (sssetfirst) "выделить" его.
Более чем охотно допускаю, что я закошмариваю ситуацию, просто с дин.блоками особо не работал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2006, 09:58
#7
Eugenius


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


Я Вставляю динамический блок которому после вставки можно изменить его параметры. А чтобы не получался блок в блоке то на кнопке добавляю explode. При желании можно после этого добавить purge

Вставка динамического блока Eugenius-ось

^C^C_Ortho;_On;_-Insert;Eugenius-ось;\;;;explode;last
Eugenius вне форума  
 
Непрочитано 20.09.2006, 15:00
#8
Miracle


 
Регистрация: 02.03.2006
Moscow
Сообщений: 115


подскажите, пож, как навесить на кнопки нужные мне команды??
ссылочку бы... а то не ищется!! :roll:
Miracle вне форума  
 
Непрочитано 20.09.2006, 15:04
#9
Кулик Алексей aka kpblc
Moderator

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


Посмотри ПМ.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2006, 15:14
#10
Miracle


 
Регистрация: 02.03.2006
Moscow
Сообщений: 115


извини, а "ПМ" - это что??
Miracle вне форума  
 
Непрочитано 20.09.2006, 15:23
#11
Admin
Administrator


 
Регистрация: 21.08.2003
Сообщений: 4,407


Цитата:
Сообщение от Miracle
извини, а "ПМ" - это что??
это "приват мэссэдж" вроде как личная почта по нашему.
Нажми на ссылку в верхнем меню между
|| Профиль || и || Выход
Admin вне форума  
 
Непрочитано 20.09.2006, 15:24
#12
Кулик Алексей aka kpblc
Moderator

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


Личные сообщения. Посмотри, наверху есть строка (см. картинку). У меня сейчас сообщений нет - у тебя там написано нечто типа "Новых сообщений : 1". Клик на него, попадешь в личный ящик (ПМ = Private Message), а там уже не трудно разобраться
[ATTACH]1158751480.jpg[/ATTACH]
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.09.2006, 11:11
#13
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Спасибо всем за отзывы. Основной выход подсказал Eugenius за что ему огромное спс.
Моя загвоздка была в том что я не знал что расчленить можно последний вставленный блок
Так как 2006 у меня RUS то и команды у меня рус
привожу мою строку макроса: ^C^C-в DWGPPr_01;\;;;_explode;последний -очистить;все;;нет;
в данном случае: -в - команда вставки блока в командной строке. DWGPPr_01 - название файла с динамическим блоком (PPr_01 - предохранитель). ну и командная строка с параметрами...
все оказывается просто до безобразия.
Есть еще один маленький вопрос по тебе Дблоков:
Как организовать всю структуру файлов с блоками так чтобы это не выглядело хаосом. (т.е. все в одной папке - и иконки и файлы и CUI).
Есть ли возможность добавлять собственные иконки в файл acadbtn.xmx (для тех кто не знает здесь хранится собрание всех иконок для кнопок автокада).
И можно ли создать 1 файл со всеми имеющимися пользовательскими Дблоками и последующей вставкой через собственную кнопку из этого файла.
Через DesignCenter долго будет производится поиск, поэтому мне кажется лучший выход это через кнопки с макросами ? Во всяком случае в моем случае.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 22.09.2006, 02:08
#14
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


слегка не въехал, а что изначально означало
Цитата:
получается блок в блоке
? просил бы простить за не понятливость в случае данном
Dym вне форума  
 
Непрочитано 22.09.2006, 07:18
#15
Krieger

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


Цитата:
Сообщение от mitjaj
слегка не въехал, а что изначально означало
Цитата:
получается блок в блоке
? просил бы простить за не понятливость в случае данном
По команде insert можно вставлять содержимое файла блоком, при этом базовая точка будет ноходиться в начале координат. Таким образом делают библиотеку стандартных элементов, узлов и т. д. по одному в каждом файле, причем в самом этом файле блока нет. С динамическими блоками получается, что все-таки надо изначально создавать блок и когда этот чертеж вставляется блоком, получается что в обычном блоке сидит динамический. Фу, надеюсь понятно сказал.
Не знаю как в 2006-м, но у меня сейчас стоит 2007 и там через insert динамоблок из файла вообще никак не вставляется.
Код:
[Выделить все]
Command: -insert
Enter block name or [?] <PSK_Aperture_03>: PSK_Usel
Block PSK_Usel references itself
; error: no function definition: CMD-FAIL
*Invalid*
Вставить можно только если помимо него в файле есть еще какой нибудь примитив, а это мусор. И как тогда быть?
Krieger вне форума  
 
Непрочитано 22.09.2006, 09:43
#16
Eugenius


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


Цитата:
Сообщение от Krieger
Block PSK_Usel references itself
Асад говорит что блок ссылается сам на себя.
У меня такое было когда ИМЯ блока и ИМЯ файла СОВПАДАЛИ
Попробуй переназвать их так чтобы у динамического блока и у файла в котором этот блок находится были разные имена.
Eugenius вне форума  
 
Непрочитано 22.09.2006, 10:52
#17
Krieger

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


Eugenius
Понял.
Сделал так:
Код:
[Выделить все]
(if (tblobjname "block" "PSK_MultiBolt")(command "_-insert" "PSK_MultiBolt" pause 1 1 pause)(princ (command "_-insert" "PSK_D_MultiBolt")(command)(command "_-purge" "_Blocks" "PSK_D_MultiBolt" "_No")(command "_-insert" "PSK_MultiBolt" pause 1 1 pause)))
Krieger вне форума  
 
Автор темы   Непрочитано 22.09.2006, 11:28
#18
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Вижу не многие сильны в этой теме по этому (времени много) расскажу как можно подробнее как я создаю кнопку для вставки дблока.
Задача: Создать кнопку для вставки предохранителя у которого можно изменить его расположение в стативе, его наминал (в Амперах), его длину выводов, контроль перегорания.
1)Создаем папку где будет все храниться. (я свою назвал ShSCB). Папка должна располагаться желательно там где проще будет до нее добраться. (я поместил в С:\ShSCB). Но тогда нужно ее прописать.(см.далее) . Или разместить все файлы там где Автокад будет искать их по умолчанию (это можно посмотреть в Сервис - Настройка… - Файлы – Путь доступа к вспомогательным файлам. Тут же и добавляем путь если надо кнопкой добавить) НО ТОГДА БУДЕТ ХАОС!!!
2) Создаем рисунок с дблоком. Еще раз: Имя блока и имя файла рисунка должны быть разные иначе будет выдаваться ошибка. (я тоже этой ошибки скушал )В мое случае называю файл dwgPred_01.dwg а блок в файле:Pred_01.
3)Потом создаю геометрию:
4) Потом делаю блок. И редактирую его в редакторе дблоков. Там добавляю все параметры и операции к блоку сохраняюсь и выхожу из ред.блоков. Потом нужно совместить точку вставки с ПСК. Т.к. акад вставляет блок по центру ПСК.
5) Потом делаем кнопку: я разместил все кнопки в своем частичном файле CUI и другим советую так делать мало ли… Открываем Адаптацию. (Сервис-Адаптация-Интерфейс) создаем свою CUI. (вкладка Перевести. Потом тыкам кнопку в левом верхнем углу Создать новый файл адаптации. Ну и там ежу понятно что делать) потом делаем панельку в своем файле адаптации. И создаем команду на вкладке адаптация. Пишем макрос в свойствах :

^C^C-в DWGPred_01;\;;;_explode;последний -очистить;все;;нет;

, называем команду и т.д. указываем где иконка располагается (она должна быть там где и файл с рисунком) Тыкаем Ок и радуемся новой кнопкой : ))))))))))))))))))
[ATTACH]1158910094.rar[/ATTACH]
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 22.09.2006, 12:43
#19
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 312
<phrase 1=


"Shoorup"
Вы раскрыли нам глаза

Особенно радует код:

Код:
[Выделить все]
^C^C-в DWGPred_01;\;;;_explode;последний -очистить;все;;нет;
со смесью русских и английских имен команд и опций
_Andre_ вне форума  
 
Непрочитано 22.09.2006, 13:16
#20
Eugenius


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


Цитата:
Сообщение от _Andre_
"Shoorup"
Вы раскрыли нам глаза

Особенно радует код:

Код:
[Выделить все]
^C^C-в DWGPred_01;\;;;_explode;последний -очистить;все;;нет;
со смесью русских и английских имен команд и опций

Насколько я помню, если использовать английские команды перед которыми стоит точка, то они будут работать как в русском так и в английском акаде. Таким образом можно добиться универсальности кода
Eugenius вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Создание пользовательских кнопок в AutoCAD 2006

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск