Ejemplo n.º 1
0
 public IXbimFace CreateFace(IIfcPolyLoop loop, ILogger logger)
 {
     using (new Tracer(LogHelper.CurrentFunctionName(), this._logger, loop))
     {
         return(_engine.CreateFace(loop, logger));
     }
 }
Ejemplo n.º 2
0
        private static void Report(IIfcPolyLoop bound, TextHighliter sb)
        {
            sb.Append($"-LAYER M {bound.Polygon.Count} ", Brushes.Black);

            sb.Append("3DPOLY", Brushes.Black);
            var first = bound.Polygon.FirstOrDefault();
            IIfcCartesianPoint last = null;

            foreach (var ifcCartesianPoint in bound.Polygon)
            {
                WritePointCoord(sb, ifcCartesianPoint);
                last = ifcCartesianPoint;
            }
            if (false && last != null)
            {
                if (!last.Equals(first))
                {
                    sb.Append($";open polyloop", Brushes.Black);
                }
            }
            sb.Append($"", Brushes.Black);
            sb.Append($"-HYPERLINK I O l  #{bound.EntityLabel}", Brushes.Black);
            sb.Append($"", Brushes.Black);
            sb.Append($"", Brushes.Black);
        }
Ejemplo n.º 3
0
        private int FixFace(IIfcPolyLoop bound)
        {
            int icnt = 0;

            if (bound.EntityLabel == 119019)
            {
            }
            var iEval = 0;

            while (iEval < bound.Polygon.Count)
            {
                var iPrec = iEval - 1;
                if (iPrec < 0)
                {
                    iPrec = bound.Polygon.Count - 1;
                }
                var iNext = iEval + 1;
                if (iNext >= bound.Polygon.Count)
                {
                    iNext = 0;
                }

                var needsRemoving = FixExtensions.AreAligned(
                    bound.Polygon[iEval],
                    bound.Polygon[iPrec],
                    bound.Polygon[iNext]
                    );

                if (needsRemoving)
                {
                    using (var txn = bound.Model.BeginTransaction("removing"))
                    {
                        bound.Polygon.RemoveAt(iEval);
                        txn.Commit();
                    }
                    icnt++;
                }
                else
                {
                    iEval++;
                }
            }
            return(icnt);
        }
Ejemplo n.º 4
0
 public IXbimFace CreateFace(IIfcPolyLoop loop)
 {
     return(_engine.CreateFace(loop));
 }