|
@@ -133,32 +133,61 @@ namespace SAGA.MBI.WinView
|
|
|
var phase = doc.GetElement(phaseId) as Phase;
|
|
|
#region 创建新的节点
|
|
|
List<XYZ> points = new List<XYZ>();
|
|
|
- //using (SubTransaction sub=new SubTransaction(doc))
|
|
|
- //{
|
|
|
- // var spaceSipliter=doc.GetElements<>()
|
|
|
- //}
|
|
|
- // PlanTopologySetting
|
|
|
- // doc.Create.newsp
|
|
|
- //doc.get_PlanTopology(,)
|
|
|
- //var topology = doc.get_PlanTopology(level, phase);
|
|
|
- //foreach (PlanCircuit topologyCircuit in topology.Circuits)
|
|
|
- //{
|
|
|
- // var point = topologyCircuit.GetPointInside();
|
|
|
- // var xyz = new XYZ(point.U, point.V, level.ProjectElevation); //适当升高一些
|
|
|
- // points.Add(xyz);
|
|
|
- //}
|
|
|
+ using (SubTransaction sub = new SubTransaction(doc))
|
|
|
+ {
|
|
|
+ //把所有的空间分割转换成房间分割,然后获取封闭区域
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ sub.Start();
|
|
|
+ var virWalls = doc.FilterElements<CurveElement>((line) =>
|
|
|
+ {
|
|
|
+ var categoryId = line.Category.Id.IntegerValue;
|
|
|
+ return categoryId == (int) BuiltInCategory.OST_MEPSpaceSeparationLines && line is ModelLine;
|
|
|
+ }).OfType<ModelLine>();
|
|
|
+ CurveArray curveArray = new CurveArray();
|
|
|
+ foreach (var modelLine in virWalls)
|
|
|
+ {
|
|
|
+ curveArray.Append(modelLine.GeometryCurve);
|
|
|
+ }
|
|
|
+ #region 创建房间分割
|
|
|
+
|
|
|
+ Plane p = Plane.CreateByNormalAndOrigin(view.ViewDirection, view.Origin);
|
|
|
+ var sp = SketchPlane.Create(doc, p);
|
|
|
+ doc.Create.NewRoomBoundaryLines(sp, curveArray, view);
|
|
|
+
|
|
|
+ #endregion
|
|
|
|
|
|
- //foreach (var point in points)
|
|
|
- //{
|
|
|
- // var oldSpace = doc.GetSpaceAtPoint(point, phase);
|
|
|
- // if (oldSpace == null)
|
|
|
- // {
|
|
|
- // doc.Create.NewSpace(level, phase, new UV(point.X, point.Y));
|
|
|
- // }
|
|
|
- //}
|
|
|
+ #region 获取封闭区域
|
|
|
+ var topology = doc.get_PlanTopology(level, phase);
|
|
|
+ foreach (PlanCircuit topologyCircuit in topology.Circuits)
|
|
|
+ {
|
|
|
+ var point = topologyCircuit.GetPointInside();
|
|
|
+ var xyz = new XYZ(point.U, point.V, level.ProjectElevation+1); //适当升高一些
|
|
|
+ points.Add(xyz);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ sub.RollBack();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ #region 创建空间
|
|
|
+ foreach (var point in points)
|
|
|
+ {
|
|
|
+ var oldSpace = doc.GetSpaceAtPoint(point, phase);
|
|
|
+ if (oldSpace == null)
|
|
|
+ {
|
|
|
+ doc.Create.NewSpace(level, phase, new UV(point.X, point.Y));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // var newSpaces = doc.Create.NewSpaces2(level, phase, view);
|
|
|
#endregion
|
|
|
- // doc.Create
|
|
|
- var newSpaces = doc.Create.NewSpaces2(level, phase, view);
|
|
|
}
|
|
|
|
|
|
}
|