コード例 #1
0
        private static void Report(IIfcPolygonalFaceSet obj, TextHighliter sb)
        {
            // - Coordinates    Ifc4.GeometricModelResource.IfcCartesianPointList3D from: IfcTessellatedFaceSet
            // - Closed         Ifc4.MeasureResource.IfcBoolean(Nullable)
            // - Faces          Ifc4.GeometricModelResource.IfcIndexedPolygonalFace(IItemSet)
            // - PnIndex        Ifc4.MeasureResource.IfcPositiveInteger(IOptionalItemSet)

            // sb.Append($"-LAYER M {bound.Points.Count} ", Brushes.Black);
            if (obj.PnIndex != null && obj.PnIndex.Any())
            {
                // todo: implement PnIndex behaviour
                sb.Append("; Warning: PnIndex not implemented in mesher yet.", Brushes.Red);
            }

            foreach (var face in obj.Faces)
            {
                sb.Append("3DPOLY", Brushes.Black);
                foreach (var index in face.CoordIndex)
                {
                    if (index > int.MaxValue)
                    {
                        sb.Append($";value too long for int in face", Brushes.Black);
                        continue;
                    }
                    int asInt = (int)index;
                    var pt    = obj.Coordinates.CoordList[asInt - 1];
                    WritePointCoord(sb, pt);
                }
                sb.Append($"", Brushes.Black);
                sb.Append($"-HYPERLINK I O l  #{face.EntityLabel}", Brushes.Black);
                sb.Append($"", Brushes.Black);
                sb.Append($"", Brushes.Black);
            }
        }
コード例 #2
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
        private static void Report(IIfcPolyline bound, TextHighliter sb)
        {
            sb.Append($"-LAYER M {bound.Points.Count} ", Brushes.Black);

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

            foreach (var ifcCartesianPoint in bound.Points)
            {
                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);
        }
コード例 #3
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void Report(IIfcTessellatedFaceSet obj, TextHighliter sb)
 {
     if (obj is IIfcPolygonalFaceSet)
     {
         Report((IIfcPolygonalFaceSet)obj, sb);
     }
     else
     {
         sb.Append($"{obj.GetType().Name} not implemented in IIfcTessellatedFaceSet.", Brushes.Red);
     }
 }
コード例 #4
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void Report(IIfcTessellatedItem obj, TextHighliter sb)
 {
     if (obj is IIfcTessellatedFaceSet faceset)
     {
         Report(faceset, sb);
     }
     else
     {
         sb.Append($"{obj.GetType().Name} not implemented in IIfcTessellatedItem.", Brushes.Red);
     }
 }
コード例 #5
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void Report(IIfcSolidModel obj, TextHighliter sb)
 {
     if (obj is IIfcSweptDiskSolid swept)
     {
         Report(swept, sb);
     }
     else
     {
         sb.Append($"{obj.GetType().Name} not implemented in IIfcSolidModel.", Brushes.Red);
     }
 }
コード例 #6
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void Report(IIfcLoop bound, TextHighliter sb)
 {
     if (bound is IIfcPolyLoop)
     {
         Report((IIfcPolyLoop)bound, sb);
     }
     else
     {
         sb.Append($"{bound.GetType().Name} not implemented in IIfcLoop.", Brushes.Red);
     }
 }
コード例 #7
0
 private static void Report(IIfcFaceBound ifcFaceBound, TextHighliter sb)
 {
     if (ifcFaceBound is IIfcFaceOuterBound)
     {
         Report((IIfcFaceOuterBound)ifcFaceBound, sb);
     }
     else
     {
         sb.Append($"{ifcFaceBound.GetType().Name} not implemented in IIfcFaceBound.", Brushes.Red);
     }
 }
コード例 #8
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void SetUcs(TextHighliter sb, IIfcAxis2Placement pos = null)
 {
     if (pos == null)
     {
         sb.Append("UCS w", Brushes.Black);
     }
     else if (pos is IIfcAxis2Placement3D)
     {
         var as1 = pos as IIfcAxis2Placement3D;
         sb.Append("UCS", Brushes.Black);
         WritePointCoord(sb, as1.Location);
         WritePointCoord(sb, as1.Axis);
         WritePointCoord(sb, as1.RefDirection);
         sb.Append("UCS X 90", Brushes.Black);
         sb.Append("UCS Y 90", Brushes.Black);
     }
     else
     {
         sb.Append($"{pos.GetType().Name} not implemented in IIfcCurve.", Brushes.Red);
     }
 }
コード例 #9
0
ファイル: GeometryView.cs プロジェクト: wyh9462/XbimWindowsUI
 private static void Report(IIfcGeometricRepresentationItem obj, TextHighliter sb)
 {
     if (obj is IIfcCurve crv)
     {
         Report(crv, sb);
     }
     else if (obj is IIfcSolidModel solid)
     {
         Report(solid, sb);
     }
     else if (obj is IIfcTessellatedItem tess)
     {
         Report(tess, sb);
     }
     else
     {
         sb.Append($"{obj.GetType().Name} not implemented in IIfcGeometricRepresentationItem.", Brushes.Red);
     }
 }
コード例 #10
0
 private static void Report(IIfcCurve obj, TextHighliter sb)
 {
     if (obj is IIfcCompositeCurve)
     {
         Report((IIfcCompositeCurve)obj, sb);
     }
     else if (obj is IIfcTrimmedCurve)
     {
         Report((IIfcTrimmedCurve)obj, sb);
     }
     else if (obj is IIfcCircle)
     {
         Report((IIfcCircle)obj, sb);
     }
     else if (obj is IIfcLine)
     {
         Report((IIfcLine)obj, sb);
     }
     else
     {
         sb.Append($"{obj.GetType().Name} not implemented in IIfcCurve.", Brushes.Red);
     }
 }
コード例 #11
0
        private static void WritePointCoord(TextHighliter sb, double x, double y, double z, bool relative = false)
        {
            var rel = relative ? "@" : "";

            sb.Append($"{rel}{x},{y},{z}", Brushes.Black);
        }