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

05/11/2013

Обновление структуры слоев стены

Вопрос: Я пытаюсь обновить слои стены с помощью API. Но столкнулся с проблемой при изменении толщины слоя стены. Что же я делаю не так?

Ответ: В разъяснении технической поддержки ADN на проблему Изменения в структуре слоев стены не применяются к типоразмеру стены, которое доступно только членам ADN, говорится, что метод GetCompoundStructure возвращает копию структуры слоев. Соответственно изменения, сделанные на структуре стены, которые получены с помощью этого метода, не отражаются на оригинальном типоразмере стены. Для того чтобы применить изменения к типоразмеру, необходимо вызвать метод SetCompoundStructure.

Ниже представлен пример рабочего кода, в котором используется метод CompoundStructure. SetLayerWidth:

Код - C#: [Выделить]
  1.   UIApplication uiApp = commandData.Application;
  2.   UIDocument uiDoc = uiApp.ActiveUIDocument;
  3.   Document doc = uiDoc.Document;
  4.  
  5.   Transaction trans = new Transaction( doc );
  6.   trans.Start( "changeLayerWidth" );
  7.  
  8.   Reference ref1 = uiDoc.Selection.PickObject(
  9.     ObjectType.Element, "Pick a wall" );
  10.  
  11.   ElementId id = ref1.ElementId;
  12.   Element elem = doc.get_Element( id );
  13.   Wall wall = elem as Wall;
  14.   if( wall == null )
  15.     return Result.Failed;
  16.  
  17.   CompoundStructure cs
  18.     = wall.WallType.GetCompoundStructure();
  19.  
  20.   double layerWidth = 0.2;
  21.   int layerIndex = cs.GetFirstCoreLayerIndex();
  22.  
  23.   IList<CompoundStructureLayer> cslayers
  24.     = cs.GetLayers();
  25.  
  26.   foreach( CompoundStructureLayer csl in cslayers )
  27.   {
  28.     cs.SetLayerWidth( layerIndex, layerWidth );
  29.     layerIndex++;
  30.   }
  31.   wall.WallType.SetCompoundStructure( cs );
  32.   trans.Commit();

Я проверил работоспособность кода на предмет изменения толщины слоя стены. Все работает замечательно.

Источник: http://thebuildingcoder.typepad.com/blog/2012/03/updating-wall-compound-layer-structure.html

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

Опубликовано 05.11.2013
Отредактировано 05.11.2013 в 02:16:55