|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.06.2007, 19:58 | #1 | |
Помогите продумать поворот части выноски!
Воронеж
Регистрация: 26.06.2007
Сообщений: 151
|
||
Просмотров: 10980
|
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
У меня есть подобная выноска, сделана при помощи leader и динамического блока. Используя leader мы решаем проблемы со стрелкой. У динамического блока есть возможность комфортно крутить полку куда угодно. Лидер и блок объеденены в безымяную группу. Точка вставки блока совпадает с последней точкой лидера. Здесь приследуется цель последующего редактирования, уже после отрисовки, а рисуя это все отрезками будут проблемы.
Но это для AutoCAD... Вы-то в чем работаете если не в AutoCAD? На рисунке ADT, а там VisualLISP вроде есть. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Сильно подозреваю, что задача стоит для BricsCAD'a или чего-то наподобие.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
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
|
Значит делать атрибуты и работать с ними отдельно
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Попробуй так:
Код:
Со слоями и цветом пока сам разбирайся (кстати, в вышеуказанном коде (первый пост) нет проверки на наличие слоя "6"). |
|||
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Вот это да! Спасибо большое за ответы, код и готовность помочь! Я ещё многого не знаю (те же атрибуты, проверку на наличие слоя и т.д.), только начинаю разбираться, поэтому благодарен вам за помощь, советы, подсказки.
Код сейчас буду пробовать, разбираться. |
|||
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Программа у меня выдала ошибку в Автокаде. Но, судя по тексту, это не совсем то. Надо вот что: пользователь нажимает кнопку на панели, после чего указывает на выноску, нажимает Enter, и она поворачивается на угол, указанный на этой кнопке (один из трёх). Плюс к тому кнопка с масштабированием (0.75) - как указано на рисунке.
Проблема такая: если объединять это всё в блок, а потом поворачивать, текст тоже перевернётся, а в случае со 180 градусами это плохо. Ситуация осложняется ещё тем, что я пока ограничен в фантазиях и способах их реализации из-за недостатка опыта =) |
|||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Говори какую ошибку выдал AutoCAD. Кстати, у меня твоя прога не работает.
Насчет твоих кнопок... На самом деле код для этого очень даже пододит, т.к. в нем используется блок с которым программно обращаться легче (ЯТД). По сути для этого даже дополнительных кнопок не надо, зажимаем грипс блока, два раза жмем пробел и крутим его как угодно. Что касается углов 180 и -90, то тоже решается простым изменением выравнивания атрибутов с левого на правый, у меня в проге для этого работает обычное зеркало (mirror), тогда атрибуты зеркалятся достаточно корректно, но, к сажалению, с переносом базовой точки. Масштабирование? Для блока - это ни есть проблема. А экранным меню я никогда не пользовался. Как оно работает? |
|||
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Ошибка в том, что сначала построилась выноска, потом исчезла, потом предложила выбрать кучу всего (<>), и в итоге я даже не понял, что там надо выбрать из списка в 10 значений. Но у пользователя не надо спрашивать, что и куда вращать.
Странно, что и моя прога не заработала - у меня в AutoCAD 2005 работает. Чертит только выноски. Экранное меню и я не пробовал - этот рисунок делал не я. Напишите, пожалуйста, подробней, об атрибутах (для чего, как с ними работать) и о комманде масштабирования! [/quote] |
|||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Какая версия (русская/английская)?
Покажи лог, я не телепат. Должно быть так: Код:
Цитата:
Цитата:
Только у блока масштабом является его свойство, которое и редатируется по необходимости. |
|||
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Так-с... спасибо, буду думать.
Пока мучаюсь с ещё одной проблемой: рисование гребенчатой выноски средствами автолиспа. Это когда нужно указать начало выноски, начало полочки, а затем, пока не надоест, тыкать точки, указывая начало следующих выносок. Потом это должно соединиться в гребёнку, причём линии-выноски из всех указанных точек должны быть под таким же углом к горизонтальной полочке, под каким к ней находится первая выноска. Вот как! Основная проблема - как определить координаты точки полочки, в которой под нужным углом должна заканчиваться каждая последующая линия-выноска. Сижу 3-й час... Может, есть простое решение? [ATTACH]1183060939.jpg[/ATTACH] Есть функция, которая могла бы помочь - vla-intersectWith, но, к сожалению, я ограничен рамками autolisp'а. |
|||
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825
|
Чего думать? Ты на вопросы ответь.
Если кад русский поставь подчеркивание в коде перед bl и tl, может с этим проблемы: Код:
Цитата:
Цитата:
Я так смотрю диалога у нас с тобой не получется. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
> Krieger : Тут дело такое... В BricsCAD'e (под который и пишется прога) как такового отладчика AutoLISP нет. Можно, конечно, попробовать сторонние приложения использовать, но это не всегда катит
fas и vlx это чудо не поддерживает (по крайней мере 7-ка). > Tonic : еще раз проверь команды и их опции! Возможно, собака порылась именно тут.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
и entmake, и entmakex.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Krieger, у меня стоит русский Автокад (там я, в основном, тестирую свои lsp), изменил то, что Вы сказали - проблема была в этом. Работает, но это не совсем то, что требуется. Программа, строящая выноски, у меня есть (я приводил примерный текст), а надо, чтобы пользователь, нажавший на кнопку на панели "+180" и указавший на уже построенную ранее выноску, получил её переворот на этот угол, причём текст не должен перевернуться.
Цитата:
Цитата:
Я думаю, может, сделать бесконечные линии, потом определить их точки пересечения, построить обычные линии до точек пересечения, а потом удалить бесконечные линии. Начал так делать, и возникла проблема: 1. Черчю первую линию выноски; 2. Определяю угол между ней и осью Х (angle p1 p2) 3. Строю бесконечную _xline линию по горизонтали (будущая полочка) 4. Пользователь указывает следующую точку начала след. выноски 5. ДОЛЖНА строиться бесконечная линия от новой точки (в цикле) под тем же (определённым ранее) углом, а строится чуть ли не горизонтальная. В чём тут может быть проблема? 6. В дальнейшем собираюсь вычислить точки пересечения, построить _line до них, а все _xline удалить, затем дорисовать горизонтальную линию (от начала полочки). Может, есть хотя бы алгоритмы попроще? |
|||