Esempio n. 1
0
        public static Autodesk.Revit.DB.Solid MoveToOrigin(this Autodesk.Revit.DB.Solid solid)
        {
            var bb          = solid.GetBoundingBox();
            var originBb    = bb.Transform.Origin;
            var translateTf = Autodesk.Revit.DB.Transform.CreateTranslation(-originBb);

            return(Autodesk.Revit.DB.SolidUtils.CreateTransformed(solid, translateTf));
        }
Esempio n. 2
0
        public static Autodesk.Revit.DB.Solid DifferenceSolid(this Autodesk.Revit.DB.Solid targetSolid,
                                                              IEnumerable <Autodesk.Revit.DB.Solid> otherSolids)
        {
            var mergeOtherSolid = otherSolids.MergeSolid();

            otherSolids.ToList().Add(targetSolid);
            var mergeAllSolid = Autodesk.Revit.DB.BooleanOperationsUtils.ExecuteBooleanOperation(mergeOtherSolid, targetSolid,
                                                                                                 Autodesk.Revit.DB.BooleanOperationsType.Union);

            return(Autodesk.Revit.DB.BooleanOperationsUtils.ExecuteBooleanOperation(mergeAllSolid, mergeOtherSolid, Autodesk.Revit.DB.BooleanOperationsType.Difference));
        }
Esempio n. 3
0
        public static Autodesk.Revit.DB.Solid ScaleSolid(this Autodesk.Revit.DB.Solid solid, double factor)
        {
            var centerPoint = solid.ComputeCentroid();

            var tf              = Autodesk.Revit.DB.Transform.Identity.ScaleBasis(factor);
            var scaledSolid     = Autodesk.Revit.DB.SolidUtils.CreateTransformed(solid, tf);
            var newCenterPoint  = scaledSolid.ComputeCentroid();
            var translateVector = centerPoint - newCenterPoint; // Vecto tịnh tiến từ tâm mới về tâm cũ
            var translateTf     = Autodesk.Revit.DB.Transform.CreateTranslation(translateVector);

            return(Autodesk.Revit.DB.SolidUtils.CreateTransformed(scaledSolid, translateTf));
        }
Esempio n. 4
0
        public static Autodesk.DesignScript.Geometry.Solid ToProtoType(this Autodesk.Revit.DB.Solid solid)
        {
            var srfs = solid.Faces.Cast <Autodesk.Revit.DB.Face>().Select(x => x.ToProtoType());

            return(Solid.ByJoinedSurfaces(srfs));
        }