|
@@ -105,26 +105,26 @@ namespace RevitToJBim.Extension
|
|
|
var segments = space.GetBoundarySegments(options);
|
|
|
Document doc = space.Document;
|
|
|
double tolerance = doc.Application.ShortCurveTolerance;
|
|
|
-
|
|
|
+
|
|
|
+ var allWalls = doc.GetElements<Wall>();
|
|
|
+ var tupleWalls = allWalls
|
|
|
+ .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
|
|
|
foreach (var segment in segments)
|
|
|
{
|
|
|
#region 取外轮廓的点
|
|
|
|
|
|
List<XYZ> xyzs = new List<XYZ>();
|
|
|
- var allWalls = doc.GetElements<Wall>();
|
|
|
- var tupleWalls = allWalls
|
|
|
- .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
|
|
|
foreach (BoundarySegment boundarySegment in segment)
|
|
|
{
|
|
|
var segmentElement = space.Document.GetElement(boundarySegment.ElementId);
|
|
|
if (segmentElement is Wall wall)
|
|
|
{
|
|
|
- var wallCurve = wall.GetLocationCurve();
|
|
|
var parallelWalls = GetParallelWalls(wall, tupleWalls);
|
|
|
var segmentCurve = boundarySegment.GetCurve();
|
|
|
var tessellates = segmentCurve.Tessellate();
|
|
|
foreach (XYZ tessellate in tessellates)
|
|
|
{
|
|
|
+ var wallCurve = wall.GetLocationCurve();
|
|
|
var project = wallCurve.GetProjectPt(tessellate);
|
|
|
var verticalVector = (project - tessellate).Normalize();
|
|
|
var tempXyz = GetOuterXYZ(tessellate, verticalVector, segmentCurve, parallelWalls);
|
|
@@ -224,15 +224,35 @@ namespace RevitToJBim.Extension
|
|
|
if (walls.Contains(parallelWall)) continue;
|
|
|
var curve2 = referenceWall.GetLocationCurve();
|
|
|
var startP12 = CurveExtend.GetProjectPt(curve2, startP11);
|
|
|
- var endP12 = CurveExtend.GetProjectPt(curve2, endP11);
|
|
|
- //判断是否有重叠部分
|
|
|
- if (startP12.IsOnCurve(curve2) || endP12.IsOnCurve(curve2))
|
|
|
+ //速度优化
|
|
|
+ if (startP12.IsOnCurve(curve2))
|
|
|
{
|
|
|
double width2 = referenceWall.Width;
|
|
|
- double distacne = curve1.Distance(curve2);
|
|
|
+ double distacne = startP11.DistanceTo(endP11);
|
|
|
if (distacne < (width1 + width2) / 2.0 + m_RedundancySpace)
|
|
|
walls.Add(parallelWall);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var endP12 = CurveExtend.GetProjectPt(curve2, endP11);
|
|
|
+ if (endP12.IsOnCurve(curve2))
|
|
|
+ {
|
|
|
+ double width2 = referenceWall.Width;
|
|
|
+ double distacne = startP11.DistanceTo(endP11);
|
|
|
+ if (distacne < (width1 + width2) / 2.0 + m_RedundancySpace)
|
|
|
+ walls.Add(parallelWall);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //var startP12 = CurveExtend.GetProjectPt(curve2, startP11);
|
|
|
+ //var endP12 = CurveExtend.GetProjectPt(curve2, endP11);
|
|
|
+ ////判断是否有重叠部分
|
|
|
+ //if (startP12.IsOnCurve(curve2) || endP12.IsOnCurve(curve2))
|
|
|
+ //{
|
|
|
+ // double width2 = referenceWall.Width;
|
|
|
+ // double distacne = curve1.Distance(curve2);
|
|
|
+ // if (distacne < (width1 + width2) / 2.0 + m_RedundancySpace)
|
|
|
+ // walls.Add(parallelWall);
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
} while (len != walls.Count);
|
|
@@ -296,7 +316,7 @@ namespace RevitToJBim.Extension
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return outerXyz;
|
|
|
+ return outerXyz.NewZ(xyz.Z);
|
|
|
}
|
|
|
}
|
|
|
}
|