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

ADN Club => Revit API => Тема начата: shss от 15-12-2014, 14:56:30

Название: Толщина стены
Отправлено: shss от 15-12-2014, 14:56:30
Добрый вечер!
Создаю новый тип стены и пытаюсь задать толщину стены:
Код - C# [Выбрать]
  1. ...
  2. newWallThknss = wtp.Duplicate("MW 0.2") as WallType;
  3. CompoundStructure cs = newWallThknss.GetCompoundStructure();
  4.  
  5. double layerWidth = 0.2;
  6. int layerIndex = cs.GetFirstCoreLayerIndex();
  7.  
  8. IList<CompoundStructureLayer> cslayers = cs.GetLayers();
  9. foreach (CompoundStructureLayer csl in cslayers) {
  10. cs.SetLayerWidth(layerIndex, layerWidth);
  11. layerIndex++;
  12. }
  13. newWallThknss.SetCompoundStructure(cs);
  14.  
Создается новый тип, но совершенно с другим значением толщины (http://www.screencast.com/t/KSUFq5YeoyGU)
Подумал, что это из-за дюймов поэтому сделал преобразование на 304,8, но в итоге значение (хотя используя простейшие математические вычисления, все должно быть верно) все равно не верное.
Есть ли какие подводные камни?

Спасибо

Название: Re: Толщина стены
Отправлено: Виктор Чекалин от 15-12-2014, 15:45:12
shss,
В целом все делаете правильно. Камней подводных нет. Видимо вы все-таки немного запутались в математических выражениях, хоть они и простейшие.
Значения надо задавать в футах. Толщина стены видимо должна быть 20 сантиметров (0.2 метра). 20 сантиметров = 0.66 футов (http://yandex.ru/yandsearch?text=20%20сантиметров%20в%20футах&clid=1955453&banerid=0101000334).

В подобных случаях, я рекомендую сначала посмотреть что же за значение хранится в Revit для заранее известной толщины стены. Это можно было сделать с помощью CompoundStructureLayer.GetLayerWidth или же воспользоваться утилитой RevitLookup (http://adn-cis.org/revitlookup-issleduem-bazu-dannyix-revit.html).
Например, для стены 250 мм толщиной значение Width слоя равно 0.820209973753281.
Название: Re: Толщина стены
Отправлено: shss от 15-12-2014, 18:24:13
Спасибо, все понятно