/// <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="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); } }