|
@@ -89,6 +89,27 @@ namespace RevitToJBim.Extension
|
|
|
return space.Level?.Id == useViewId.GenLevel?.Id;
|
|
|
}
|
|
|
|
|
|
+ private static string m_DocTitle;
|
|
|
+ private static List<Tuple<Curve, Wall>> m_wallTuples=new List<Tuple<Curve, Wall>>();
|
|
|
+ /// <summary>
|
|
|
+ /// 缓存墙线数组
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="doc"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private static List<Tuple<Curve, Wall>> GetWallTuples(Document doc)
|
|
|
+ {
|
|
|
+ var title = doc.GetPathNameOrTitle();
|
|
|
+ if (m_DocTitle != title)
|
|
|
+ {
|
|
|
+ m_DocTitle = title;
|
|
|
+ var allWalls = doc.GetElements<Wall>();
|
|
|
+ var tupleWalls = allWalls
|
|
|
+ .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
|
|
|
+ m_wallTuples = tupleWalls;
|
|
|
+ }
|
|
|
+
|
|
|
+ return m_wallTuples;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取空间的外轮廓
|
|
@@ -106,9 +127,10 @@ namespace RevitToJBim.Extension
|
|
|
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();
|
|
|
+ //var allWalls = doc.GetElements<Wall>();
|
|
|
+ //var tupleWalls = allWalls
|
|
|
+ // .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
|
|
|
+ var tupleWalls = GetWallTuples(doc);
|
|
|
foreach (var segment in segments)
|
|
|
{
|
|
|
#region 取外轮廓的点
|
|
@@ -187,7 +209,6 @@ namespace RevitToJBim.Extension
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
Console.WriteLine(e);
|
|
|
- throw;
|
|
|
}
|
|
|
|
|
|
return outlines;
|