/// <summary> /// オブジェクトの点を追加する /// </summary> /// <param name="obj"></param> /// <returns></returns> protected bool AddObjPoint(MbeObj obj) { if (obj.DeleteCount >= 0) { return(false); } if (((ulong)obj.Layer & ((ulong)MbeLayer.LayerValue.CMP | (ulong)MbeLayer.LayerValue.L2 | (ulong)MbeLayer.LayerValue.L3 | (ulong)MbeLayer.LayerValue.SOL | (ulong)MbeLayer.LayerValue.PTH)) == 0) { return(false); } if (obj.Id() == MbeObjID.MbePTH || obj.Id() == MbeObjID.MbePinSMD || obj.Id() == MbeObjID.MbePolygon) { return(AddPoint(obj.GetPos(0), (ulong)obj.Layer)); } if (obj.Id() == MbeObjID.MbeLine) { bool result = AddPoint(obj.GetPos(0), (ulong)obj.Layer); result |= AddPoint(obj.GetPos(1), (ulong)obj.Layer); return(result); } if (obj.Id() == MbeObjID.MbeArc) { bool result = AddPoint(obj.GetPos(1), (ulong)obj.Layer); result |= AddPoint(obj.GetPos(2), (ulong)obj.Layer); return(result); } return(false); }
/// <summary> /// objがchkPointと接続されているかの判定を行う /// </summary> /// <param name="chkPoint"></param> /// <param name="obj"></param> /// <returns></returns> protected bool testObj(MbeConChkElm chkPoint, MbeObj obj) { if (obj.DeleteCount >= 0) { return(false); } if (obj.ConnectionCheckActive) { return(false); } if (obj.Id() == MbeObjID.MbePTH) { if (obj.GetPos(0).Equals(chkPoint.pt)) { obj.SetConnectCheck(); AddObjPoint(obj); //反対面にchkPointの追加 return(true); } } else if (obj.Id() == MbeObjID.MbePinSMD) { if ((chkPoint.layer == (ulong)obj.Layer) && obj.GetPos(0).Equals(chkPoint.pt)) { obj.SetConnectCheck(); return(true); } } else if (obj.Id() == MbeObjID.MbePolygon) { if ((chkPoint.layer == (ulong)obj.Layer) && obj.GetPos(0).Equals(chkPoint.pt)) { obj.SetConnectCheck(); return(true); } } else if (obj.Id() == MbeObjID.MbeArc) { if (chkPoint.layer != (ulong)obj.Layer) { return(false); } if (obj.GetPos(1).Equals(chkPoint.pt)) { obj.SetConnectCheck(); AddPoint(obj.GetPos(2), (ulong)obj.Layer); } if (obj.GetPos(2).Equals(chkPoint.pt)) { obj.SetConnectCheck(); AddPoint(obj.GetPos(1), (ulong)obj.Layer); } return(obj.ConnectionCheckActive); } else if (obj.Id() == MbeObjID.MbeLine) { if (chkPoint.layer != (ulong)obj.Layer) { return(false); } if (obj.GetPos(0).Equals(chkPoint.pt)) { obj.SetConnectCheck(); AddPoint(obj.GetPos(1), (ulong)obj.Layer); } if (obj.GetPos(1).Equals(chkPoint.pt)) { obj.SetConnectCheck(); AddPoint(obj.GetPos(0), (ulong)obj.Layer); } return(obj.ConnectionCheckActive); } else if (obj.Id() == MbeObjID.MbeComponent) { bool result = false; foreach (MbeObj objContent in ((MbeObjComponent)obj).ContentsObj) { result |= testObj(chkPoint, objContent); //再帰呼び出し } return(result); } return(false); }