public ElectrodeMoveBuilder(List <Body> headBodys, ElectrodeDatumInfo datum, ElectrodeGapValueInfo gapValue, ElectrodePitchInfo pitch) { this.headBodys = headBodys; this.datum = datum; this.gapValue = gapValue; this.pitch = pitch; }
public override double[] GetPreparation(ElectrodePitchInfo pitch, bool zDatum) { double preY = Math.Ceiling(2 * this.disPt.Z); double preX = Math.Ceiling(2 * this.disPt.X + Math.Abs((pitch.PitchXNum - 1) * pitch.PitchX)); double preZ = Math.Ceiling(Math.Abs(this.centerPt.Y + disPt.Y)) + 47; if (zDatum) { preX = Math.Ceiling(2 * this.disPt.X + Math.Abs((pitch.PitchXNum) * pitch.PitchX)); } if (preX > preY) { preX = preX + 6; preY = preY + 2; } else { preX = preX + 2; preY = preY + 6; } return(new double[3] { preX, preY, preZ }); }
private void CreateExpression(ElectrodePitchInfo pitch) { ExpressionUtils.CreateExp("xNCopies=" + pitch.PitchXNum.ToString(), "Number"); ExpressionUtils.CreateExp("yNCopies=" + pitch.PitchYNum.ToString(), "Number"); ExpressionUtils.CreateExp("xPitchDistance=" + pitch.PitchX.ToString(), "Number"); ExpressionUtils.CreateExp("yPitchDistance=" + pitch.PitchY.ToString(), "Number"); }
/// <summary> /// 给齿上颜色 /// </summary> private void SetHeadColour(ElectrodePitchInfo pitch, ElectrodeGapValueInfo gapValue, List <Body> bodys) { Matrix4 matr = new Matrix4(); matr.Identity(); Matrix4 inv = matr.GetInversMatrix(); CartesianCoordinateSystem csys = BoundingBoxUtils.CreateCoordinateSystem(matr, inv); var toolhList = bodys.GroupBy(a => AttributeUtils.GetAttrForString(a, "ToolhName")); List <ElectrodeToolhInfo[, ]> toolhInfos = new List <ElectrodeToolhInfo[, ]>(); try { foreach (var toolh in toolhList) { ElectrodeToolhInfo[,] toolhInfo = pitch.GetToolhInfosForAttribute(toolh.ToList(), matr, csys); toolhInfos.Add(toolhInfo); } if (toolhInfos.Count != 0) { gapValue.SetERToolh(toolhInfos); } } catch (Exception ex) { ClassItem.WriteLogFile("设置颜色错误!" + ex.Message); } }
/// <summary> /// 获取ER个数 /// </summary> /// <returns></returns> private void GetERNumber(ElectrodePitchInfo pitch) { ElectrodeERForm erForm = new ElectrodeERForm(er, pitch); if (checkBox_crude.Checked) { string cru = this.comboBox_crudeInter.Text; string num = this.comboBox_crudeNum.Text; if (cru != "" && num == "") { erForm.Name = "ER个数"; erForm.ShowDialog(this); } } if (checkBox_during.Checked) { string cru = this.comboBox_duringInter.Text; string num = this.comboBox_duringNum.Text; if (cru != "" && num == "") { erForm.Name = "DR个数"; erForm.ShowDialog(this); } } }
public ElectrodeERForm(int[] er, ElectrodePitchInfo pitch) { this.er = er; this.pitch = pitch; InitializeComponent(); this.textBoxXNumber.Text = "1"; this.textBox_YNumber.Text = "1"; }
/// <summary> /// 创建阵列 /// </summary> private void CreatePattern(ElectrodePitchInfo pitch) { if ((pitch.PitchXNum > 1 && Math.Abs(pitch.PitchX) > 0) || (pitch.PitchYNum > 1 && Math.Abs(pitch.PitchY) > 0)) { CreateExpression(pitch); this.patternFeat = PatternUtils.CreatePattern("xNCopies", "xPitchDistance", "yNCopies", "yPitchDistance", this.matr, this.bodys.ToArray()); } }
/// <summary> /// 获取Pitch /// </summary> /// <returns></returns> private ElectrodePitchInfo GetElePitchInfo() { ElectrodePitchInfo pitch = new ElectrodePitchInfo(); pitch.PitchX = Math.Abs(double.Parse(this.textBox_pitchX.Text)); pitch.PitchXNum = int.Parse(this.textBox_pitchXNum.Text); pitch.PitchY = Math.Abs(double.Parse(this.textBox_pitchY.Text)); pitch.PitchYNum = int.Parse(this.textBox_pitchYNum.Text); return(pitch); }
/// <summary> /// 移动电极 /// </summary> /// <param name="dir"></param> /// <returns></returns> private bool MoveElePart(Component eleCt, ElectrodePitchInfo pitch, int dir) { if ((pitch.PitchXNum > 1 && Math.Abs(pitch.PitchX) > 0) || (pitch.PitchYNum > 1 && Math.Abs(pitch.PitchY) > 0)) { Vector3d vec = new Vector3d(); vec.X = (pitch.PitchXNum - 1) * pitch.PitchX * dir; vec.Y = (pitch.PitchYNum - 1) * pitch.PitchY * dir; AssmbliesUtils.MoveCompPart(eleCt, vec, this.work.Info.Matr); return(true); } return(false); }
/// <summary> /// 更新阵列 /// </summary> /// <param name="x"></param> /// <param name="xNumber"></param> /// <param name="y"></param> /// <param name="yNumber"></param> public void UpdatePattern(ElectrodePitchInfo pitch) { Session theSession = Session.GetSession(); NXOpen.Session.UndoMarkId markId; markId = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "NX update"); if (this.patternFeat == null) { CreatePattern(pitch); return; } ExpressionUtils.UpdateExp("xPitchDistance", pitch.PitchX.ToString()); ExpressionUtils.UpdateExp("xNCopies", pitch.PitchXNum.ToString()); ExpressionUtils.UpdateExp("yPitchDistance", pitch.PitchY.ToString()); ExpressionUtils.UpdateExp("yNCopies", pitch.PitchYNum.ToString()); DeleteObject.UpdateObject(markId, "NX update"); }
/// <summary> /// 反求单齿设置值 /// </summary> /// <param name="setValue"></param> /// <param name="pitch"></param> /// <param name="pre"></param> /// <param name="zDatum"></param> /// <returns></returns> private Point3d GetSingleHeadSetValue(ElectrodeSetValueInfo setValue, ElectrodePitchInfo pitch, ElectrodePreparationInfo pre, bool zDatum) { Point3d temp = new Point3d(setValue.EleSetValue[0], setValue.EleSetValue[1], setValue.EleSetValue[2]); double x1 = temp.X - (pitch.PitchXNum - 1) * pitch.PitchX / 2; double y1 = temp.Y - (pitch.PitchYNum - 1) * pitch.PitchY / 2; if (zDatum) { if (pre.Preparation[0] > pre.Preparation[1]) { x1 = temp.X - (pitch.PitchXNum - 2) * pitch.PitchX / 2; } else { y1 = temp.Y - (pitch.PitchYNum - 2) * pitch.PitchY / 2; } } return(new Point3d(x1, y1, temp.Z)); }
/// <summary> /// 获取电极设定值 /// </summary> /// <param name="pitch"></param> /// <param name="zDatum"></param> /// <returns></returns> public Point3d GetHeadSetValue(ElectrodePitchInfo pitch, bool zDatum) { Point3d temp = GetSingleHeadSetValue(); double x1 = temp.X + (pitch.PitchXNum - 1) * pitch.PitchX / 2; double y1 = temp.Y + (pitch.PitchYNum - 1) * pitch.PitchY / 2; if (zDatum) { double[] pre = GetPreparation(pitch, zDatum); if (pre[0] >= pre[1]) { x1 = temp.X + (pitch.PitchXNum - 2) * pitch.PitchX / 2; } else { y1 = temp.Y + (pitch.PitchYNum - 2) * pitch.PitchY / 2; } } return(new Point3d(x1, y1, temp.Z)); }
/// <summary> /// 预览 /// </summary> private void CreatePreview() { ElectrodePitchInfo pitch = new ElectrodePitchInfo(); pitch.PitchX = double.Parse(this.textBox_pitchX.Text); pitch.PitchXNum = int.Parse(this.textBox_pitchXNum.Text); pitch.PitchY = double.Parse(this.textBox_pitchY.Text); pitch.PitchYNum = int.Parse(this.textBox_pitchYNum.Text); this.preveiw.UpdatePattern(pitch); Point3d value = this.condition.ExpAndMatr.Matr.GetHeadSetValue(GetElePitchInfo(), checkBox1.Checked); double[] pre = this.condition.ExpAndMatr.Matr.GetPreparation(pitch, checkBox1.Checked); this.textBox_eleX.Text = value.X.ToString(); this.textBox_eleY.Text = value.Y.ToString(); this.textBox_eleZ.Text = value.Z.ToString(); this.textBox_preparationX.Text = pre[0].ToString(); this.textBox_preparationY.Text = pre[1].ToString(); this.textBox_preparationZ.Text = pre[2].ToString(); Session.GetSession().Parts.Work.ModelingViews.WorkView.Regenerate(); }
/// <summary> /// 获取备料 /// </summary> /// <param name="pitch"></param> /// <param name="zDatum">是否有基准台</param> /// <returns></returns> public abstract double[] GetPreparation(ElectrodePitchInfo pitch, bool zDatum);
public ElectrodePitchUpdate(ElectrodePitchInfo oldPitch, ElectrodePitchInfo newPitch) { this.oldPitch = oldPitch; this.newPitch = newPitch; }