private Base RebarToSpeckle(DB.Structure.Rebar revitRebar) { // get rebar centerline curves using transform var bars = revitRebar.GetCenterlineCurves(true, true, true, MultiplanarOption.IncludeOnlyPlanarCurves, revitRebar.NumberOfBarPositions - 1); var curves = new List <ICurve>(); RebarShapeDrivenAccessor accessor = null; if (revitRebar.IsRebarShapeDriven()) { accessor = revitRebar.GetShapeDrivenAccessor(); } for (int i = 0; i < bars.Count; i++) { var bar = (accessor != null) ? bars[i].CreateTransformed(accessor.GetBarPositionTransform(i)) : bars[i]; curves.Add(CurveToSpeckle(bar)); } var speckleRebar = new RevitRebar(); speckleRebar.host = revitRebar.GetHostId().ToString(); speckleRebar.type = Doc.GetElement(revitRebar.GetTypeId()).Name; speckleRebar.curves = curves; speckleRebar.shapes = revitRebar.GetAllRebarShapeIds().Select(o => o.ToString()).ToList(); // freeform rebar with bent workshop has multiple shapes speckleRebar.volume = revitRebar.Volume; GetAllRevitParamsAndIds(speckleRebar, revitRebar); return(speckleRebar); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var uiapp = commandData.Application; var uidoc = uiapp.ActiveUIDocument; var query = new RebarQuery(uidoc); var rebar = query.Prompt(); if (rebar == null) { return(Result.Cancelled); } var revitRebar = new RevitRebar(rebar); TaskDialog.Show("dev", $"Масса 1пм: {revitRebar.MassPerUnitLength} кг/м\nДиаметр стержня: {revitRebar.Diameter} мм\n" + $"Класс арматуры: {revitRebar.Class}\nПолная длина стержня: {revitRebar.FullLength} мм"); return(Result.Succeeded); }