/// <summary> /// 设置镜像属性 /// </summary> void SetGeomcopyAttr(Snap.NX.Body body, NXOpen.Plane plane, bool isJC) { if (isJC) { return; } var electrode = ElecManage.Electrode.GetElectrode(body); if (electrode == null) { return; } electrode.InitAllFace(); //var transRef = Snap.Geom.Transform.CreateReflection(new Snap.Geom.Surface.Plane(plane.Origin, plane.Normal)); Snap.NX.Face preXFace = null, preYFace = null; body.Faces.ToList().ForEach(u => { if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_X_FACE").Count() > 0) { u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE"); u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE"); preXFace = u; } else if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_Y_FACE").Count() > 0) { u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE"); u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE"); preYFace = u; } }); //if (preXFace == null || preYFace == null) return; var topDir = -electrode.BaseFace.GetFaceDirection(); var orientation = ElecManage.Electrode.GetSidelongOrientation(new Snap.Orientation(topDir)); var xFace = electrode.BaseSideFaces.FirstOrDefault(u => SnapEx.Helper.Equals(orientation.AxisX, u.GetFaceDirection())); var yFace = electrode.BaseSideFaces.FirstOrDefault(u => SnapEx.Helper.Equals(orientation.AxisY, u.GetFaceDirection())); if (xFace != null && yFace != null) { xFace.SetStringAttribute("EACT_ELECT_X_FACE", "1"); yFace.SetStringAttribute("EACT_ELECT_Y_FACE", "1"); } body.SetStringAttribute("EACT_EDM_OPERATE_DIR", ElecManage.Electrode.GetCNC_DIRECTION(topDir)); body.SetStringAttribute("EACT_ELEC_QUADRANT_OF_CHAMFER", ((int)electrode.GetQuadrantType(orientation) + 1).ToString()); }
/// <summary> /// 设置基准角相关属性 /// </summary> void SetJZJAttr(Snap.NX.Face _horizontalDatumFace, Snap.NX.Body body) { if (!toggle0.Value) { body.Faces.ToList().ForEach(u => { if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_X_FACE").Count() > 0) { u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE"); u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE"); u.SetStringAttribute("EACT_ELECT_Y_FACE", "1"); } else if (u.GetAttributeInfo().Where(m => m.Title == "EACT_ELECT_Y_FACE").Count() > 0) { u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_X_FACE"); u.DeleteAttributes(Snap.NX.NXObject.AttributeType.String, "EACT_ELECT_Y_FACE"); u.SetStringAttribute("EACT_ELECT_X_FACE", "1"); } }); } }
/// <summary> /// 设置基准面 /// </summary> static Snap.NX.Face SetBaseFace(Snap.NX.Block block, Vector normal) { Snap.NX.Face face = null; foreach (var f in block.Faces) { var n1 = Vector.Unit(f.Normal(f.BoxUV.MinU, f.BoxUV.MinV)); var n2 = Vector.Unit(normal); var angle = Vector.Angle(n1, n2); if (angle == 0) { f.Name = "BaseFace"; f.Translucency = 50; face = f; } else if (angle == 180) { f.Name = "BottomFace"; } } return(face); }
void SetEactElec(Snap.NX.Body body, Snap.NX.Face baseFace = null, Snap.NX.Face topFace = null, Snap.NX.Point basePoint = null) { selectBaseFace.SelectedObjects = new Snap.NX.NXObject[] { }; selectTopFace.SelectedObjects = new Snap.NX.NXObject[] { }; selectBaseFacePointEx.Position = new Snap.Position(); var pos = new Snap.Position(); ElecManage.Electrode.GetEactElectrode(body, ref topFace, ref baseFace, ref basePoint, ref pos); if (baseFace != null) { selectBaseFace.SelectedObjects = new Snap.NX.NXObject[] { baseFace }; } if (topFace != null) { selectTopFace.SelectedObjects = new Snap.NX.NXObject[] { topFace }; } selectBaseFacePointEx.Position = pos; if (baseFace != null && topFace != null) { //更新尺寸 var info = GetElecInfo(body); if (info != null) { strElecSize.Value = info.ElecSize; strElecCuttingSize.Value = info.ElecCuttingSize(_configData, EactConfig.MatchJiaju.GetMatchJiajuValue(_configData, cbbChuckType.SelectedIndex)); } else if (groupSElec.Show) //异形电极 { var tempInfo = new ElecManage.ElectrodeInfo(body); var tempOri = new Snap.Orientation(-baseFace.GetFaceDirection()); strElecSize.Value = tempInfo.GetElecSize(tempOri); strElecCuttingSize.Value = tempInfo.ElecCuttingSize(_configData, EactConfig.MatchJiaju.GetMatchJiajuValue(_configData, cbbChuckType.SelectedIndex), tempOri); } else { strElecSize.Value = string.Empty; strElecCuttingSize.Value = string.Empty; } } }
void UpdateEactElec(Snap.NX.Body body) { Snap.NX.Face topFace = null; Snap.NX.Face baseFace = null; Snap.NX.Point basePoint = null; Snap.Position pos = new Snap.Position(); ElecManage.Electrode.GetEactElectrode(body, ref topFace, ref baseFace, ref basePoint, ref pos); topFace = selectTopFace.SelectedObjects.FirstOrDefault() as Snap.NX.Face; baseFace = selectBaseFace.SelectedObjects.FirstOrDefault() as Snap.NX.Face; pos = selectBaseFacePointEx.Position; if (basePoint == null) { basePoint = Snap.Create.Point(pos); basePoint.Layer = body.Layer; basePoint.Color = System.Drawing.Color.Green; } else { basePoint.Position = pos; } ElecManage.Electrode.SetEactElectrode(body, ref topFace, ref baseFace, ref basePoint); }
public override void Apply() { var faces = new List <NXOpen.Face>(); face_select0.GetSelectedObjects().ToList().ForEach(u => { var face = u as NXOpen.Face; if (face != null) { faces.Add(face); } }); var ds = new List <double>(); if (enum0.ValueAsString == OffsetType.ALL) { for (int i = 0; i < 6; i++) { ds.Add(expressionALL.Value); } } else { ds.Add(expressionXPositive.Value); ds.Add(expressionXNegative.Value); ds.Add(expressionYPositive.Value); ds.Add(expressionYNegative.Value); ds.Add(expressionZPositive.Value); ds.Add(expressionZNegative.Value); } var nxObject = SnapEx.Create.Box(faces, ds[0], ds[1], ds[2], ds[3], ds[4], ds[5]); Snap.NX.Body body = nxObject.Bodies.FirstOrDefault(); Snap.NX.Face snapFace = faces.FirstOrDefault(); var trimBody = Snap.Create.TrimBody(body, snapFace, true); trimBody.Orphan(); }