| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
28.02.2007, 17:37 | #1 | |
Как визуализировать создаваемый объект?
инженер-конструктор
Беларусь
Регистрация: 20.12.2006
Сообщений: 498
|
||
Просмотров: 9950
|
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,826
|
Цитата:
А насчет отображения объекта созданного сторонней программой, то это как позволяет программа, у меня например отображает. А насчет определить длину текста, то насколько я знаю при построении выноски КАД сам рисует полку под текстом, али не рисует в зависимости от настроек выноски.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
два варианта как всегда
1. функции семейства gr... (grclear, grdrav, grread, grtext, grvecs) вам помогут. Но в тексте программы вам понадобятся две очень похожие функции - одна отрисовывает объект во время динамического ввода, вторая собственно создает этот объект в чертеже здесь есть пример реализации http://dwg.ru/forum/viewtopic.php?t=...er=asc&start=0 наверное еще где-то найдете 2. сделать наоборот - сначала нарисовать объект а потом натравить на него команду move например |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Лучше не _.move, а _.change ИМХО - там можно за компанию еще и угол поворота установить
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
инженер-конструктор Регистрация: 20.12.2006
Беларусь
Сообщений: 498
|
Цитата:
__________________
Инженер-конструктор. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
При _change 100% виден
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
Цитата:
Цитата:
кидайте текст программы вместе доведем ее до ума или хотя бы попытаемся |
|||
|
||||
инженер-конструктор Регистрация: 20.12.2006
Беларусь
Сообщений: 498
|
Вообще говоря хочу сделать программу рисования выноски (для конкретики).
(defun c:my () (setq text1 (getstring "\nУкажите текст над полкой: ")) (setq text2 (getstring "\nУкажите текст под полкой: ")) (command "_insert" "my_block" pause "" "" "" text2 text1) ) "my_block" - это блок с атрибутами (верхний и нижний текст). Задача: после активации команды "my" - вводим текст над полкой, текст под полкой, указываем точку выноски, далее хотелось бы чтобы рисовался прототип полки с надписями и "висел" на курсоре, ожидая когда пользователь укажет место размещения выноски, при этом хотелось бы чтобы от первой указанной точки до полки шла резиновая линия, меняющаяся в зависимости от текущего положения курсора. Попутная проблема - определение длины наибольшего текста в линейных размерностях для отображения полки соответствующей длины.
__________________
Инженер-конструктор. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
C наскоку если: использовать в цикле (grread) с проверкой на указание точки. Совместно с (grvecs) и, возможно, (gertext).
С (grtext) не работал, так что там я мимо кассы
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
В твоей идее есть порочный момент - использовать блок для двойной надписи. На нем и сломаешься. Как сделать, чтобы блок визуально висел на курсоре расписано в упомянутой книге - это не так просто, с учетом множества глюков разных версий Автокада. Лучше делать просто - тексты и отрезки. Но и тут немало нюансов - определение ориентации текстов в зависимости от конечной точки выноски, длины текстов. Надо учесть еще и возможность работы не в МСК, в том числе и в 3D. Программа должна не просто быть написана, но еще и работать, и работать надежно. Вот функция из ruCAD, которая и делает двойные выноски. Для демонстрации алгоритма. Код:
Вот один из "секретов" правильного поределения длины текста Код:
|
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
Респекты: VVA, kpblc, Лентяй спасибо за советы по поводу entmake/entmode
Эпиграф: каждый LISP-любитель должен за свою жизнь состряпать прогу для построения выносок Собственно прежде всего преследовалась цель изготовить обыкновенную с точки зрения acada выноску, но с двухэтажным текстом... ну и пример "визуализации" по принципу сначала изготавливаем объект, потом натравливаем на него команду MOVE Эпилограф: комментарии приветствуются [ATTACH]1173857386.zip[/ATTACH] |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ну ты сам напросился
1. Не учитываются варианты локализованных версий. 2. В функции Код:
То же самое относится к Код:
--- Тестил на ADT 2006 Rus + SP1. --- Ну это уже так, побрюзжать немного - Когда я вижу слово "Укажите", меня тянет именно "Указать" на примитив. Замени на "Введите". - То, что текст создается сначала в точке начала выноски, может ввергнуть пользователей в панику (акад сломался!) - Я б нарисовал какой-никакой а диалог для более "нормального" вида. Эта задача из разряда тех, в которых красота вида важнее чего бы то ни было. Вот так вот... Надеюсь, охоту не отбил дальше программировать?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
1. не вопрос... хотя очень хочется расставить метки отката без вызова функции command
2. по правой кнопке в данном варианте будут пустые строки только и всего, по esc программа завершится как и любая другая команда только и всего. getusrtext , getusrpt оформить можно как угодно, вплоть до повтора последних введенных значений... косметика в общем позже будет 3. странно вчера работало : ))) сейчас попробовал в функции crle строчку (cons 73 0) заменить на (cons 73 1) вроде оно. кстати в предыдущем посте файлик я переаттачил на брюзжание такой ответ: вообще сакральный смысл именно этой реализации заключен всего в двух строчках кода - все остальное обряды и пассы руками |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Вот только не надо, не надо! Попробуй выполнить (setq tmp (getusrtext)) и в ответ на первый запрос сделай правый пинок, а на второй - Esc. И погляди, чему у тебя будет равен tmp. А еще лучше - сразу после этого сделай попытку сформировать строку многострочника. Веселье практически гарантирую!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Упс, сорри. Как-то привык, что у меня каждая функция возвращает ожидаемое значение. Извини еще раз.
Идея с использованием дробей понравилась, спасибо Хотя я пока пробую сделать по-другому
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
типа новый релиз:
добавлена визуализация с помощью (grdraw, ввод текстовых строк пока на прежнем примитивном уровне. кому интересно погоняйте пжалста на предмет насекомых [ATTACH]1175680330.zip[/ATTACH] кстати у проги есть некоторый принципиальный недостаток - так как выноска получается обыкновенная, то и редактировать ее можно через mtexteditor, но этот самый едитор после unstack/stack высоту символов делает 0,7 от установленной высоты текста |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Цитата:
P.S. Интересно, а что будет, если будет использоваться внешний редактор? P.P.S. У меня из-за подобных выносок голова болит уже месяца два, не меньше - слишком многое надо учитывать по ходу дела.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
с внешним редактором как раз проблем поменьше будет - можно заделать свой staker или просто вбить
"\\A0\\SТекстНадПолкой/ТекстПодПолкой;" правда сам пока не пробовал реактор прописывать не хоцца, потому как есть подозрение, что можно обойтись без них как понравилась визуализация? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
еще не успел посмотреть.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||