protected override void Process(IFCAnyHandle ifcSurface) { base.Process(ifcSurface); bool foundUDegree = false; UDegree = IFCImportHandleUtil.GetRequiredIntegerAttribute(ifcSurface, "UDegree", out foundUDegree); if (!foundUDegree) { Importer.TheLog.LogError(ifcSurface.StepId, "Cannot find the UDegree attribute of this surface", true); } bool foundVDegree = false; VDegree = IFCImportHandleUtil.GetRequiredIntegerAttribute(ifcSurface, "VDegree", out foundVDegree); if (!foundVDegree) { Importer.TheLog.LogError(ifcSurface.StepId, "Cannot find the VDegree attribute of this surface", true); } IList <IList <IFCAnyHandle> > controlPoints = IFCImportHandleUtil.GetListOfListOfInstanceAttribute(ifcSurface, "ControlPointsList"); if (controlPoints == null || controlPoints.Count == 0) { Importer.TheLog.LogError(ifcSurface.StepId, "This surface has invalid number of control points", true); } List <IFCAnyHandle> controlPointsTmp = new List <IFCAnyHandle>(); foreach (List <IFCAnyHandle> list in controlPoints) { controlPointsTmp.AddRange(list); } ControlPointsList = IFCPoint.ProcessScaledLengthIFCCartesianPoints(controlPointsTmp); bool foundUClosed = false; UClosed = IFCImportHandleUtil.GetOptionalLogicalAttribute(ifcSurface, "UClosed", out foundUClosed); if (!foundUClosed) { Importer.TheLog.LogWarning(ifcSurface.StepId, "Cannot find the UClosed attribute of this surface, setting to Unknown", true); UClosed = IFCLogical.Unknown; } bool foundVClosed = false; VClosed = IFCImportHandleUtil.GetOptionalLogicalAttribute(ifcSurface, "VClosed", out foundVClosed); if (!foundVClosed) { Importer.TheLog.LogWarning(ifcSurface.StepId, "Cannot find the VClosed attribute of this surface, setting to Unknown", true); VClosed = IFCLogical.Unknown; } }