|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вставка блока с помощью иконки
Сообщений: n/a
|
||
Просмотров: 15088
|
|
||||
инженер-технолог (ГИП) Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,144
|
тогда примерно следующее можно
^C^C_.-insert c:/temp.dwg;\;;co;l;;m;i; Тогда он вроде как должен выбирать вставленный блок делать мультикопи, надо вот только указать точку относительно которой будет копироватся вставленный блок.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
>Nike
В этом программировании все элементарно. Если в макрос пишем точку с запятой ; - это аналогично нажатию Enter при работе из командной строки. Если пишем обратный слэш \ - это значит что АКАД будет ждать ценных указаний от юзера. Не сочтите за труд, посмотрите как работает команда при вызове из командной строки и поставьте в нужные места нужные значки :wink: |
|||
![]() |
|
||||
проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks Регистрация: 24.01.2005
Санкт-Петербург
Сообщений: 16
|
Оживил эту тему, дабы не возникало лишних вопросов.
Со вставкой блока посредством "кнопочного" макроса разобрался, но непонятно как при вставке выбирается точка привязки? Как сделать так чтобы точка привязки была, например, левым нижним углом блока? |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Надо определить в блоке нужную точку как точку вставки!
![]()
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
А чего бы не использовать для этой цели LISP :?:
Для начала позаботимся о том чтобы все блоки вставлялись с одинаковым масштабом, без запроса оного. Т. е если нужен масштаб отличный от 1, запускаем функцию SCA и устанавливаем масштаб для всех последующих вставок: Код:
Код:
Код:
Код:
Естественно файл с этими функциями должен быть в автозагрузке, а файлы с блоками на "путях поддержки". Enjoy... |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
А чего проще?
Записываешь это в файл, ставишь его в автозагрузку. Потом рисуешь в макросах кнопок (SC_SymInsert2 "Название_файла") хоть до посинения. Что может быть проще? Естественно макрос начинаем с ^C^C... |
|||
![]() |
|
||||
проектирование автоматизированных систем управления и диспетчеризации на базе LonWorks Регистрация: 24.01.2005
Санкт-Петербург
Сообщений: 16
|
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
![]() |
Фига вытащил тему (почти ровно год валялась, а проблемы те же).
Уважаемые фантомасы, или гуру там всякие, снизойдите до вот этого: ко всему что есть (lisp) хотелось прибавить что-то типа: (command"wipeout" "f" "off") т.к. в одном хорошем блоке есть эта ложка дёгтя (иногда совсем не хотца думать и легче притвориться лаймером и попросить того, для кого это раз плюнуть) не знаю как эту строчку грамотно втиснуть. и ещё хотелось чтоб осталась возможность перебора точки вставки (динамический блок) тобиш Ctrl. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
> pyatifan : Маленький вопрос: используется ли toolpalettes? Если да, то можно повесить слой, масштаб и угол поворота напрямую на инструмент. А для wipeout можно и такое сделать, повесив его в автозагрузку:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструктор штампов Регистрация: 10.03.2004
г. Киев
Сообщений: 92
|
Вставляю блок с масштабом по Х=1, а по У масштаб определяется разницей от точки вставки до указ. точки макросом:
Код:
Где проблема? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Поскольку используется 'cal, думаю, что используется полный кад. Соответствтенно попробуй нечто типа:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Стоп, я не понял - мой код работает или нет?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Можно. Но код длинный. Сделано в ruCAD'e.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Строительство Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
![]() |
Цитата:
Просто в лиспе можно сделать - сначало вставка блока, а затем с помощью командой копировать сделать вставку вставленного блока , я сделал не большой лисп , но при копировании вставляется только один раз, а не несколько. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Длинный потому что вставлять сильно хочется, наблюдая за возможным результатом, а не неизвестно что и неизвестно куда. Да еще и с возможными разными масштабами. Некоторые блоки надо поворачивать после вставки; некоторые - нет. Общая идеология (по крайней мере примененная в ruCAD'e и следом за этой системой - и у меня) примерно такая:
- создается анонимный блок, в который засовывается "реальный" блок с переданными значениями масштабов по осям (правда, такой подход чреват проблемами при вставке таблиц и динамических блоков) - через команду _.change меняется точка вставки - если не был задан угол поворота, опять же командой _.change он меняется. Там масса проверок, "ловушек" ошибок и т.п. Также надо предусматривать вариант выхода как по правой кнопке, так и по Esc. Я б сам такое не написал в жизни. Идею слизал, немного переделал. Пока работает. Минусы подобного подхода: - проблемы при вставке таблиц, динамических блоков, размеров и т.п. примитивов, имеющих в себе ссылку на запись таблицы блоков. - команда _.change работает только в виде "сверху". При условии, что текущая система координат не совпадает с видом, иногда получается весело - при условии запуска в LT Extender надо отслеживать условие, что (vl-cmf) все равно возвращает nil, что требуется учитывать. - Изменить масштаб вставленного блока динамически нельзя. Плюсы: - Вставка всегда визуализируется. - Одна функция может вызываться из тысяч мест, меняя только пару-тройку параметров.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Строительство Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
![]() |
[quote="kpblc"]Длинный потому что вставлять сильно хочется, наблюдая за возможным результатом, а не неизвестно что и неизвестно куда. Да еще и с возможными разными масштабами. quote]
Нет, у меня все просто, блок один тот же и вставка без масштаба. У меня просто стандартный набор вставил и повернул. просто иногда надоедает каждый раз угол задавать!!!!! Просто вызвал прогу - вставил блок - показал угол, следующаая вставка без запроса угла и т.д. до бесконечности, пока не завершишь программу. Если снова запускаешь программу - при первой вставке сделать запрос угла. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Без проверок на работоспособность:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструктор штампов Регистрация: 10.03.2004
г. Киев
Сообщений: 92
|
> kpblc
Твой код не работает Код:
А такой код работает Код:
Получается, что без ввода угла не обойтись что с 'Cal, что с LISP. Можно немного упростить Код:
|
|||
![]() |
|
||||
Строительство Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
![]() |
Цитата:
В место blockname - я написал имя автокадовского файла. А принцип работы проги должна заключатся: 1. вызвал прогу 2. вставляешь блок 3. делаешь поворот (визуально смотришт как и где поворачиваешь) 4. после поворота , прога не завершается 5. снова ставишь блок , но угол поворота уже сохраняется и т.д. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Стоп. Блок уже должен быть в файле. Если ты вставляешь внешний файл как блок, то тут по другому надо делать, ЯТД.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Строительство Регистрация: 03.09.2003
Нижний Новгород
Сообщений: 81
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 02.09.2009
Сообщений: 82
|
Тогда следующий вопрос: Мне удалось сделать кнопку для вставки блока, он нормально вставляется, с нужным масштабом, только одна проблема- как сделать, чтобы команда могла завершаться после вставки блока, а то она отключается только при нажатии ESC Не оставляйте без ответа, коллеги
Последний раз редактировалось klinker, 12.10.2009 в 14:02. |
|||
![]() |
|
||||
конструктор Регистрация: 31.01.2008
г. Новоалтайск
Сообщений: 102
![]() |
подскажите, а если мне нужно вставить дин. блок ?
просто я сделал так ^C^C_.-insert c:/temp.dwg;\;; но тогда вставляется блок который содержит в себе мой дин. блок и динамичность появляется только при "взрыве" первого... |
|||
![]() |
|
||||
архитектор Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539
|
я вот не понял зачем всё это....А не проще в Design Center найти этот файл с блоками выбрать во вкладке Blocks нужные блоки и правым кликом выбрать меню где нажать greate tool palette.
У вас тогда будет палитра где будут иконки блоков и их имя. Для этого в файле все блоки должны быть поименованы. |
|||
![]() |
|
||||
Когда указываешь путь при вставке блока, то акад берет чертеж из этого пути и создает из него блок с именем по названию файла. То есть дин. блок будет внутри этого блока. Как выход - можно потом взорвать вставленный блок (если, конечно, только один блок в файле).
|
||||
![]() |
|
||||
конструктор Регистрация: 31.01.2008
г. Новоалтайск
Сообщений: 102
![]() |
Цитата:
как сделать просто вставку блока а не вставку файла с блоком? |
|||
![]() |
|
||||
Достаточно поместить файл ins-dyn-blk.lsp во вспомогательную папку AutoCAD и повесить на кнопку:
Код:
Код:
Код:
|
||||
![]() |
|
||||
Цитата:
![]() Да не верю что-то, чтоб не работало... принцип постановки слешей такой: если в строке пути стоит обратный слеш (\) то он заменяется на два обратных (\\), соответственно, если таких слеша два (сетевая папка, например), то ставится вместо двух четыре. Прямой слеш (/) не заменяется. Пример 1 (локальная папка): Код:
Код:
![]() |
||||
![]() |