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
            });
        }
Beispiel #3
0
 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");
 }
Beispiel #4
0
        /// <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);
            }
        }
Beispiel #5
0
        /// <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);
                }
            }
        }
Beispiel #6
0
 public ElectrodeERForm(int[] er, ElectrodePitchInfo pitch)
 {
     this.er    = er;
     this.pitch = pitch;
     InitializeComponent();
     this.textBoxXNumber.Text  = "1";
     this.textBox_YNumber.Text = "1";
 }
Beispiel #7
0
 /// <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());
     }
 }
Beispiel #8
0
        /// <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);
 }
Beispiel #10
0
        /// <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");
        }
Beispiel #11
0
        /// <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));
        }
Beispiel #13
0
        /// <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;
 }