(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
ESET NOD32 Smart Security - продление лицензии на 1 год на 3ПК, Ключ
Panda Global Protection - ESD версия - на 1 устройство - (лицензия на 1 год)
TeeGrid VCL/FMX Source Code single license
Pinnacle Studio 21 Ultimate. Электронный ключ.
Microsoft System Center Standard Core Sngl License/Software Assurance Pack OLP 2Licenses NoLevel CoreLic Qualified
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование в AutoCAD
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Мастерская программиста
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как извлечь рисунки из файла Word (41)
Вообще-то есть еще способ - сделать в Word-е Copy рисунка, открыть Microsoft Photo Editor и там:...
 
AutoCAD помощь чайнику (317)
Здравствуйте, Я только начал осваивать AutoCAD. Слышал такое определение как лимиты чертежа,...
 
Corel. Сохранение файла в старом формате. (27)
у меня есть горящий вопрос по Корелу и никто мне не может дать на него ответ. Я работаю в...
 
Рисунок/разработка персонажа (1)
Приветик всем. Увидел здесь...
 
Удлиннитель USB (3)
Подскажите, где продаются хорошие USB удлиннители по витой паре? Нужен качественный и недорогой...
 
 
 



    
rambler's top100 Rambler's Top100