Message 1 of 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello everyone, i m trying to create a solid from crop view boundary and cut plan offset.
I project 4 lowest points of ActiveView 's Boudingbox onto a plane, then create solid from these 4 points and height parameter (cut plane offset).
Finally i transformed this solid to ActiveView.get_BoundingBox(null).Transform.
But it seem not to transform
This is my code
public static Autodesk.Revit.DB.Solid CreateCutPlaneSolid (this Autodesk.Revit.DB.View planView)
{
Autodesk.Revit.DB.BoundingBoxXYZ bbActiveView = planView.get_BoundingBox(null);
Autodesk.Revit.DB.Plane planePlanView = planView.SketchPlane.GetPlane();
Autodesk.Revit.DB.PlanViewRange viewRange = (planView as Autodesk.Revit.DB.ViewPlan).GetViewRange();
double cutPlaneHeight = viewRange.GetOffset(Autodesk.Revit.DB.PlanViewPlane.CutPlane);
Autodesk.Revit.DB.XYZ pt0 = new Autodesk.Revit.DB.XYZ(bbActiveView.Min.X, bbActiveView.Min.Y, bbActiveView.Min.Z);
Autodesk.Revit.DB.XYZ pt1 = new Autodesk.Revit.DB.XYZ(bbActiveView.Max.X, bbActiveView.Min.Y, bbActiveView.Min.Z);
Autodesk.Revit.DB.XYZ pt2 = new Autodesk.Revit.DB.XYZ(bbActiveView.Max.X, bbActiveView.Max.Y, bbActiveView.Min.Z);
Autodesk.Revit.DB.XYZ pt3 = new Autodesk.Revit.DB.XYZ(bbActiveView.Min.X, bbActiveView.Max.Y, bbActiveView.Min.Z);
Autodesk.Revit.DB.XYZ pt00 = PlaneUtil.ProjectOnto(planePlanView, pt0);
Autodesk.Revit.DB.XYZ pt11 = PlaneUtil.ProjectOnto(planePlanView, pt1);
Autodesk.Revit.DB.XYZ pt22 = PlaneUtil.ProjectOnto(planePlanView, pt2);
Autodesk.Revit.DB.XYZ pt33 = PlaneUtil.ProjectOnto(planePlanView, pt3);
Autodesk.Revit.DB.Line edge00 = Autodesk.Revit.DB.Line.CreateBound(pt00, pt11);
Autodesk.Revit.DB.Line edge11 = Autodesk.Revit.DB.Line.CreateBound(pt11, pt22);
Autodesk.Revit.DB.Line edge22 = Autodesk.Revit.DB.Line.CreateBound(pt22, pt33);
Autodesk.Revit.DB.Line edge33 = Autodesk.Revit.DB.Line.CreateBound(pt33, pt00);
List<Autodesk.Revit.DB.Curve> edges0 = new List<Autodesk.Revit.DB.Curve>();
edges0.Add(edge00);
edges0.Add(edge11);
edges0.Add(edge22);
edges0.Add(edge33);
Autodesk.Revit.DB.CurveLoop baseLoop0 = Autodesk.Revit.DB.CurveLoop.Create(edges0);
List<Autodesk.Revit.DB.CurveLoop> loopList0 = new List<Autodesk.Revit.DB.CurveLoop>();
loopList0.Add(baseLoop0);
Autodesk.Revit.DB.Solid preTransformSolid = Autodesk.Revit.DB.GeometryCreationUtilities.CreateExtrusionGeometry(loopList0, Autodesk.Revit.DB.XYZ.BasisZ, cutPlaneHeight);
Autodesk.Revit.DB.Solid transformSolid = Autodesk.Revit.DB.SolidUtils.CreateTransformed(preTransformSolid, bbActiveView.Transform);
return transformSolid;
//return preTransformSolid;
}
var solidtest = activeView.CreateCutPlaneSolid();
var bbSolidTest = solidtest.GetBoundingBox();
Action<Document> differenceAction0 = ((x) =>
{
var translateSolid = solidtest.MoveToOrigin();
FreeFormElement.Create(x, solidtest);
});
var solidFam0 = FamilyUtil.Create($"Solid{Guid.NewGuid()}", differenceAction0);
solidFam0.Insert(bbSolidTest.Transform.Origin);
This is the result of code:
Sorry about my english if it s not clearly
Thanks very much,
Kien
Solved! Go to Solution.