Re: ObjectARX. Построение аксонометрий по ГОСТ
> Леонид
что-то неправильное у Вас в этой аксонометрии,
гостовская сантехническая ну никак не выходит! Ось Y не в ту сторону напрвлена.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → ObjectARX. Построение аксонометрий по ГОСТ
> Леонид
что-то неправильное у Вас в этой аксонометрии,
гостовская сантехническая ну никак не выходит! Ось Y не в ту сторону напрвлена.
> Apelsinov
Вы случаем не ГОСТ 21.602-2003 имеете в виду? Здесь используйте функцию (c:akspro 0 45 90)
А вообще прога изначально делалась под ГОСТ 2.317-69
http://nstu.berdsk.ru/metod/ebook/grafi … /2_317.htm
Добавлено сохранение в аксонометрии свойств элементов - толщина, цвет и т.д.
Большое спасибо!
> Леонид
Ух-ты!Да вам за такую прогу надо памятник поставить, при жизни:)))
> Apelsinov
Это Вы про эти памятники что-ли? :)
https://www.caduser.ru/forum/topic21353.html
Теперь цилиндры и конусы (тела) рисуются полностью.
Проверял не везде, только в прямоугольной изометрии. В остальных пунктах с сбросом AutoCAD и уведомление об ошибке. Думаю как-то надо исправить. Предыдущая версия не рисовала, но ошибок не было!
> Владимир М
Да, с заявлением о полной отрисовке конусов и цилиндров малость поторопился... Там еще есть над чем поработать. Ошибки есть, но автокад у меня не вылетает. Не зашлете мне файл 3D модели, при построении с которого происходит вылет?
Кроме того, предыдущие версии лежат там-же, их по прежнему можно скачивать.
Леонид, исходный файл я послал вам на почту.
Спасибо за внимание.
> Леонид
маленькое замечание, программа замечательно оставляет примитивы на тех-же слоях, что и оригинал, но параметры слоев сбрасываются, цвет , тип линий, толщина, стиль, печатаемость.
Нельзя ли оставить их как в оригинале?
И еще, при задании команды функцией , возможно ли передать в качестве аргумента набор набор, но нельзя сделать нужную проекцию, а в форме (c:akspro 0 45 90) нет задания набора.
Насчет слоев - сделаем.
Про функции и набор, честно говоря, не совсем понял - что же передать в функцию, какой такой набор? Для выбора элементов есть функция C:AKSSEL
> Леонид
если использовать функцию c:akspro в лиспе, то нет возможности задать объекты для работы функции - будет обработан весь файл.
Хотелось бы иметь такую возможность, и передавать в качестве одного из аргументов некий набор примитивов - объект SelectionSet по activeX.
Все-таки лучше оформить именно функцию akspro, а не функцию-команду c:akspro. Предусмотреть передачу в функцию всех аргументов, которые могут изменяться, включая набор. Возможно, слой, цвет и прочее для схемы. Может быть и переменное количество аргументов, хотя от этого только путаница.
А команду (или несколько, с разными именами) можно оформить на уровне LISP, например в меню. Это даст подлинную гибкость. Не исключается и вариант команды с полным диалогом.
> Apelsinov
С передачей объектов SelectionSet (ActiveX) в ObjectARX - проблема. В явном виде их передать нельзя - только обычный набор. Я не занимался специальными исследованиями, но среди тог, что можно передать в ObjectARX:
1) INT
2) REAL
3) STR
4) ENAME
5) PICKSET
6) NIL
7) T
Ну и списки (и точечные пары) из них состоящие.
Так что IMHO проще в lisp-функцие преобразовать SelectionSet в обычный PickSet, а потом уже передавать, чем пытаться в ObjectARX работать с SelectionSet.
Для взаимодействия приложения с LISP мне треба малость его подучить... :)
Если нужно что-то очень и срочно - исходники на сайте есть.
Передать SelectionSet в ближайшее время попробую, только для тестирования прошу кинуть мне на почту какую-нибудь простенькую LISP-програмку.
Кстати, вот новая версия
http://microstation.narod.ru/acad/aks/akspro-0.2.4.zip
Исправлено:
1. Существенно доработан алгоритм построения касательных к конусам и цилиндрам. Находится в процессе тестирования. Если будут возникать ошибки или неправильное отображение, сообщайте.
2. Исправлены некоторые мелкие ошибки.
Добавлено:
1. Обработка примитива Текст (простой).
2. Функция (c:akssdi <аргументы>) - отрисовка в том-же документе с указанием точки вставки асконометрии.
> Леонид
Простенькая lisp-программа:
(defun sel_and_aks ( / ss) (setq ss (ssget)) ;; Выбор примитивов (c:akssdi <аргументы>) ;; Замени на нужные аргументы, один из которых ss )
Если в твою программу передан набор (ss), то ты можешь убедится, что это набор:
// rb - указатель на очередной переданный параметр if (rb->restype == RTPICS) { ads_name ss; ads_name_set(rb->resval.rlname,ss); // Теперь в ss - имя набора - можно использовать // acedSSLength, acedSSName и т.д. }
Опечатка! Не RTPICS, а RTPICKS
> Леонид
Замечания:
1. при попытке сделать аксономентрию с солида (параллепипед) на акс. исчезает часть его граней, каждый раз разные грани.
2. если воспользоваться acssdi то не получится отменить действие команды (только), наверное надо ставить метки для undo(в лиспе так)
3.На аксонометрии текст всегда будет с поворотом 0. Наверное надо сохранять угол как в оригинале.
4.В качестве аргументов функции хотелось бы иметь число сегментов для дуг (то что 20 по умолчанию)
5. acssdi: базовую точку для вставки (сейчас 0,0,0) лучше либо запрашивать, либо по умолчанию брать лев.ниж.угол границы выбранных обьектов. А то ноль может быть очень далеко по сравн с размерами объектов.
Что-то я по п.2 погорячился, метки-то можно и лучше лиспом поставить в функции команды. Так что этот пункт - долой.
> Apelsinov
По пункту 4. Вы пользуетесь разным количеством сегментов? Я хочу этот параметр прописать в настройках, в файле или реестре. Менять его часто, имхо, незачем.
Остальные пункты справедливы. Особенно первый. Барахлит алгоритм уборки дубликатов. Я его просто уберу до лучших времен.
Всем привет!
Я тут решил последнюю версию 0.2.4 на все сплошные фигуры протестировать!
И вот результат: конус и цилиндр ? обрисовывает во всех проекций без проблем;
сферу и тор ? не рисует;
бокс - во всех проекциях полностью не обрисовывается;
а вот с клином ? проблемы, т.е. во всех пунктах при получении проекций выдает уведомление об ошибке со сбросом AutoCAD.
Исходник с клином, посылаю вам, Леонид.
Ой, опечатка. С боксом во всех проекциях не полностью обрисовывается!
На странице http://microstation.narod.ru/acad/aks/
оглашен весь список тел, которые на данный момент обрабатываются.
Сфера и тор - это отдельный разговор.
Дело в том, что Автокад при расчленении превращает их в AcDbBody, который расленить невозможно.
Это легко проследить, попробуя просто расчленить их командой _EXPLODE в модели. Сначала они превратятся в Тело, а потом просто исчезнут :(
Правда, я еще не пытался попробовать с ними AcBrBrep,
но вообще, как я понимаю, отрисовка проекции тора по принципу конусов и цилиндров -
это работа емкостью не на одну неделю...
Здесь у меня опять возникает зеленая тоска по MicroStation,
в котором и тор расчленяется на дуги, и всю информацию по нему в коде получить можно без проблем...
Извините, отвлекся... :)
По поводу неполной отрисовки клинов и боксов.
Я уже говорил, здесь я сделал не совсем корректно, или, буду откровенен,
совсем не корректно (этому учат на первых занятиях программистов... :)).
Поставил на простое сравнение два вещественных числа - координаты точек.
Вот она где эта бяка и вылезает...
Сейчас я это исправил, уже использую AcGeTol.
Тепреь у меня все отрисовывается отлично, во всех проекциях,
надеюсь и у Вас тоже...
Если опять не будет работать, скажите мне, просто уберу проверку на дубликаты.
http://microstation.nm.ru/acad/aks/akspro-0.2.5.zip
По поводу вылетов. Я так и не смог добиться, чтобы мой автокад в последних версиях хоть раз вылетел... Здесь наверно виной уже не программа, а нечто иное...
Леонид, не спешите, в новой 0.2.5. версии уже ни чего из сплошных не обрисовывается и выдает уведомление об ошибке.
> Владимир М
Я не спешу... Оба файла, которые Вы мне прислали, у меня отрисовываются нормально на двух машинах. На обоих Windows XP SP2, AutoCAD 2005 русский и английский.
У кого-нибудь еще такие проблемы есть?
Форумы CADUser → Программирование → ObjectARX → ObjectARX. Построение аксонометрий по ГОСТ
Форум работает на PunBB, при поддержке Informer Technologies, Inc