Revit.SDK.Samples.GeometryCreation_BooleanOperation.CS.AnalysisVisualizationFramework.PaintSolid C# (CSharp) Méthode

PaintSolid() public méthode

Paint a solid in a new named view
public PaintSolid ( Solid s, String viewName ) : void
s Solid solid
viewName String Given the name of view
Résultat void
        public void PaintSolid(Solid s, String viewName)
        {
            View view;
             if (!viewNameList.Contains(viewName))
             {
            view = m_doc.Create.NewView3D(new XYZ(1, 1, 1));
            view.Name = viewName;
            viewNameList.Add(viewName);
             }
             else
             {
            view = (((new FilteredElementCollector(m_doc).
               OfClass(typeof(View))).Cast<View>()).
               Where(e => e.Name == viewName)).First<View>();
             }

             SpatialFieldManager sfm = SpatialFieldManager.GetSpatialFieldManager(view);
             if (sfm == null) sfm = SpatialFieldManager.CreateSpatialFieldManager(view, 1);

             if (SchemaId != -1)
             {
            IList<int> results = sfm.GetRegisteredResults();

            if (!results.Contains(SchemaId))
            {
               SchemaId = -1;
            }
             }

             if (SchemaId == -1)
             {
            AnalysisResultSchema resultSchema1 = new AnalysisResultSchema("PaintedSolid" + viewName, "Description");

            AnalysisDisplayStyle displayStyle = AnalysisDisplayStyle.CreateAnalysisDisplayStyle(
               m_doc,
               "Real_Color_Surface" + viewName,
               new AnalysisDisplayColoredSurfaceSettings(),
               new AnalysisDisplayColorSettings(),
               new AnalysisDisplayLegendSettings());

            resultSchema1.AnalysisDisplayStyleId = displayStyle.Id;

            SchemaId = sfm.RegisterResult(resultSchema1);
             }

             FaceArray faces = s.Faces;
             Transform trf = Transform.Identity;

             foreach (Face face in faces)
             {
            int idx = sfm.AddSpatialFieldPrimitive(face, trf);

            IList<UV> uvPts = null;
            IList<ValueAtPoint> valList = null;
            ComputeValueAtPointForFace(face, out uvPts, out valList, 1);

            FieldDomainPointsByUV pnts = new FieldDomainPointsByUV(uvPts);

            FieldValues vals = new FieldValues(valList);

            sfm.UpdateSpatialFieldPrimitive(idx, pnts, vals, SchemaId);
             }
        }

Usage Example

Exemple #1
0
        /// <summary>
        /// Create a constructive solid geometry - CSG tree
        /// http://en.wikipedia.org/wiki/Constructive_solid_geometry
        /// http://en.wikipedia.org/wiki/File:Csg_tree.png
        /// </summary>
        /// <param name="geometrycreation">The object that is responsible for creating the solids</param>
        /// <param name="avf">The object that is responsible for displaying the solids</param>
        private void CSGTree(GeometryCreation geometrycreation, AnalysisVisualizationFramework avf)
        {
            List <Solid> materialSolids = prepareSolids(geometrycreation);

            // Operation 1 : Intersect
            Solid CSGTree_solid1 = BooleanOperation.BooleanOperation_Intersect(materialSolids[0], materialSolids[1]);

            // Operation 2 : Union
            Solid CSGTree_solid2 = BooleanOperation.BooleanOperation_Union(materialSolids[2], materialSolids[3]);

            // Operation 3 : Union
            BooleanOperation.BooleanOperation_Union(ref CSGTree_solid2, materialSolids[4]);

            // Operation 4 : Difference
            BooleanOperation.BooleanOperation_Difference(ref CSGTree_solid1, CSGTree_solid2);

            avf.PaintSolid(CSGTree_solid1, "CSGTree");
        }
All Usage Examples Of Revit.SDK.Samples.GeometryCreation_BooleanOperation.CS.AnalysisVisualizationFramework::PaintSolid