コード例 #1
0
        private StepEntityInstanceSyntax LexItemInstance()
        {
            var line   = Current.Line;
            var column = Current.Column;

            AssertNextTokenKind(StepTokenKind.EntityInstance);
            var reference = (StepEntityInstanceToken)Current;

            MoveNext();

            SwallowEquals();

            AssertTokensRemain();
            StepItemSyntax item = null;

            switch (Current.Kind)
            {
            case StepTokenKind.Keyword:
                item = LexSimpleItem();
                break;

            case StepTokenKind.LeftParen:
                item = LexComplexItem();
                break;

            default:
                ReportError($"Expected left paren but found {Current.Kind}");
                break;     // unreachable
            }

            SwallowSemicolon();

            return(new StepEntityInstanceSyntax(reference, item));
        }
コード例 #2
0
        /// <summary>
        /// This function is used for handle complex syntax item
        /// e.g: #91=(REPRESENTATION_RELATIONSHIP('','',#94,#87)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#214)SHAPE_REPRESENTATION_RELATIONSHIP());
        /// </summary>
        /// <param name="binder"></param>
        /// <param name="itemSyntax"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        internal static List <StepRepresentationItem> FromTypedParameterToItems(StepBinder binder, StepItemSyntax itemSyntax, int id)
        {
            List <StepRepresentationItem> retItems = new List <StepRepresentationItem>();

            try
            {
                var complexItem = (StepComplexItemSyntax)itemSyntax;
                LogWriter.Instance.WriteDebugLog(string.Format("id={0}, syntaxType{1} start", id, complexItem.SyntaxType));
                foreach (var childItemSyntax in complexItem.Items)
                {
                    if (childItemSyntax is StepSimpleItemSyntax)
                    {
                        if (childItemSyntax.Parameters.Values != null && childItemSyntax.Parameters.Values.Count > 0)
                        {
                            StepRepresentationItem item = FromTypedParameterToItem(binder, childItemSyntax, id);
                            if (item != null)
                            {
                                retItems.Add(item);
                            }
                        }
                    }
                    else
                    {
                        List <StepRepresentationItem> items = FromTypedParameterToItems(binder, childItemSyntax, id);
                        foreach (var item in items)
                        {
                            retItems.Add(item);
                        }
                    }
                }
                LogWriter.Instance.WriteDebugLog(string.Format("id={0}, syntaxType{1} end", id, complexItem.SyntaxType));
                return(retItems);
            }
            catch (Exception ex)
            {
                LogWriter.Instance.WriteErrorLog(ex);
                return(retItems);
            }
        }
コード例 #3
0
        /// <summary>
        /// This function is used for handle simple syntax items
        /// </summary>
        /// <param name="binder"></param>
        /// <param name="itemSyntax"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        internal static StepRepresentationItem FromTypedParameterToItem(StepBinder binder, StepItemSyntax itemSyntax, int id)
        {
            try
            {
                StepRepresentationItem item = null;

                var simpleItem = (StepSimpleItemSyntax)itemSyntax;
                LogWriter.Instance.WriteDebugLog(string.Format("id={0}, keyword={1}", id, simpleItem.Keyword));
                switch (simpleItem.Keyword)
                {
                case StepItemTypeExtensions.ProductDefinitionFormationWithSpecifiedSourceText:
                    item = StepProductDefFormationWithSpecSource.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductText:
                    item = StepProduct.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductDefinitionText:
                    item = StepProductDefinition.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeDefinitionRepresentationText:
                    item = StepShapeDefinitionRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductDefinitionShapeText:
                    item = StepProductDefinitionShape.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeRepresentationRelationshipText:
                    item = StepShapeRepresentationRelationShip.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeRepresentationText:
                    item = StepShapeRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.AdvancedBrepShapeRepresentationText:
                    item = StepAdvancedBrepShapeRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.StyledItemText:
                    item = StepStyledItem.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.NextAssemblyUsageOccurrenceText:
                    item = StepNextAssemblyUsageOccrrence.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                default:
                    item = StepDynamicItem.CreateFromSyntaxList(binder, simpleItem, id);     //Tien added on Mar 21 2020
                    break;
                }
                return(item);
            }
            catch (Exception ex)
            {
                LogWriter.Instance.WriteDebugLog(ex);
                return(null);
            }
        }
コード例 #4
0
        internal static StepRepresentationItem FromTypedParameter(StepBinder binder, StepItemSyntax itemSyntax)
        {
            StepRepresentationItem item = null;

            if (itemSyntax is StepSimpleItemSyntax)
            {
                var simpleItem = (StepSimpleItemSyntax)itemSyntax;
                switch (simpleItem.Keyword)
                {
                case StepItemTypeExtensions.AdvancedFaceText:
                    item = StepAdvancedFace.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.Axis2Placement2DText:
                    item = StepAxis2Placement2D.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.Axis2Placement3DText:
                    item = StepAxis2Placement3D.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.BSplineCurveWithKnotsText:
                    item = StepBSplineCurveWithKnots.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CartesianPointText:
                    item = StepCartesianPoint.CreateFromSyntaxList(simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CircleText:
                    item = StepCircle.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CylindricalSurfaceText:
                    item = StepCylindricalSurface.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.DirectionText:
                    item = StepDirection.CreateFromSyntaxList(simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EdgeCurveText:
                    item = StepEdgeCurve.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EdgeLoopText:
                    item = StepEdgeLoop.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EllipseText:
                    item = StepEllipse.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.FaceBoundText:
                    item = StepFaceBound.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.FaceOuterBoundText:
                    item = StepFaceOuterBound.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.LineText:
                    item = StepLine.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.OrientedEdgeText:
                    item = StepOrientedEdge.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.PlaneText:
                    item = StepPlane.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.VectorText:
                    item = StepVector.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.VertexPointText:
                    item = StepVertexPoint.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                default:
                    if (UnsupportedItemTypes.Add(simpleItem.Keyword))
                    {
                        Debug.WriteLine($"Unsupported item {simpleItem.Keyword} at {simpleItem.Line}, {simpleItem.Column}");
                    }
                    break;
                }
            }
            else
            {
                // TODO:
            }

            return(item);
        }
        internal static StepRepresentationItem FromTypedParameter(StepBinder binder, StepItemSyntax itemSyntax, int id)
        {
            StepRepresentationItem item = null;

            if (itemSyntax is StepSimpleItemSyntax)
            {
                var simpleItem = (StepSimpleItemSyntax)itemSyntax;
                switch (simpleItem.Keyword)
                {
                case StepItemTypeExtensions.ProductDefinitionFormationWithSpecifiedSourceText:
                    item = StepProductDefFormationWithSpecSource.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductText:
                    item = StepProduct.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductDefinitionText:
                    item = StepProductDefinition.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeDefinitionRepresentationText:
                    item = StepShapeDefinitionRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ProductDefinitionShapeText:
                    item = StepProductDefinitionShape.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeRepresentationRelationshipText:
                    item = StepShapeRepresentationRelationShip.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ShapeRepresentationText:
                    item = StepShapeRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.AdvancedBrepShapeRepresentationText:
                    item = StepAdvancedBrepShapeRepresentation.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ManiFoldSolidBrepText:
                    item = StepManifoldSolidBrep.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ClosedShellText:
                    item = StepClosedShell.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.AdvancedFaceText:
                    item = StepAdvancedFace.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.Axis2Placement2DText:
                    item = StepAxis2Placement2D.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.Axis2Placement3DText:
                    item = StepAxis2Placement3D.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.BSplineCurveWithKnotsText:
                    item = StepBSplineCurveWithKnots.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CartesianPointText:
                    item = StepCartesianPoint.CreateFromSyntaxList(simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CircleText:
                    item = StepCircle.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.CylindricalSurfaceText:
                    item = StepCylindricalSurface.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.DirectionText:
                    item = StepDirection.CreateFromSyntaxList(simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EdgeCurveText:
                    item = StepEdgeCurve.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EdgeLoopText:
                    item = StepEdgeLoop.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.EllipseText:
                    item = StepEllipse.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.FaceBoundText:
                    item = StepFaceBound.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.FaceOuterBoundText:
                    item = StepFaceOuterBound.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.LineText:
                    item = StepLine.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.OrientedEdgeText:
                    item = StepOrientedEdge.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.PlaneText:
                    item = StepPlane.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.VectorText:
                    item = StepVector.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.VertexPointText:
                    item = StepVertexPoint.CreateFromSyntaxList(binder, simpleItem.Parameters);
                    break;

                case StepItemTypeExtensions.StyledItemText:
                    item = StepStyledItem.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.PresentationStyleAssignmentText:
                    item = StepPresentationStyleAssignment.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.SurfaceStyleUsageText:
                    item = StepSurfaceStyleUsage.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.SurfaceSideStyleText:
                    item = StepSurfaceSideStyle.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.SurfaceStyleFillAreaText:
                    item = StepSurfaceStyleFillArea.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.FillAreaStyleText:
                    item = StepFillAreaStyle.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.FillAreaStyleColourText:
                    item = StepFillAreaStyleColour.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.ColourRGBText:
                    item = StepColourRGB.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                case StepItemTypeExtensions.NextAssemblyUsageOccurrenceText:
                    item = StepNextAssemblyUsageOccrrence.CreateFromSyntaxList(binder, simpleItem.Parameters, id);
                    break;

                default:
                    if (UnsupportedItemTypes.Add(simpleItem.Keyword))
                    {
                        Debug.WriteLine($"Unsupported item {simpleItem.Keyword} at {simpleItem.Line}, {simpleItem.Column}");
                    }
                    break;
                }
            }
            else
            {
                // TODO:
            }

            return(item);
        }