/// <summary> /// 检查放电面积 /// </summary> /// <param name="csys"></param> /// <param name="eleCt"></param> private void AskSetVaule(CartesianCoordinateSystem csys, ElectrodeSetValueInfo setValue, Component eleCt, ref List <string> err) { Part elePart = eleCt.Prototype as Part; Point3d setPoint = new Point3d(setValue.EleSetValue[0], setValue.EleSetValue[1], setValue.EleSetValue[2]); Point pt = GetSetPoint(elePart); if (pt == null) { err.Add(elePart.Name + "-" + setValue.Positioning + " 无法找到设定点!"); } else if (!UMathUtils.IsEqual(setPoint, GetSetWorkPoint3d(pt, eleCt))) { err.Add(elePart.Name + "-" + setValue.Positioning + " 设定值错误!"); } Body eleBody = GetOccsInBods(eleCt); BodyInfo info = GetDischargeFace(csys, eleBody); if (info != null) { double newArea = info.GetProjectedArea(csys, work.Info.Matr); if (setValue.ProjectedArea >= 2 * newArea) { setValue.ProjectedArea = newArea; setValue.ContactArea = info.ContactArea; setValue.SetAttribute(eleCt); } } }
/// <summary> /// 复制电极 /// </summary> /// <param name="eleCt"></param> /// <param name="workPt"></param> /// <returns></returns> public List <string> LoadEle(NXOpen.Assemblies.Component eleCt, Part workPt) { Matrix3x3 mat; Point3d setPt; List <string> err = new List <string>(); eleCt.GetPosition(out setPt, out mat); ElectrodeSetValueInfo setValue = ElectrodeSetValueInfo.GetAttribute(eleCt); NXOpen.PartLoadStatus partLoadStatus1 = null; string partPath = (eleCt.Prototype as Part).FullPath; try { NXOpen.Assemblies.Component copyCt = workPt.ComponentAssembly.AddComponent(partPath, "None", eleCt.Name, setPt, mat, -1, out partLoadStatus1, true); NXObject obj = AssmbliesUtils.GetOccOfInstance(copyCt.Tag); bool attOk = setValue.SetAttribute(obj); AttributeUtils.AttributeOperation("EleComponentCopy", 1, obj); if (!attOk) { err.Add("写入属性错误!"); } } catch (NXException ex) { err.Add(eleCt.Name + "复制电极错误! " + ex.Message); } return(err); }
/// <summary> /// 移动 /// </summary> /// <param name="vec"></param> /// <returns></returns> public bool MovePositionBuilder(Vector3d vec) { try { Matrix4 inv = this.work.Info.Matr.GetInversMatrix(); CartesianCoordinateSystem csys = BoundingBoxUtils.CreateCoordinateSystem(this.work.Info.Matr, inv); ElectrodeSetValueInfo setValue = ElectrodeSetValueInfo.GetAttribute(eleComp); ElectrodeSetValueInfo newSetValue = setValue.Clone() as ElectrodeSetValueInfo; AssmbliesUtils.MoveCompPart(eleComp, vec, work.Info.Matr); NXObject instance = AssmbliesUtils.GetOccOfInstance(eleComp.Tag); BodyInfo info = GetDischargeFace(csys, eleComp); newSetValue.EleSetValue[0] = setValue.EleSetValue[0] + vec.X; newSetValue.EleSetValue[1] = setValue.EleSetValue[1] + vec.Y; newSetValue.EleSetValue[2] = setValue.EleSetValue[2] + vec.Z; newSetValue.Positioning = GetPositionName(); newSetValue.PositioningRemark = "设定值改变"; if (info != null) { newSetValue.ContactArea = info.ContactArea; newSetValue.ProjectedArea = info.GetProjectedArea(csys, this.work.Info.Matr); } newSetValue.SetAttribute(instance); return(true); } catch (NXException ex) { ClassItem.WriteLogFile("电极跑位错误!" + ex.Message); return(false); } }
/// <summary> /// AB齿跑位 /// </summary> /// <param name="eleComp"></param> public void MoveEleComp(NXOpen.Assemblies.Component eleComp) { for (int i = 1; i < condition.ToolhInfo.Count; i++) { Vector3d temp = new Vector3d(); temp.X = -condition.ToolhInfo[i].Offset[0]; temp.Y = -condition.ToolhInfo[i].Offset[1]; temp.Z = 0; NXOpen.Assemblies.Component ct = AssmbliesUtils.MoveCompCopyPart(eleComp, temp, condition.Work.Info.Matr); NXObject instance = AssmbliesUtils.GetOccOfInstance(ct.Tag); ElectrodeSetValueInfo setValue = allInfo.SetValue.Clone() as ElectrodeSetValueInfo; setValue.EleSetValue[0] = setValue.EleSetValue[0] + temp.X; setValue.EleSetValue[1] = setValue.EleSetValue[1] + temp.Y; setValue.ContactArea = condition.ToolhInfo[i].GetAllContactArea(); setValue.ProjectedArea = condition.ToolhInfo[i].GetProjectedArea(condition.Work.Info.Matr); setValue.Positioning = condition.ToolhInfo[i].ToolhName; setValue.SetAttribute(instance); } }