public LayerInfoEventArgs() { selectableLayer = 0; selectLayer = MbeLayer.LayerValue.DOC; relateiveLayer = 0; visibleLayer = 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(); }
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; //} }
/// <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); }
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); }
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); } }
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); }
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); } } }
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; }
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); } } }
/// <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; }
/// <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); } } }
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); }
/// <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(); }
public static MbeLayer.LayerValue NewSelectLayer(MbeLayer.LayerValue oldLayer) { return(MbeLayer.LayerValue.DRL); }
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); } } }
static public ulong SnapLayer(MbeLayer.LayerValue placeLayer) { return((ulong)placeLayer); }
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); } } } }
private void OnOK(object sender, EventArgs e) { //layer = valueTable[comboBoxLayer.SelectedIndex]; layer = registeredLayerValue[comboBoxLayer.SelectedIndex]; DialogResult = DialogResult.OK; }