示例#1
0
        public static List <CsvBomComponent> ReadBomComponents(IatRunConfiguration config)
        {
            string filename = config.AssemblyDataSettings.PickPlaceBomImportSettings.BomFile;
            var    rd       = new CsvReader(new StreamReader(filename));

            List <CsvBomComponent> bomComponents = new List <CsvBomComponent>();

            while (rd.Read())
            {
                if (rd.IsRecordEmpty())
                {
                    continue;
                }

                CsvBomComponent cbc = new CsvBomComponent
                {
                    LibRef      = rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.BomPartReferenceColumnName],
                    Description = rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.BomDescriptionColumnName],
                    Designator  = rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.BomDesignatorColumnName]
                };
                bomComponents.Add(cbc);
            }

            return(bomComponents);
        }
示例#2
0
        public void LoadAssemblyData(Assembly ass, IatRunConfiguration config)
        {
            // Get the required files from the configuration data
            List <CsvPickPlaceComponent> ppComponents  = CsvPickPlaceImporter.ReadPickPlaceComponents(config);
            List <CsvBomComponent>       bomComponents = CsvBomImporter.ReadBomComponents(config);

            foreach (var ppc in ppComponents)
            {
                string designator   = ppc.Designator;
                var    bomComponent = bomComponents.SingleOrDefault(d => d.Designator == designator);
                if (bomComponent != null)
                {
                    Component c = new Component
                    {
                        LibRef      = bomComponent.LibRef,
                        Description = bomComponent.Description,
                        Designator  = ppc.Designator,
                        PositionX   = ppc.RefX,
                        PositionY   = ppc.RefY,
                        Rotation    = ppc.Rotation
                    };


                    if (ppc.ComponentLayer == ComponentLayer.Top)
                    {
                        if (!ass.ComponentsTop.ContainsKey(c.LibRef))
                        {
                            ass.ComponentsTop.Add(c.LibRef, new List <Component>());
                        }
                        ass.ComponentsTop[c.LibRef].Add(c);
                    }

                    if (ppc.ComponentLayer == ComponentLayer.Bottom)
                    {
                        if (!ass.ComponentsBottom.ContainsKey(c.LibRef))
                        {
                            ass.ComponentsBottom.Add(c.LibRef, new List <Component>());
                        }
                        ass.ComponentsBottom[c.LibRef].Add(c);
                    }
                }
                else
                {
                    // Probably not populated
                    ass.DnpPositions.Add(new PointF
                    {
                        X = (float)ppc.RefX,
                        Y = (float)ppc.RefY
                    });
                }
            }
        }
示例#3
0
        public static List <CsvPickPlaceComponent> ReadPickPlaceComponents(IatRunConfiguration config)
        {
            if (!File.Exists(config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpFile))
            {
                Logger.Error("Couldn't read Pick'n'Place file");
                return(null);
            }

            CsvReader rd;

            try
            {
                rd = new CsvReader(new StreamReader(config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpFile));
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Couldn't read Pick'n'Place file");
                return(null);
            }
            try
            {
                List <CsvPickPlaceComponent> ppComponent = new List <CsvPickPlaceComponent>();

                // Load field headers, check to see if the values are in mm or mil
                HeaderValueUnits xPosHeaderUnit, yPosHeaderUnit;
                if (config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterXColumnName.Contains("mm"))
                {
                    xPosHeaderUnit = HeaderValueUnits.Mm;
                }
                else if (config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterXColumnName.Contains("mil"))
                {
                    xPosHeaderUnit = HeaderValueUnits.Mil;
                }
                else
                {
                    xPosHeaderUnit = HeaderValueUnits.Unspecified;
                }

                if (config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterYColumnName.Contains("mm"))
                {
                    yPosHeaderUnit = HeaderValueUnits.Mm;
                }
                else if (config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterYColumnName.Contains("mil"))
                {
                    yPosHeaderUnit = HeaderValueUnits.Mil;
                }
                else
                {
                    yPosHeaderUnit = HeaderValueUnits.Unspecified;
                }
                while (rd.Read())
                {
                    if (rd.IsRecordEmpty())
                    {
                        continue;
                    }

                    CsvPickPlaceComponent cppc = new CsvPickPlaceComponent
                    {
                        Designator     = rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpDesignatorColumnName],
                        RefX           = ConvertValueToMm(rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterXColumnName], xPosHeaderUnit),
                        RefY           = ConvertValueToMm(rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpCenterYColumnName], yPosHeaderUnit),
                        ComponentLayer = ConvertValueToComponentLayer(rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpLayerColumnName], config.AssemblyDataSettings.PickPlaceBomImportSettings),
                        Rotation       = ConvertValueToRotation(rd[config.AssemblyDataSettings.PickPlaceBomImportSettings.PnpRotationColumnName])
                    };

                    ppComponent.Add(cppc);
                }
                return(ppComponent);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Error while reading Pick'n'Place file");
                return(null);
            }
        }