Темы сайта
Интегрированная система ruCAD - приложение к базовой системе AutoCAD.

Система ruCAD - это приложение строительного профиля в широком понимании, то есть предназначенная для автоматизации строительного проектирования, реконструкции и технического перевооружения любых зданий и сооружений.В отличие от других систем, ориентированных на конкретную область применения, в ruCAD включены средства для комплексной разработки проектной документации наиболее распространенных разделов проекта, выполняемых во всех проектных организациях.
Система управления контентом MODx
Ограничения
В соответствии с Договором между издательством и авторами мы не имеем права полностью публиковать в Интернет материалы книги.

Но, в пределах установленной квоты, будут публиковаться отдельные главы. Кроме того, на сайте будут размещаться материалы, не вошедшие в книгу и полные версии сокращенных по техническим причинам глав.

Так помечены материалы, не опубликованные на сайте!

Новинки
Книга была выпущена в 2004 году. С тех пор многое изменилось - появились версии AutoCAD 2005, 2006, 2007, 2008.

Система ruCAD была выпущена в свет, появились замечания и предложения пользователей. Да и у нас появились новые представления по некоторым вопросам.

Поэтому в материалы книги, публикуемые на сайте, мы вносим дополнительные замечания, выделяемые так:
Так выделяются дополнительные замечания, комментарии, указания!

Библиотека ObjectARX - что это такое?


Несколько раз нам встречались на форумах мнения о заведомой "лучшести" программ, разработанных с использованием ObjectARX. Проясним этот вопрос.

Наиболее ярко такое мнение выражает человек с ником R.A.S:

Ребята, на VBA и LISP ничего хорошего не получится, залог успеха по моему мнению - только ObjectARX и только новые объекты !
 

Да, уж... Сильно сказано - "ничего хорошего не получится". Вообще-то пользователю совсем незачем знать (кроме любопытства), на каком языке и в какой среде программирования разработана программа. Главное, чтобы она делала то, для чего предназначена.

Впрочем, бывают и исключения. Например, появляется все больше программ, разработанных с использованием .NET. Это специальная среда исполнения, имеющая, кстати уже несколько версий. Если упростить, то это набор библиотек, которые должны быть установлены на компьютере, чтобы заработала эта программа. Весит этот набор более 20 Мб, и не входит в состав Windows XP.
Пользователь может скачать небольшую и нужную программу, а потом обнаружить, что для её работы нужно еще скачать откуда-то "довесок" весом в 40 раз больше.
Впрочем, мы отвлеклись и к ObjectARX это не имеет отношения.
Так что же такое ObjectARX и с чем его едят?

ObjectARX - это большой набор библиотек, предназначенный для разработки приложений для AutoCAD в среде программирования Microsoft Visual C++. Сам AutoCAD разработан с использованием ObjectARX.

ObjectARX и среда Microsoft Visual C++ являются самым мощным средством разработки приложений для AutoCAD, как за счет добавления новых команд и функций, которые можно исользовать в LISP, но также за счет новых типов примитивов.

Немного истории.

В AutoCAD-10 единственным средством для разработки приложений был AutoLISP.  Этого было недостаточно, и  фирма Autodesk задумала и реализовала новую систему разработки приложений.


В 1989 году, в AutoCAD R11, появляется ADS (AutoCAD Development System) — система разработки расширений AutoCAD на языке C. Это  были "Си-связки", которые дополняли AutoLISP необходимыми функциями. Сначала для разработки ADS-расширений можно было использовать различные компиляторы языка C.

Впоследствии система ADS была заменена на расширение ARX (AutoCAD Runtime Extension), предоставляющее полностью объектно-ориентированный интерфейс между программами, разработанными на C++ и AutoCAD. Название Runtime Extension подразумевает одно из ключевых отличий от предшественницы ARX, а именно ADS, приложения которой работали как внешние процессы и общались с AutoCAD при помощи взаимодействия процессов (Interprocess Communication).
 

ARX-приложение работает в том же адресном пространстве, что и AutoCAD, как динамически связываемая библиотека (DLL) и имеет прямой доступ к графической базе данных AutoCAD. Важнейшая особенность ARX заключается в том, что появилась возможность расширения AutoCAD не только за счет новых команд, но также за счет новых типов примитивов.


В 1995 году, в AutoCAD R13 появляется возможность использования библиотеки ObjectARX, постоянно развивающейся и дополняющейся по мере выпуска новых версий AutoCAD. Про альтернативные среды разработки теперь пришлось забыть — ARX-приложения можно было разрабатывать только с использованием Microsoft Visual C++.

Впрочем, для AutoCAD R14 нам удавалось делать ARX в среде Borland Delphi, но уже в R15 это стало невозможным.

Итак, с использованием ObjectARX можно создать:

1. Дополнительные функции, которые можно использовать в LISP. Примером очень полезной библиотеки таких функций является DOSLib. Заметим, что это же можно сделать и с использованием COM-технологий.

2. Дополнительные команды AutoCAD, делающие что-то полезное без создания собственных типов объектов. Примерами могут служить несколько великолепных ARX, разработанных Александром Ривилисом.  Как правило, это же можно сделать и с использованием COM-технологий, но с ObjectARX возможностей может быть больше. Очень нужное приложение AksPro для преобразования трехмерных моделей в различные плоские аксонометрические проекции также разработано Леонидом Вибе с использованием ObjectARX.

3. Самое главное, что можно сделать только в ObjectARX - это совершенно новые типы объектов, которых нет в базовом AutoCAD. Это позволяет делать очень мощные приложения, такие, как ADT и AutoCAD MEP.
 

 Казалось бы, чего ещё надо? Раз это самая универсальная и мощная среда, то в ней и надо программировать под AutoCAD!

Увы, все не так просто.

1. Мощь библиотек ObjectARX оборачивается требованиями к высокой квалификации програмистов. Если на VisualLisp можно научиться программировать на весьма высоком уровне (при наличии стремления) за месяц-другой, то осваивать ObjectARX придется не менее года (чтобы сделать что-то приличное). При этом непременно нужны и профессиональные программистские знания, или их придется получать еще больше времени путём самообучения.

А вот на LISP пишут множество "простых" инженеров, и пишут именно то, что им надо. Найти столько ARX-програмистов просто нереально - в Интернет на всем пространстве xUSSR таких специалистов замечено не более десятка. Ну, наберется ещё сотня в недрах заводов и фирм - так это капля в море на несколько сотен тысяч пользователей AutoCAD. Да и научиться можно только по фирменной англоязычной документации - русских книг нет и не предвидится.

Не зря тысячи инженеров по всему миру разработали столько много прикладных программ для AutoCAD на LISP и VBA - им просто некогда было ждать, пока "настоящие" программисты соизволят обратить на них внимание. Это ведь только в последние годы и сама фирма Autodesk, и её партнёры всерьез взялись за разработку прикладных приложений.

2. Разработка на ObjectARX намертво привязана к средам программирования Microsoft и к версиям AutoCAD. Появляется новый AutoCAD - весьма вероятно, что понадобится и новая версия давно используемого ARX-приложения. Вероятно, что и разработчикам придется приобретать очередную версию среды разработки у Microsoft. Вот такой сговор у фирм.

Для обычных пользователей это означает почти неизбежную необходимость и обновления прикладных программ. Вот и замечательная программа AksPro оказалась в такой ситуации - первоначально была откомпилирована для AutoCAD 2005, а для 2007 ёё пришлось еще и переделывать из-за перехода на UNICODE. Хорошо, что Александр Ривилис с этим помог.

3. Делать собственные объекты надо "с умом", когда действительно без них не обойтись. Наличие нестандартных объектов (proxy-объекты, с которыми многие сталкивались) требует наличия на компьютере и соответствующего программного обеспечения. Если его нет, то объекты теряют все свои преимущества и, в лучшем случае, превратятся в обычные примитивы. А в худшем случае файл может и не открыться в "голом" AutoCAD или объекты могут потеряться.

В мощных системах, наподобие AutoCAD MEP, использование специальных объектов является главным и осознанным. Именно такие объекты делают систему "интеллектуальной". Разработать такую систему очень непросто. Применение именно ObjectARX здесь полностью оправданно.

Но бывают и другие системы, в которых выполняются достаточно простые "рисовальные" задачи, например СПДС GraphiCS. Действия таких систем можно решить и более простыми средствами, без custom-объектов, но их зачем-то туда включают.

Это ситуация, когда, на мой взгляд, программисты излишне увлекаются программированием ради программирования, не задумываясь о пользователях. В сложной задаче гораздо больше вероятность ошибок, вот и обсуждают пользователи на форумах разные глюки разных версий таких программ.

Однако мнение, приведенное в начале страницы высказал человек, отличающийся разумными высказываниями, поэтому мы посмотрим на его точку зрения повнимательней. С одной стороны, R.A.S. совершенно правильно пишет:

Но у многих сформировались какие-то предрассудки, и со словом программа возникают ассоциации  из фильмов типа "Матрица".

Ожидание, что сейчас я нажму на кнопку Пуск и заработает искусственый интеллект, сам раставит приборы,  трубами их соединит, диаметры подберет, воздуховоды разведет, спецификацию составит,  согласует со смежниками, распечатает, сложит чертежи, согласует в экспертизе, получит деньги у заказчика...

Да, хорошо было бы иметь своего электроника (из одноименного кинофильма), посадить его работать, а самому... 

Такие иллюзию могут быть только у тех, кто в жизни ни одной программы не написал. Да ладно программы, хотя бы блок-схемы на бытовом уровне.
"Тут мы согласны!" (С)

Я бы только ещё добавил - подобные иллюзии бывают еще и у программистов, только "навыворот". Некоторые из них, слабо знакомые с проектированием, склонны думать, что они-то и могут разработать такие программы.
 

 Далее R.A.S. развивает мысль:

ruCAD - это электронный кульман в первую очередь. И предназначен он для того, чтобы чертить немного быстрее,
чем "карандашем и линейкой", то бишь в голом автокаде.
...ruCAD все-таки для теток...
Так мы этого и не скрываем! В книге САПР на базе AutoCAD - как это делается, в главе 2, посвященной постановке задачи, мы так и писали:
"Мы будем делать систему низшего уровня (класса "чертилка"). О том, что моделирующие системы нужны не всем, мы только что говорили. А вот "электронных кульманов" еще долго не будет хватать всем желающим. Это означает, что с помощью программ нашей системы пользователь сможет начертить все, что ему нужно, но не сможет "проектировать" в высоком смысле этого слова.

Например, пользователь-электрик сможет начертить любые планы и схемы электрооборудования с использованием соответствующих обозначений элементов и проводни-ков, но не сможет по принципиальной схеме автоматически получить схему соединений, оценить протяженность проводов, выполнить автоматизированную раскладку кабелей по трассам. Это уже задачи, решаемые САПР более высокого уровня, например, ElectricCS".

Здесь был не очень удачный пример именно с электриком, лучше было бы написать про сантехника, а в качестве альтернативы более высокого уровня привести "например, MagiCAD"
.

И термин "тетка" мы ввели в той же главе, чтобы показать, кто будет основными пользователями нашей системы. Поставленную задачу мы выполнили, чему свидетельство эмоциональный отзыв от лица теток (см. здесь). У нее же можно и узнать про "немного быстрее".
 

Далее развивается идея, плавно подводящая к использованию именно ObjectARX:

..как бы уважаемая Дина Завр не превозносила достоинства теток по отношению к "мальчикам", все-таки будущее, да, наверное, и настоящее за ними.
ruCAD они будут использовать только в качестве очередного довеска.

Им нужен другой продукт.
Ну, кто же будет спорить, что будущее за молодежью! Вот с настоящим - хужее.

Пока что основную работу тянут именно старые клячи (Дина сама себя так называет). Увы, у молодежи пока, кроме неотъемлемого будущего, да общих идей, нет ничего - ни знаний, ни опыта. И это у лучшей части молодежи. Упоминавшийся "мальчик", кстати, работает у Дины Завр и хорошо зарабатыват теперь во многом благодаря её опыту (и использованию "чертилки" ruCAD, между прочим). А ведь большинство старых кляч лет через 5 уйдут, и всё свалится на "мальчиков" и "девочек".

 Однако упоминался некий "другой продукт". Смотрим, что же это такое:

 Назрела необходимость в настоящем качественном программном обеспечении, выполненном на ObjectARX, со своими классами,
объектами, методами, свойствами и пр.

Русскоязычном, с базой отечественного оборудования, и самое главное, адаптированом под российские нормы.

И при этом доступном для среднего проектировщика, - в пределах 1500$.

Ну, это прямо как речь политика с постановкой стратегических задач - "назрела необходимость" и т.д. За работу, товарищи!

Однако заметим, что продукты "на ObjectARX, со своими классами, объектами, методами, свойствами и пр." существуют. Например, упомянутый MagiCAD, как раз популярный среди молодежи - как же, там и диаметры можно рассчитать. Но R.A.S. пишет:

Про Магикад отдельная тема, - это не продукт (достаточно посмотреть на сам исполнительный файл MagiCAD.arx размером 1,88 Mb),  пользуются им только потому, что нет ничего другого.

Здравствуйте, я ваша тётя! MagiCAD - это не продукт! Оказыватся, достаточно на размер файла посмотреть!

Я бы никогда не решился такое утверждать. Хотя у меня нет восторгов по поводу концепции MagiCAD, но он сделан так, как сделан. На ObjectARX, между прочим. И объекты есть, и интеллектуальность, и прочее. И возможность создавать базы оборудования.
Вот на российские условия и нормы не ориентирован - это точно. Так "буржуи" его для себя делали.

И вот что далее:

Многоуважаемый, ShaggyDoc, может быть после выпуска Рукада, у Вас появиться желание разработать такой продукт?

Сам мечтал об этом давно, но видимо без знания английского и со средним умом ObjectARX не осилить.

 Опаньки! Уважаемый R.A.S. читал нашу книгу, причем "причем вдоль и поперек". А в книге, между прочим, описывается, как это делается. Начинается с постановки задачи, с расчета трудозатрат (следовательно и стоимости работ), с формирования команды. А заканчиватеся разбором вариантов распространения и продаж. Все цифры близки к реальным. Причем речь там идет о презренной "чертилке" и "электронном кульмане", а не о "интеллектуальной системе.

Да, действительно, гипотетическая "русская САПР" нужна.  Так же, как "русская ОС", "русский Офис". Но зачем призывать к этому нас? Здесь наше желание не имеет никакого значения. Да, если бы собрать в единое место, под единое руководство "сборную команду" из десятка разработчиков (могу даже имена конкретных людей назвать), такую систему можно было бы сделать. Но на десяток основных разработчиков необходимо иметь еще и кучу других специалистов. И без менеджеров не обойдется, и без сеекретарш и прочей челяди.

А знаете, сколько это будет стоить? Или предполагается, что все будут на энтузиазме работать? А кто наших детишков и внучков кормить будет? Да и жены чегой-то всё возражают.

Вот если бы вопрос "не возникнет ли желание" был бы задан руководителем софтверной компании, тогда бы можно было и подумать. Но, между прочим, с учетом того, что мы и физически не вечны, и уж не мальчики.

Пока что имеются софтверные компании, которые разрабатывают продукты, руководствуясь собственными представлениями и бизнес-планами. Нравятся нам их продукты, или не нравятся - не имеет особого значения. "Пипл схавает". И изменить здесь мы ничего не можем - времена, когда рынок был пуст, прошли.

Кстати, о мальчиках. Им действительно хочется чего-то эдакого. Например, хочется работать в 3D. Там ведь такие красивые модели получаются! Желание понятное.
Вот для них мы и делаем ruCAD-3D.
В трехмерном моделировании мальчики, конечно, теток обходят - мозги-то у них свежие, "потерянных кластеров" еще мало, новинки проще осваиваются. Но тут поджидает другая беда - сделана превосходная модель, но не сделана проектная продукция - то есть рутинные плоские чертежи, которые требуются и по ГОСТ, и за которые заплатил заказчик. И начинаются плачи про то, что так красиво сделано, а требуют какую-то "аксонометрию". Вот здесь мальчикам и помогут старые клячи. Именно они подскажут, когда 3D нужно делать, а когда не стоит, как сделать, чтобы 3D-модель была действительно нужным дополнением к плоским чертежам.
Однако завершим тему ObjectARX 
 
Мы использовали ARX в системе BestIA для AutoCAD-14 и AutoCAD-15. При разработке ruCAD также сначала намеревались использовать ObjectARX (и даже написали специальную главу в книге САПР на базе AutoCAD - как это делается. Но потом опомнились, и стали использовать только технологию COM.

В результате программы ruCAD работают на всех существующих версиях AutoCAD и на всех, которые появятся в обозримом будущем. За время жизни ruCAD появилось уже 7 версий AutoCAD и у нас не было никаких проблем с программной совместимостью. Такой политики мы намерены придерживаться и дальше.

Версию 3D мы также намеренно делаем без всяких дополнительных объектов. У нас нет объекта ТРУБА, а есть обычное твердое тело, изображающее трубу. У него нельзя с помощью редактора свойств изменить, например, диаметр или марку стали, но это, на вид обычное тело, помнит о себе эти сведения - тут ObjectARX не нужен. Эта труба не может автоматически изменить конфигурацию (вставить себе отводы, например) при изменении оси трассы. Но её можно просто стереть, а потом одним щелчком мышки построить заново по новой трассе.

- Лёлик, это же неэстетично!
- Зато дешево, надежно и практично! (С)Бриллиантовая рука.

 А продукты "на ObjectARX, со своими классами, объектами, методами, свойствами и пр." пусть делают подросшие мальчики.

Нам бы как-нибудь документацию по ruCAD добить, да завершить начатое.

 

    Содержание раздела «Про ObjectARX»: