Exemple #1
0
        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));
        }