Изменение определения блока для одного вставленного блока
Ниже код, который меняет определение блока у конкретной вставки блока. Код просит у пользователя указать вставку блока и изменяет определение блока так, что вставка блока становится вставкой нового определения блока.
Использование 64-битного ActiveX компонента из .NET сборки
Вопрос:
Я использовал утилиты ADN (ADN utilities), которые включают несколько ActiveX компонентов. Теперь я портирую мой проект на 64-разрядную Windows и скачал 64-разрядные версии этих компонентов, однако я не могу поместить их на мою форму в Visual Studio.
Ответ:
Visual Studio - 32-разрядное приложение даже на 64-разрядной операционной системе, и она не поддерживает 64-разрядные ActiveX компоненты в Дизайнере форм (Form Designer). Но вы можете создать компонент программно в вашем коде.
Как поместить текст в нужное место, если текст имеет выравнивание?
Мы хотим поместить текст в определенное место с выравниванием СЦ (Середина-Центр). Но текст не помещается в нужно место несмотря на то, что выравнивание задано правильно.
Если вы хотите установить местоположение текста путем изменения его точка выравнивания, пожалуйста, воспользуйтесь кодом:
oTextEnt.AlignmentPoint = newPoint
Как найти все вставки динамического блока
В предыдущей статье Баладжи Рамамурти (Balaji Ramamoorthy) показал нам как найти имя динамического блока по одной из вставок блока. Эта статья показывает нам как двигаться в противоположном направлении – найти все вставки динамического блока.
AutoCAD 2014 API (.NET API)
Филипп Леефсма (Philippe Leefsma) создал презентацию (DevTV) о новшествах в AutoCAD 2014 API. Вы можете скачать её отсюда (на английском).
Как в своём коде используя AutoCAD .NET API переопределить команду ССЫЛРЕД (_REFEDIT)?Автор: Александр Ривилис
Как в своём коде используя AutoCAD .NET API переопределить команду ССЫЛРЕД (_REFEDIT)?
Вопрос: Мне нужно в своем коде переопределить команду _REFEDIT так, чтобы в некоторых случаях (например, имя чертежа содержало строку Test) вызывался мой код, а в некоторых стандартная команда _REFEDIT. Я проверил, что для команды ОТРЕЗОК (_LINE) работает такой код:
eInvalidInput при создании штриховки с пользовательским шаблоном
Если метод SetHatchPattern возбуждает исключение eInvalidInput при создании пользовательского шаблона штриховки, есть несколько моментов, которые стоит проверить:
Как установить путь к двум и более каталогам конфигурации принтеров (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:
.NET DllImport метода определенного в C++
Предположим, что есть функция voidMyFunc() на C++, которую нужно вызвать из .NET. Вызов DllImport может распознавать только функции, объявленные с модификатором dllexport.
ObjectId.GetObject()
Большинство примеров для AutoCAD .NET API созданы с использованием метода Transaction.GetObject() для открытия объектов, содержашихся в базе чертежа. Код, который использует этот метод, обычно выглядит приблизительно так:
Как получить идентификаторы всех объектов (ObjectId), вставленных через буфер обмена.Автор: Александр Ривилис
Вопрос: Как средствами AutoCAD .NET API получить массив идентификаторов объектов, вставленных при помощи команды ВСТБУФЕР (_PASTECLIP).
Ответ: Для этой цели следует подписаться на два типа событий:
1) события начала и завершения команды.
2) события базы данных (добавление / удаление объекта в базу).
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'
Ответ:
Чтение Таблицы Свойств Блока для динамического блока
Для динамического блока мы можем создать Таблицу Свойств Блока, которая определяет и управляет параметрами и свойствами. Она доступна, когда запущена команда БЛОКРЕД (BEDIT) для динамического блока, как показано ниже.
Чтение и изменение настроек AutoCAD (.NET)
Изменение настроек AutoCAD возможно при помощи прямого изменения реестра или с использованием ActiveX объекта Preferences. Заметим, что прямое изменение реестра не влияет на настройки текущей сессии AutoCAD. ActiveX объект Preferences
Точки останова в пользовательской форме не обрабатываются при отладке .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 .
Список определений подложек DWF в чертеже
Каждое определение DWF-подложки хранится в словаре именованных объектов (NOD) в словаре с именем "ACAD_DWFDEFINITIONS". Следующий код показывает как можно пройтись по словарю "ACAD_DWFDEFINITIONS" и распечатать все определения всех DWF-подложек.
Создание новой ViewTableRecord с камерой и целью
Этот пример на C# запрашивает точки цели и камеры. Положение камеры может быть вычислено как сумма вектора направления ViewTableRecord и точки цели.
Преобразование координат точки из пространства Листа в пространство Модели средствами AutoCAD .NET API
Недавно я попытался найти какую-нибудь информацию о том, как преобразовать координаты точки из пространства Листа в пространство Модели и был шокирован тем, что нет простого кода для этого!!! Возможно, я упустил что-то очевидное, тем не менее, я решил создать свой собственный код и поделиться им с вами.
Получение размерных ограничений и их ассоциативных свойств в .NET
Вот полезный код для тех из вас, кто работает с .NET Associative API. Ниже пример на C# показывает как выполнить дамп всех размерных ограничений в текущем пространстве (Модели или Листа). Он так же показывает как по объектам, накладывающим ограничения найти зависимые примитивы и управляющие ими ассоциативные параметры.
Получение нормали к грани 3D-тела с помощью BREP .NET API
Следующая C#-статья иллюстрирует как получить нормаль к грани 3D-тела с помощью функционала BRep .NET API: