コード例 #1
0
        public StepFile ReadFile()
        {
            var fileSyntax = _lexer.LexFileSyntax();

            foreach (var headerMacro in fileSyntax.Header.Macros)
            {
                ApplyHeaderMacro(headerMacro);
            }

            var itemMap = new Dictionary <int, StepRepresentationItem>();
            var binder  = new StepBinder(itemMap);

            StepRepresentationItem.UnsupportedItemTypes.Clear();
            foreach (var itemInstance in fileSyntax.Data.ItemInstances)
            {
                if (itemMap.ContainsKey(itemInstance.Id))
                {
                    throw new StepReadException("Duplicate item instance", itemInstance.Line, itemInstance.Column);
                }

                var item = StepRepresentationItem.FromTypedParameter(binder, itemInstance.SimpleItemInstance, itemInstance.Id);
                if (item != null)
                {
                    itemMap.Add(itemInstance.Id, item);
                    _file.Items.Add(item);
                }
            }

            binder.BindRemainingValues();

            return(_file);
        }
コード例 #2
0
ファイル: StepReader.cs プロジェクト: havsys/step-parser
        public StepFile ReadFile()
        {
            var fileSyntax = _lexer.LexFileSyntax();

            foreach (var headerMacro in fileSyntax.Header.Macros)
            {
                ApplyHeaderMacro(headerMacro);
            }

            var itemMap = new Dictionary <int, List <StepRepresentationItem> >();
            var binder  = new StepBinder(itemMap);

            StepRepresentationItem.UnsupportedItemTypes.Clear();
            foreach (var itemInstance in fileSyntax.Data.ItemInstances)
            {
                if (itemMap.ContainsKey(itemInstance.Id))
                {
                    throw new StepReadException("Duplicate item instance", itemInstance.Line, itemInstance.Column);
                }
                List <StepRepresentationItem> items = new List <StepRepresentationItem>();
                if (itemInstance.SimpleItemInstance is StepSimpleItemSyntax)
                {
                    var item = StepRepresentationItem.FromTypedParameterToItem(binder, itemInstance.SimpleItemInstance, itemInstance.Id);
                    if (item != null)
                    {
                        items.Add(item);
                    }
                }
                else if (itemInstance.SimpleItemInstance is StepComplexItemSyntax)
                {
                    items = StepRepresentationItem.FromTypedParameterToItems(binder, itemInstance.SimpleItemInstance, itemInstance.Id);
                }
                else
                {
                    LogWriter.Instance.WriteErrorLog("Unsupported step item syntax " + itemInstance.SimpleItemInstance.GetType().Name);
                }
                if (items.Count > 0)
                {
                    itemMap.Add(itemInstance.Id, items);
                    foreach (var item in items)
                    {
                        _file.Items.Add(item);
                    }
                }
            }

            binder.BindRemainingValues();

            return(_file);
        }