Ejemplo n.º 1
0
        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);
        }