Клонирование твердотельного объекта
Вопрос: Для клонирования твердотельных объектов мы использовали вот такой трюк:
- static public Solid Clone( this Solid solid )
- {
- if( solid == null )
- {
- return null;
- }
- return BooleanOperationsUtils
- .ExecuteBooleanOperation( solid, solid,
- BooleanOperationsType.Union );
- }
С помощью этого метода мы копировали твердотельный объект и в дальнейшем использовали его для создания или редактирования объекта DirectShape. Этот способ работает замечательно в большинстве случаев. Однако на некоторых объектах DirectShape возникает исключение:
- Исключение: "Failed to perform the Boolean operation for the two solids. Error: Autodesk.Revit.Exceptions.InvalidOperationException: Failed to perform the Boolean operation for the two solids". НЕ удается выполнить булевую операцию для двух твердотельных объектов.
Буду очень признателен, если вы подскажете как это можно исправить.
Ответ: Вы заметили, что в Revit 2016 появился новый метод SolidsUtils.Clone()?
Думаю, это должно решить вашу проблему.
Ответ: Спасибо. Метод действительно работает без проблем. Но он работает в 2016 версии. А как быть с 2015?
Ответ: Рад слышать, что это нововведение в API решает проблему.
Для Revit 2015 и более ранних версий я бы рекомендовал вместо того чтобы объединять исходный твердотельный объект с самим собой, может быть объединить его с небольшим кубом (1 х 1 должно сработать для многих фигур), который находится внутри исходного твердотельного объекта.
Ответ: Спасибо!
Могу подтвердить, что этот способ действительно работает в Revit API 2015.
Обсуждение: http://adn-cis.org/forum/index.php?topic=2740
Опубликовано 27.05.2015