Вставка параметрического блока с передачей параметров

Автор Тема: Вставка параметрического блока с передачей параметров  (Прочитано 4391 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Дмитрий ПевневАвтор темы

  • ADN OPEN
  • Сообщений: 1
  • Карма: 0
Здравствуйте. Имеется виндовс приложение написанное на C#, которое получает параметры из БД MS Access, также имеется параметрический блок с геометрическими и размерными зависимостями, размерные зависимости заданы через переменные, в таблице свойств блока задано несколько наборов параметров которые нужно изменять.

Что нужно сделать: при нажатии на кнопку должен вставляться блок, в который передаются значения переменных из С#. Вопрос как это реализовать?

Вот этот код открывает AutoCAD и даёт доступ к командной строке, в которую можно передавать команды
Код - C# [Выбрать]
  1. private void button3_Click(object sender, EventArgs e) //открытие Autocad
  2.         {
  3.             const string progID = "AutoCAD.Application.23";
  4.  
  5.  
  6.             AcadApplication acApp = null;
  7.  
  8.             try
  9.  
  10.             {
  11.                 acApp = (AcadApplication)Marshal.GetActiveObject(progID);
  12.             }
  13.             catch
  14.  
  15.             {
  16.                 try
  17.                 {
  18.  
  19.                     Type acType =  Type.GetTypeFromProgID(progID);
  20.                     acApp = (AcadApplication)Activator.CreateInstance(acType, true);
  21.                 }
  22.  
  23.                 catch
  24.  
  25.                 {
  26.  
  27.                     MessageBox.Show( "Cannot create object of type \"" +  progID + "\"");
  28.  
  29.                 }
  30.  
  31.             }
  32.  
  33.             if (acApp != null)
  34.  
  35.             {
  36.            
  37.                
  38.  
  39.                 acApp.Visible = true;
  40.  
  41.                
  42.                 acApp.ActiveDocument.SendCommand(" (COMMAND \"_insert\" \"isp1.dwg\" \"0,0\" 1 1 0 \"\") ");
  43.  
  44.  
  45.             }
  46.         }

AutoCAD 2019
Visual Studio 2015
Подключено всё это дело с использованием библиотек ObjectARX (Autodesk.AutoCAD.Interop.Common.dll, Autodesk.AutoCAD.Interop.dll)
« Последнее редактирование: 15-04-2020, 13:39:01 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Дмитрий Певнев,
1. Приветствую на нашем форуме!
2. Прочитайте у меня в подписи как следует форматировать код для форума и в дальнейшем соблюдайте это правило.
3. Спойлер не нужен для кода, который короче 300 строк.
4. Эти библиотеки не являются частью ObjectARX. Чтобы быть точным ObjectARX - это только "native" C++ и как результат - arx/dbx/crx-приложение, загружаемое внутрь AutoCAD
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Так как раздел форума был выбран не правильно, то я его перенёс в соответствующий.
Теперь по поводу алгоритма. Будем считать, что необходимо отдельное exe-приложение, которое запускает AutoCAD и вставляет блок (хотя я противник такого метода, так как он имеет кучу подводных камней, связанных с технологией COM/ActiveX, которая единственно применима в этом случае).
1. Для вставки блока из внешнего файла есть метод InsertBlock:
https://knowledge.autodesk.com/ru/search-result/caas/CloudHelp/cloudhelp/2017/RUS/AutoCAD-ActiveX/files/GUID-17F86FDD-B7FC-4F43-9F16-B4958F73A66D-htm.html
2. Для получения параметров динамического блока есть метод GetDynamicBlockProperties:
https://knowledge.autodesk.com/ru/search-result/caas/CloudHelp/cloudhelp/2016/RUS/AutoCAD-ActiveX/files/GUID-16C8768B-2533-45FF-9CFF-FF864AC78202-htm.html

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение