示例#1
0
 public LayerInfoEventArgs()
 {
     selectableLayer = 0;
     selectLayer     = MbeLayer.LayerValue.DOC;
     relateiveLayer  = 0;
     visibleLayer    = 0;
 }
示例#2
0
        /// <summary>
        /// 可視アイコンがクリックされたときの処理
        /// </summary>
        /// <param name="index"></param>
        /// <remarks>
        /// 変更が発生したらイベントを発行する。
        /// </remarks>
        protected void VisibleIconClick(int index)
        {
            MbeLayer.LayerValue layer = MbeLayer.valueTable[index];
            if ((visibleLayer & (ulong)layer) != 0)
            {
                //可視だったものがクリックされた場合
                if ((selectLayer == layer) &&
                    ((selectableLayer & (ulong)layer) != 0))
                {
                    return;
                }
                visibleLayer &= ~((ulong)layer);
            }
            else
            {
                //不可視だったものがクリックされた場合
                visibleLayer |= ((ulong)layer);
            }

            if (VisibleLayerChange != null)
            {
                LayerInfoEventArgs e = new LayerInfoEventArgs();
                e.visibleLayer = visibleLayer;
                VisibleLayerChange(this, e);
            }

            Invalidate();
        }
示例#3
0
        public static MbeLayer.LayerValue NewSelectLayer(MbeLayer.LayerValue oldLayer)
        {
            return(MbeLayer.LayerValue.PTH);

            //if (MbeLayer.IsComponentSide(oldLayer)) {
            //    return MbeLayer.LayerValue.CMP;
            //} else {
            //    return MbeLayer.LayerValue.SOL;
            //}
        }
示例#4
0
        /// <summary>
        /// ポリゴンの接続点を起点にして、workList内の要素にConnectCheckのフラグを立てる
        /// </summary>
        /// <param name="ptConnect"></param>
        /// <param name="layer"></param>
        /// <param name="objList"></param>
        /// <returns></returns>
        protected bool SetupNetInfo(Point ptConnect, MbeLayer.LayerValue polygonLayer)
        {
            ClearConnectCheck();
            MbeConChk conChk = new MbeConChk();

            //conChk.ScanDataConnectPoint(ptConnect, (ulong)polygonLayer | (ulong)MbeLayer.LayerValue.PTH, workList);
            conChk.ScanDataConnectPoint(ptConnect, (ulong)polygonLayer, workList);

            return(true);
        }
示例#5
0
        public override void Flip(int hCenter)
        {
            int x = hCenter - (posArray[0].X - hCenter);
            int y = posArray[0].Y;

            posArray[0] = new Point(x, y);
            int newStartAngle = 1800 - EndAngle;
            int newEndAngle   = 1800 - StartAngle;

            StartAngle = newStartAngle;
            EndAngle   = newEndAngle;
            SetupPosition();
            Layer = MbeLayer.Flip(layer);
        }
示例#6
0
 public void KeepOutData(LinkedList <MbeGapChkObj> chkObjList, int _netNum)
 {
     for (int i = 0; i < gapChkLayerTable.Length; i++)
     {
         MbeLayer.LayerValue layerValue = gapChkLayerTable[i];
         MbeGapChkObjPoint   gapChkObj  = new MbeGapChkObjPoint();
         gapChkObj.layer  = layerValue;
         gapChkObj.netNum = _netNum;
         gapChkObj.mbeObj = this;
         gapChkObj.SetPointValue(GetPos(0), Diameter);
         //gapChk.Add(gapChkObj);
         chkObjList.AddLast(gapChkObj);
     }
 }
示例#7
0
        private bool BulkLayerMove(ref MbeLayer.LayerValue layerValue, ulong moveSelectableLayer)
        {
            BulkMoveLayerForm dlg = new BulkMoveLayerForm();

            dlg.layer           = layerValue;
            dlg.selectableLayer = moveSelectableLayer;
            DialogResult retv = dlg.ShowDialog();

            if (retv == DialogResult.OK)
            {
                layerValue = dlg.layer;
                return(true);
            }
            return(false);
        }
示例#8
0
        protected void OutAdCode(StreamWriter streamWriter, MbeLayer.LayerValue layer)
        {
            string dCode = "";
            double width;
            double height;
            string str;
            int    n = baseDataList.Count;

            for (int i = 0; i < n; i++)
            {
                CamOutBaseData camd = baseDataList[i];
                if (camd.layer != layer)
                {
                    continue;
                }
                if (dCode != camd.code)
                {
                    dCode = camd.code;

                    if (camd.shape == CamOutBaseData.Shape.Obround)
                    {
                        if (camd.width == camd.height)
                        {
                            width = (double)camd.width / 254000;
                            str   = string.Format("%AD{0}C,{1:0.0000}*%", dCode, width);
                        }
                        else
                        {
                            width  = (double)camd.width / 254000;
                            height = (double)camd.height / 254000;
                            str    = string.Format("%AD{0}O,{1:0.0000}X{2:0.0000}*%", dCode, width, height);
                        }
                    }
                    else if (camd.shape == CamOutBaseData.Shape.Rect)
                    {
                        width  = (double)camd.width / 254000;
                        height = (double)camd.height / 254000;
                        str    = string.Format("%AD{0}R,{1:0.0000}X{2:0.0000}*%", dCode, width, height);
                    }
                    else
                    {
                        continue;
                    }
                    streamWriter.WriteLine(str);
                }
            }
        }
示例#9
0
 public CamOutBaseData(
     MbeLayer.LayerValue _layer,
     CamType _ctype,
     Shape _shape,
     int _width,
     int _height,
     Point _pt0,
     Point _pt1)
 {
     layer  = _layer;
     code   = "";
     ctype  = _ctype;
     shape  = _shape;
     width  = _width;
     height = _height;
     pt0    = _pt0;
     pt1    = _pt1;
 }
示例#10
0
 public static MbeLayer.LayerValue NewSelectLayer(MbeLayer.LayerValue oldLayer)
 {
     if ((SelectableLayer() & (ulong)oldLayer) != 0)
     {
         return(oldLayer);
     }
     else
     {
         if (MbeLayer.IsComponentSide(oldLayer))
         {
             return(MbeLayer.LayerValue.CMP);
         }
         else
         {
             return(MbeLayer.LayerValue.SOL);
         }
     }
 }
示例#11
0
 /// <summary>
 /// コピーコンストラクタ
 /// </summary>
 /// <param name="mbeObj"></param>
 protected MbeObj(MbeObj mbeObj)
 {
     posCount   = mbeObj.posCount;
     posArray   = new Point[posCount];
     selectFlag = new bool[posCount];
     for (int i = 0; i < posCount; i++)
     {
         posArray[i]   = mbeObj.posArray[i];
         selectFlag[i] = mbeObj.selectFlag[i];
     }
     layer                 = MbeLayer.LayerValue.NUL;
     Layer                 = mbeObj.layer;
     signame               = mbeObj.signame;
     addCount              = mbeObj.addCount;
     deleteCount           = mbeObj.deleteCount;
     connectionCheckActive = mbeObj.connectionCheckActive;
     strTempProp           = mbeObj.strTempProp;
 }
示例#12
0
        /// <summary>
        /// CAMデータの生成
        /// </summary>
        /// <param name="camOut"></param>
        public override void GenerateCamData(CamOut camOut)
        {
            int width  = PadSize.Width;
            int height = PadSize.Height;


            Point          pt0 = GetPos(0);
            Point          pt1 = GetPos(0);
            CamOutBaseData camd;

            CamOutBaseData.Shape _shape = (shape == PadShape.Rect ? CamOutBaseData.Shape.Rect : CamOutBaseData.Shape.Obround);


            camd = new CamOutBaseData(layer, CamOutBaseData.CamType.FLASH,
                                      _shape, width, height, pt0, pt1);
            camOut.Add(camd);


            if (layer == MbeLayer.LayerValue.CMP || layer == MbeLayer.LayerValue.SOL)
            {
                if (!no_ResistMask)     //Version 0.50
                {
                    int stWidth  = PadSize.Width + SrMargin * 2;
                    int stHeight = PadSize.Height + SrMargin * 2;
                    MbeLayer.LayerValue stLayer = (layer == MbeLayer.LayerValue.CMP ? MbeLayer.LayerValue.STC : MbeLayer.LayerValue.STS);
                    camd = new CamOutBaseData(stLayer, CamOutBaseData.CamType.FLASH,
                                              _shape, stWidth, stHeight, pt0, pt1);
                    camOut.Add(camd);
                }

                if (!no_MM)
                {
                    int stWidth  = PadSize.Width - MmReduce * 2;
                    int stHeight = PadSize.Height - MmReduce * 2;
                    MbeLayer.LayerValue stLayer = (layer == MbeLayer.LayerValue.CMP ? MbeLayer.LayerValue.MMC : MbeLayer.LayerValue.MMS);
                    camd = new CamOutBaseData(stLayer, CamOutBaseData.CamType.FLASH,
                                              _shape, stWidth, stHeight, pt0, pt1);
                    camOut.Add(camd);
                }
            }
        }
示例#13
0
        protected CamOutResult GerberOutLayer(string path, MbeLayer.LayerValue layer)
        {
            CamOutResult result = new CamOutResult();

            result.code = CamOutResult.ResultCode.NOERROR;

            string       outpath      = Path.ChangeExtension(path, MbeLayer.GetLayerName(layer));
            StreamWriter streamWriter = null;

            try {
                streamWriter = new StreamWriter(outpath);
                int n;
                n = GerberHeaderStringArray.Length;
                for (int i = 0; i < n; i++)
                {
                    streamWriter.WriteLine(GerberHeaderStringArray[i]);
                }
                OutAdCode(streamWriter, layer);
                OutPlotData(streamWriter, layer);
                n = GerberFooterStringArray.Length;
                for (int i = 0; i < n; i++)
                {
                    streamWriter.WriteLine(GerberFooterStringArray[i]);
                }
            }
            catch (Exception) {
                result.code     = CamOutResult.ResultCode.FILEERROR;
                result.filename = Path.GetFileName(outpath);
                return(result);
            }
            finally {
                if (streamWriter != null)
                {
                    streamWriter.Close();
                }
            }
            return(result);
        }
示例#14
0
        /// <summary>
        /// 選択レイヤーがクリックされたときの処理
        /// </summary>
        /// <param name="index"></param>
        /// <remarks>
        /// 変更が発生したらイベントを発行する。
        /// </remarks>
        protected void SelectIconClick(int index)
        {
            MbeLayer.LayerValue layer = MbeLayer.valueTable[index];
            if (selectLayer == layer)
            {
                return;
            }
            if ((selectableLayer & (ulong)layer) == 0)
            {
                return;
            }
            selectLayer   = layer;
            visibleLayer |= ((ulong)layer);

            if (SelectLayerChange != null)
            {
                LayerInfoEventArgs e = new LayerInfoEventArgs();
                e.selectLayer  = selectLayer;
                e.visibleLayer = visibleLayer;
                SelectLayerChange(this, e);
            }

            Invalidate();
        }
示例#15
0
 public static MbeLayer.LayerValue NewSelectLayer(MbeLayer.LayerValue oldLayer)
 {
     return(MbeLayer.LayerValue.DRL);
 }
示例#16
0
        protected void OutPlotData(StreamWriter streamWriter, MbeLayer.LayerValue layer)
        {
            string dCode = "";
            int    x1;
            int    y1;
            int    x2;
            int    y2;
            string str;
            int    n = baseDataList.Count;

            for (int i = 0; i < n; i++)
            {
                CamOutBaseData camd = baseDataList[i];
                if (camd.layer != layer)
                {
                    continue;
                }
                if (dCode != camd.code)
                {
                    dCode = camd.code;
                    streamWriter.WriteLine(dCode + "*");
                }
                if (camd.ctype == CamOutBaseData.CamType.VECTOR)
                {
                    if (camd.pt0.X != camd.pt1.X || camd.pt0.Y != camd.pt1.Y)   //0.48.02(2009/04/24) もとの座標でゼロ長のベクトルは出力しないように変更
                    {
                        x1 = convertToGerverUnitValue(camd.pt0.X + CAMOUT_XOFFSET);
                        y1 = convertToGerverUnitValue(camd.pt0.Y + CAMOUT_YOFFSET);
                        x2 = convertToGerverUnitValue(camd.pt1.X + CAMOUT_XOFFSET);
                        y2 = convertToGerverUnitValue(camd.pt1.Y + CAMOUT_YOFFSET);

                        //0.46.01(2008/12/31) ** この修正は 0.48.02 で変更した **
                        //ガーバーデータの座標に変換したあとに座標が一致した場合は、
                        //最小長線分(0.1μm)をパッドの代わりに使用している可能性もあるので、
                        //ガーバーデータ上でも最小長線分(2.54μm)とする。
                        //実際にはx2に1を足して、水平線分としている。

                        //0.48.02(2009/04/24)
                        //ガーバーデータの座標に変換したあとに座標が一致した場合は、
                        //フラッシュデータとして出力する
                        if (x1 == x2 && y1 == y2)
                        {
                            str = string.Format("X{0:000000}Y{1:000000}D03*", x1, y1);
                            streamWriter.WriteLine(str);
                        }
                        else
                        {
                            str = string.Format("X{0:000000}Y{1:000000}D02*", x1, y1);
                            streamWriter.WriteLine(str);
                            str = string.Format("X{0:000000}Y{1:000000}D01*", x2, y2);
                            streamWriter.WriteLine(str);
                        }
                        //if (x1 != x2 || y1 != y2) { //ガーバーデータの座標に変換したあとでも始点終点が異なる場合のみ出力する。0.46.00(2008/12/28)
                        //    str = string.Format("X{0:000000}Y{1:000000}D02*", x1, y1);
                        //    streamWriter.WriteLine(str);
                        //    str = string.Format("X{0:000000}Y{1:000000}D01*", x2, y2);
                        //    streamWriter.WriteLine(str);
                        //}
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine("Gerber out: zero length vector");
                    }
                }
                else
                {
                    x1  = convertToGerverUnitValue(camd.pt0.X + CAMOUT_XOFFSET);
                    y1  = convertToGerverUnitValue(camd.pt0.Y + CAMOUT_YOFFSET);
                    str = string.Format("X{0:000000}Y{1:000000}D03*", x1, y1);
                    streamWriter.WriteLine(str);
                }
            }
        }
示例#17
0
 static public ulong SnapLayer(MbeLayer.LayerValue placeLayer)
 {
     return((ulong)placeLayer);
 }
示例#18
0
 public override void GenerateGapChkData(LinkedList <MbeGapChkObj> chkObjList, int _netNum)
 //public override void GenerateGapChkData(MbeGapChk gapChk, int _netNum)
 {
     for (int i = 0; i < gapChkLayerTable.Length; i++)
     {
         MbeLayer.LayerValue layerValue = gapChkLayerTable[i];
         if (layerValue == MbeLayer.LayerValue.L2 || layerValue == MbeLayer.LayerValue.L3)
         {
             //内層のときは非接続時はドリル径+0.4mm。(ただし、表層padサイズを超えない)接続時はpadSizeのWidthかHeightの小さい方
             int landDia;
             if (((ulong)layerValue & innerLayerConnectionInfo) == 0)
             {
                 landDia = dia + 4000;
                 if (landDia > InnerLandDia)
                 {
                     landDia = InnerLandDia;
                 }
             }
             else
             {
                 landDia = InnerLandDia;
             }
             MbeGapChkObjPoint gapChkObj = new MbeGapChkObjPoint();
             gapChkObj.layer  = layerValue;
             gapChkObj.netNum = _netNum;
             gapChkObj.mbeObj = this;
             gapChkObj.SetPointValue(GetPos(0), landDia);
             chkObjList.AddLast(gapChkObj);
         }
         else if (shape == PadShape.Rect)
         {
             MbeGapChkObjRect gapChkObj = new MbeGapChkObjRect();
             gapChkObj.layer  = layerValue;
             gapChkObj.netNum = _netNum;
             gapChkObj.mbeObj = this;
             gapChkObj.SetRectValue(GetPos(0), PadSize.Width, PadSize.Height);
             //gapChk.Add(gapChkObj);
             chkObjList.AddLast(gapChkObj);
         }
         else
         {
             if (PadSize.Width == PadSize.Height)
             {
                 MbeGapChkObjPoint gapChkObj = new MbeGapChkObjPoint();
                 gapChkObj.layer  = layerValue;
                 gapChkObj.netNum = _netNum;
                 gapChkObj.mbeObj = this;
                 gapChkObj.SetPointValue(GetPos(0), PadSize.Width);
                 //gapChk.Add(gapChkObj);
                 chkObjList.AddLast(gapChkObj);
             }
             else
             {
                 MbeGapChkObjLine gapChkObj = new MbeGapChkObjLine();
                 gapChkObj.layer  = layerValue;
                 gapChkObj.netNum = _netNum;
                 gapChkObj.mbeObj = this;
                 gapChkObj.SetLineValue(GetPos(0), PadSize.Width, PadSize.Height);
                 //gapChk.Add(gapChkObj);
                 chkObjList.AddLast(gapChkObj);
             }
         }
     }
 }
示例#19
0
 private void OnOK(object sender, EventArgs e)
 {
     //layer = valueTable[comboBoxLayer.SelectedIndex];
     layer        = registeredLayerValue[comboBoxLayer.SelectedIndex];
     DialogResult = DialogResult.OK;
 }