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

26/08/2013

Динамически блоки с операцией Растянуть (Stretch)

Средствами API невозможно создать динамический блок с операцией Растяни.

Одним из возможных путей обойти это ограничение – это создать набор чертежей с динамическими блоками. Эти чертежи должны быть созданы с использованием пользовательского интерфейса AutoCAD. Такие рисунки можно вставить при необходимости в любой другой чертеж с использованием AutoCAD API.

Чтобы создать такие чертежи при помощи пользовательского интерфейса AutoCAD нужно сделать следующее:

1) Откройте новый чертеж и создайте динамический блок (назовём его «Дверь») с несколькими операциями Растяни.

2) Выполните команду ПБЛОК (WBLOCK) в редакторе AutoCAD, выберите «Дверь» из раскрывающегося списка и укажите путь к новому чертежу (назовём его  DoorDynBlock.dwg).

Динамический блок будет записан в файл "DoorDynBlock.dwg" как отдельный элемент.

Новый чертеж ("DoorDynBlock.dwg") может быть вставлен в любой другой чертеж как динамический блок с операциями Растянуть.

Ниже пример кода и пример чертежа:

Код - C#: [Выделить]
  1. [CommandMethod("InsertDynBlock", CommandFlags.Session)]
  2. public void InsertDynBlockMethod()
  3. {
  4.     try
  5.     {
  6.         Document activeDoc
  7.                 = Application.DocumentManager.MdiActiveDocument;
  8.         using (DocumentLock dl = activeDoc.LockDocument())
  9.         {
  10.             Database db = activeDoc.Database;
  11.             string dynBlockDwgPath
  12.                     = @"C:\Temp\DynBlockWithStretchActions.dwg";
  13.  
  14.             using (Database dynBlkDb = new Database(false, true))
  15.             {
  16.                 dynBlkDb.ReadDwgFile(
  17.                                         dynBlockDwgPath,
  18.                                         System.IO.FileShare.Read,
  19.                                         true,
  20.                                         ""
  21.                                     );
  22.                 db.Insert("TestDyn", dynBlkDb, true);
  23.             }
  24.         }
  25.     }
  26.     catch (System.Exception ex)
  27.     {
  28.         Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.Message);
  29.     }
  30. }

 

Загрузить файл DynBlockWithStretchActions.dwg

Источник: http://adndevblog.typepad.com/autocad/2013/02/dynamic-block-with-stretch-action.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=188

Опубликовано 26.08.2013