protected override void Process(IFCAnyHandle ifcCurve) { base.Process(ifcCurve); IFCAnyHandle pnt = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcCurve, "Pnt", false); if (pnt == null) { return; } IFCAnyHandle dir = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcCurve, "Dir", false); if (dir == null) { return; } XYZ pntXYZ = IFCPoint.ProcessScaledLengthIFCCartesianPoint(pnt); XYZ dirXYZ = IFCPoint.ProcessScaledLengthIFCVector(dir); ParametericScaling = dirXYZ.GetLength(); if (MathUtil.IsAlmostZero(ParametericScaling)) { Importer.TheLog.LogWarning(ifcCurve.StepId, "Line has zero length, ignoring.", false); return; } SetCurve(Line.CreateUnbound(pntXYZ, dirXYZ / ParametericScaling)); }