ADN Open CIS
Сообщество программистов Autodesk в СНГ

18/06/2013

Как установить путь к двум и более каталогам конфигурации принтеров (PrinterConfigPath) при помощи AutoCAD .NET API?Автор: Александр Ривилис

Как установить путь к двум и более каталогам конфигурации принтеров (PrinterConfigPath) при помощи AutoCAD .NETAPI?

Вопрос: Я пытаюсь установить два пути к каталогам конфигурации принтеров, но AutoCAD завершается с FATAL Error:

Dim pref As AcadPreferences = Autodesk.AutoCAD.ApplicationServices.Application.Preferences
pref.Files.PrinterConfigPath = "T:\wPlotters;T:\Plotters"

Если указан только один каталог, то всё работает нормально, а при двух и больше – аварийное завершение AutoCAD.

Ответ: Предыдущие версии AutoCAD не позволяли использовать более одного каталога в качестве пути доступа к файлам конфигурации принтеров. Поэтому метод, использующий AcadPreferences, не работает. Вместо него можно использовать метод чтения/установки переменной окружения PrinterConfigDir при помощи функций acedGetEnv/acedSetEnv (из состава ObjectARX). Для того, чтобы воспользоваться ими в AutoCAD .NET API используем P/Invoke. Ниже приведён код на C# и VB.NET:

Опубликовано 18.06.2013     Читать далее >>>
12/06/2013

.NET DllImport метода определенного в C++

Предположим, что есть функция voidMyFunc() на C++, которую нужно вызвать из .NET. Вызов DllImport может распознавать только функции, объявленные с модификатором dllexport.

Опубликовано 12.06.2013     Читать далее >>>
10/06/2013

ObjectId.GetObject()

Большинство примеров для AutoCAD .NET API созданы с использованием метода Transaction.GetObject() для открытия объектов, содержашихся в базе чертежа. Код, который использует этот метод, обычно выглядит приблизительно так:

Опубликовано 10.06.2013     Читать далее >>>
10/06/2013

Как получить идентификаторы всех объектов (ObjectId), вставленных через буфер обмена.Автор: Александр Ривилис

Вопрос: Как средствами AutoCAD .NET API получить массив идентификаторов объектов, вставленных при помощи команды ВСТБУФЕР (_PASTECLIP).

Ответ: Для этой цели следует подписаться на два типа событий:

1) события начала и завершения команды.

2) события базы данных (добавление / удаление объекта в базу).

Опубликовано 10.06.2013     Читать далее >>>
07/06/2013

System.IO. FileNotFoundException: Невозможно загрузить файл или сборку 'Autodesk.AutoCAD. Interop, Version=18.0.0.0

Вопрос:

Моё .NET-приложение ссылается на версию Autodesk.AutoCAD.Interop 18.0.0.0 сборки из ObjectARX 2010 SDK, так что он должен работать с AutoCAD 2010, 2011 и 2012. К сожалению, если мое приложение выполняется на компьютере, где установлен только AutoCAD 2011 я получаю FileNotFoundException

System.IO.FileNotFoundException: Невозможно загрузить файл или сборку 'Autodesk.AutoCAD.Interop, Version=18.0.0.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b' или один из зависимых от них компонентов. Не удается найти указанный файл.
Имя файла: 'Autodesk.AutoCAD.Interop, Version=18.0.0.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b'

Ответ:

Опубликовано 07.06.2013     Читать далее >>>
30/05/2013

Чтение Таблицы Свойств Блока для динамического блока

Для динамического блока мы можем создать Таблицу Свойств Блока, которая определяет и управляет параметрами и свойствами. Она доступна, когда запущена команда БЛОКРЕД (BEDIT) для динамического блока, как показано ниже.

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Чтение и изменение настроек AutoCAD (.NET)

Изменение настроек AutoCAD возможно при помощи прямого изменения реестра или с использованием ActiveX объекта Preferences. Заметим, что прямое изменение реестра не влияет на настройки текущей сессии AutoCAD. ActiveX объект Preferences

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Точки останова в пользовательской форме не обрабатываются при отладке .NET - приложения для AutoCAD 2012 в Visual Studio 2010

Вопрос:

Я пытаюсь создать .NET – приложение для AutoCAD 2012 в Visual Studio 2010. Точки останова в общих классах обрабатываются (то есть при отладке на них происходит остановка), а вот в пользовательских формах не обрабатываются. Я прочитал эту статью: http://through-the-interface.typepad.com/through_the_interface/2010/04/hitting-breakpoints-in-net-class-libraries-while-debugging-with-visual-studio-2010.html. Но она не помогла. Я пробовал и “Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(oForm)” и “oForm.ShowDialog()”, но результат один и тот же. Что еще можно сделать?

Ответ:

Отладчик VS2010 достаточно плохо работает с фиберами (fiber); решение заключается в том, чтобы отключить фибера в AutoCAD .

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Список определений подложек DWF в чертеже

Каждое определение DWF-подложки хранится в словаре именованных объектов (NOD) в словаре с именем "ACAD_DWFDEFINITIONS". Следующий код показывает как можно пройтись по словарю "ACAD_DWFDEFINITIONS" и распечатать все определения всех DWF-подложек.

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Создание новой ViewTableRecord с камерой и целью

Этот пример на C# запрашивает точки цели и камеры. Положение камеры может быть вычислено как сумма вектора направления ViewTableRecord и точки цели.

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Преобразование координат точки из пространства Листа в пространство Модели средствами AutoCAD .NET API

Недавно я попытался найти какую-нибудь информацию о том, как преобразовать координаты точки из пространства Листа в пространство Модели и был шокирован тем, что нет простого кода для этого!!! Возможно, я упустил что-то очевидное, тем не менее, я решил создать свой собственный код и поделиться им с вами.

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Получение размерных ограничений и их ассоциативных свойств в .NET

Вот полезный код для тех из вас, кто работает с .NET Associative API. Ниже пример на C# показывает как выполнить дамп всех размерных ограничений в текущем пространстве (Модели или Листа). Он так же показывает как по объектам, накладывающим ограничения найти зависимые примитивы и управляющие ими ассоциативные параметры.

Опубликовано 30.05.2013     Читать далее >>>
30/05/2013

Получение нормали к грани 3D-тела с помощью BREP .NET API

Следующая C#-статья иллюстрирует как получить нормаль к грани 3D-тела с помощью функционала BRep .NET API:

Опубликовано 30.05.2013     Читать далее >>>
29/05/2013

Получение информации о гранях PolyFaceMesh в .NET

Это .NET версия этой статьи

Обычно достаточно просто мигрировать из кода ObjectARX в код AutoCAD .NET API, так как это просто обертки над ARX API. Вам нужно убрать префикс AcDb из имён классов базы данных, использовать foreach вместо функции создающей итератор, использовать транзакции, и большая часть следующего кода будет готова :)

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Пересечение между плоскостью и кривой в .NET

Вот шаги, которые позволят найти точки пересечения между плоскостью и кривой (на основе объяснения данного моим коллегой Krishnamurthy Kalvai) . Я представляю образец кода, который реализует эти шаги, чтобы найти пересечение эллипса и плоскости.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Ошибка PInvokeStackImbalance

Вопрос:

Я пытаюсь с помощью P/Invoke вызвать acedPostCommand() чтобы прервать текущую команду, а получаю ошибку PInvokeStackImbalance при вызове acedPostCommand внутри моего .NET кода:

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Ошибка "Проблема при загрузке приложения " на 64-разрядной Windows при использовании GetInterfaceObject

Вопрос:

У меня есть AutoCAD .NET сборка, которая является ActiveX сервером, что позволяет мне управлять сборкой из внешнего приложения. Это хорошо работает в 32-разрядной Windows, но в 64-разрядной я получаю ошибку «Проблема при загрузке приложения» ("Problem in loading application") когда использую метод GetInterfaceObject() для доступа к моему ActiveX серверу. Я проверил, что сборка загружена, так что непонятно в чем ошибка...

Опубликовано 29.05.2013     Читать далее >>>
24/05/2013

Отображение модальных и немодальных форм в AutoCAD .NET

Еще один из примеров ошибок начинающих.

Иногда то что мы уже знаем становится у нас на пути. Если мы хотим показать форму в .NET, мы используем Form.ShowDialog. Правильно?

Опубликовано 24.05.2013     Читать далее >>>
24/05/2013

Отключение обработчиков событий

Тема на форуме AutoCAD .NET напомнила мне ситуацию, когда я потратил массу времени на отладку при разработке моего приложения DigSigStamp. Всё было замечательно, пока Kean не почистил мой код для отправки на сайт Labs. Тогда мои обработчики событий неожиданно перестали вызываться при повторном запуске моего кода...

Опубликовано 24.05.2013     Читать далее >>>
24/05/2013

Определение имени блока по вставке блока

Определение имени блока из вставки блока становится более сложным делом если этот блок динамический. Когда пользователь модифицирует динамический блок AutoCAD сначала создает анонимный блок, а затем создаёт ссылку на этот анонимный блок в этом чертеже. Ниже приведён код, который учитывает этот сценарий и получает имя основного (а не анонимного) блока...

Опубликовано 24.05.2013     Читать далее >>>