(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Импорт координат из текстового файла в чертёж nanoCAD на MultiCAD .NET API

Источник: habrahabr
ISL

В предыдущей статье мы писали о том, как импортировать точки из внешнего текстового файла в .dwg чертеж при помощи классического .NET API. В данной статье мы рассмотрим особенности решения этой же задачи на кросс-САПР-платформенном MultiCAD .NET API и продемонстрируем, как построенное приложение может быть запущено в nanoCAD и в AutoCAD без изменения настроек проекта и перекомпиляции.

Создание и настройка рабочего проекта

Проект создается точно также как и для предыдущего примера:

  • Project type: Visual C#
  • Template: Class Library

Все, что необходимо сделать - это всего лишь подключить библиотеку mapimgd.dll, входящую в комплект поставки nanoCAD SDK, начиная с версии 4.0. Конфигурация проекта остается неизменной для разработки приложений, запускаемых как на платформе nanoCAD, так и на других системах, в частности, AutoCAD. Если в предыдущем проекте было две конфигурации - Debug NCAD и Debug ACAD, то в этом будет одна - Debug MultiCAD.

Импорт координат и добавление примитивов в базу данных чертежа

Структура приложения и общий код (форма приложения, организация предварительного просмотра, импорт координат из файла) остаются прежними, классы же Importer и Creator, код которых зависил от конкретной платформы, будут изменены.

Так, метод Creator.createPoints(), отвечающий за непосредственное создание точек для входного массива координат теперь выглядит следующим образом:

public static void CreatePoints(List coords) { for(int i = 0; i<coords.Count-2; i += 3) { // Create a point object DbPoint point = new DbPoint(); // Set the position for the point object point.Position = new Point3d(coords[i], coords[i + 1], coords[i + 2]); // Add the point entity to the current document point.DbEntity.AddToCurrentDocument(); } }

Напомним, как выглядела процедура создания точек ранее, при использовании классического .NET API:

public static void CreatePoints(List coords) { DocumentCollection dm = Platform.ApplicationServices.Application.DocumentManager; Database db = dm.MdiActiveDocument.Database; using (db) { // Create a transaction using (Transaction tr = db.TransactionManager.StartTransaction()) { // Get the table block record for current drawing space BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); for (int i = 0; i < coords.Count - 2; i += 3) { // Create a point object DBPoint point = new DBPoint(new Point3d(coords[i], coords[i + 1], coords[i + 2])); // Append the point to the database btr.AppendEntity(point); // Add the object to the transaction tr.AddNewlyCreatedDBObject(point, true); } btr.Dispose(); // Commit the transaction tr.Commit(); } } }

Очевидно, что объем кода, необходимого для реализации этого метода, значительно сократился: для создания объекта, задания координат и добавления в базу потребовалось всего три строки кода! И это еще одна отличительная особенность MultiCAD.NET: помимо решения своей основной задачи - обеспечения кроссплатформенности приложений - MultiCAD.NET API позволяет сделать код приложения гораздо более компактным. Это достигается за счет того, что многие вспомогательные операции уже "встроены" в основную функциональность. 

Буквально ненадолго остановимся на процедуре добавления точек на чертеж. Не вдаваясь в подробности (это тема отдельной статьи), заметим, что в MultiCAD API реализовано три уровня геометрии для графических объектов: чистая "математическая" геометрия, геометрия с добавлением основных свойств примитивов: цвет, толщина и стиль линий и др., и уровень объектов базы данных. В нашем случае мы создали стандартный геометрический объект DbPoint, задали его геометрические параметры и использовали свойство DbEntity для перехода на уровень базы данных и добавления объекта на чертеж. При этом нет необходимости определять текущее пространство чертежа: метод AddToCurrentDocument() автоматически определит, какой документ является текущим, и какое рабочее пространство используется в данной момент.

Загрузка приложения в nanoCAD и AutoCAD

Теперь, когда код скомпилирован и .NET-сборка для приложения построена, самое время поговорить о вариантах запуска приложения под различными системы.

  • Загрузка приложений для среды nanoCAD осуществляется стандартными командами NETLOAD или APPLOAD,
  • Для запуска приложений в системах, отличных от nanoCAD, требуется использование специального приложения-адаптера (Object Enabler). Например, для AutoCAD необходимо вначале загрузить приложение MultiCAD Enabler for AutoCAD (доступно после регистрации в Клубе разработчиков nanoCAD), а затем и скомпилированное приложение - командой NETLOAD.

Исходный код проекта доступен здесь.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 14.08.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM Rational Functional Tester Floating User License
NauDoc Enterprise 10 рабочих мест
SAP Crystal Reports XI R2 Dev 2006 INTL WIN NUL License (Version 11)
Quest Software. TOAD Professional Edition
Traffic Inspector GOLD 5 Учетных записей
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование в AutoCAD
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Corel DRAW - от идеи до реализации
Новые программы для Windows
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100