ADN Club > Revit API
Формирование разделенной поверхности стен Revit API
RomanShib:
Я пишу программу, которая формирует разделенную поверхность, используя ссылку на грань формы. Но при применении к стенам(искомая строка с выбором категории выделена ниже), программа ничего не делает. Как применить данную программу только ко всем стенам в проекте?
--- Код - C# [Выбрать] --- public class Command : IExternalCommand { public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication app = commandData.Application; Document doc = app.ActiveUIDocument.Document; Autodesk.Revit.Creation.Application creApp = app.Application.Create; try { FilteredElementCollector forms = new FilteredElementCollector(doc); forms.OfCategory(BuiltInCategory.OST_CurtainGridsWall); // СТРОКА С ВЫБОРОМ КАТЕГОРИИ using (Transaction tx = new Transaction(doc)) { tx.Start("Create Devided Surface"); foreach (Form form in forms) { FamilyItemFactory factory = doc.FamilyCreate; Options options = creApp.NewGeometryOptions(); options.ComputeReferences = true; options.View = doc.ActiveView; GeometryElement element = form.get_Geometry(options); foreach (GeometryObject geoObject in element) // 2013 { Solid solid = geoObject as Solid; foreach (Face face in solid.Faces) { if (face.Reference != null) { if (null != face) { } } } } } tx.Commit(); } return Result.Succeeded; } catch (Exception ex) { message = ex.Message; return Result.Failed; } } }
Александр Ривилис:
RomanShib,
Приветствую на форуме!
Напоминаю правило форматирования кода на нашем форуме (у меня в подписи)!
Ihar:
OST_CurtainGridsWall - это не витражная стена, а разрезка стены. Вам нужно использовать OST_Walls а потом уже из них выбирать витражные стены. Не совсем понятно что потом вы хотите с этими стенами сделать(
RomanShib:
Задумка такая, что я хочу накладывать моделирующую штриховку на стены в проекте. Для начала на все, а потом только на выбранные.
Я прочитал, что для этого сначала нужно разделить поверхность, а уже потом накладывать штриховку.
Только начинаю свое знакомство с Revit, поэтому возможно я что-то не так делаю.((
Ihar:
Штриховка не на стену накладывается, а на материал. Нужно получить стену, затем выбрать ее слои методом GetCompoundStructure(), потом получить слой GetLayers, а у слоя есть свойство MaterialId. Можно заменить на другой материал или отредактировать тот что есть, добавить моделирующую штриховку.
Делить можно витражные стены на панели или обычные стены можно делить на части, а потом уже части делить на участки, которым потом можно отдельные материалы задавать.
Навигация
Перейти к полной версии