//NOTE: there is not API method to create new ceiling
        //a possible workaround is to duplicate an existing one and edit its profile

        private RevitCeiling CeilingToSpeckle(DB.Ceiling revitCeiling)
        {
            var profiles = GetProfiles(revitCeiling);

            var speckleCeiling = new RevitCeiling();

            speckleCeiling.type    = Doc.GetElement(revitCeiling.GetTypeId()).Name;
            speckleCeiling.outline = profiles[0];
            if (profiles.Count > 1)
            {
                speckleCeiling.voids = profiles.Skip(1).ToList();
            }
            speckleCeiling.offset = GetParamValue <double>(revitCeiling, BuiltInParameter.CEILING_HEIGHTABOVELEVEL_PARAM);
            speckleCeiling.level  = ConvertAndCacheLevel(revitCeiling, BuiltInParameter.LEVEL_PARAM);

            GetAllRevitParamsAndIds(speckleCeiling, revitCeiling, new List <string> {
                "LEVEL_PARAM", "CEILING_HEIGHTABOVELEVEL_PARAM"
            });

            GetHostedElements(speckleCeiling, revitCeiling);

            var mesh = new Geometry.Mesh();

            (mesh.faces, mesh.vertices) = GetFaceVertexArrayFromElement(revitCeiling, new Options()
            {
                DetailLevel = ViewDetailLevel.Fine, ComputeReferences = false
            });

            speckleCeiling["@displayMesh"] = mesh;

            return(speckleCeiling);
        }
Exemple #2
0
        private RevitCeiling CeilingToSpeckle(DB.Ceiling revitCeiling)
        {
            var profiles = GetProfiles(revitCeiling);

            var speckleCeiling = new RevitCeiling();

            speckleCeiling.type    = Doc.GetElement(revitCeiling.GetTypeId()).Name;
            speckleCeiling.outline = profiles[0];
            if (profiles.Count > 1)
            {
                speckleCeiling.voids = profiles.Skip(1).ToList();
            }
            speckleCeiling.offset = GetParamValue <double>(revitCeiling, BuiltInParameter.CEILING_HEIGHTABOVELEVEL_PARAM);
            speckleCeiling.level  = ConvertAndCacheLevel(revitCeiling, BuiltInParameter.LEVEL_PARAM);


            GetAllRevitParamsAndIds(speckleCeiling, revitCeiling, new List <string> {
                "LEVEL_PARAM", "CEILING_HEIGHTABOVELEVEL_PARAM"
            });

            GetHostedElements(speckleCeiling, revitCeiling);
            speckleCeiling.displayMesh = GetElementDisplayMesh(revitCeiling, new Options()
            {
                DetailLevel = ViewDetailLevel.Fine, ComputeReferences = false
            });
            //Report.Log($"Converted BuildingPad {revitCeiling.Id}");
            return(speckleCeiling);
        }