/// <summary> /// 设置面边界 /// </summary> public static void SetBoundaryByFace(NXOpen.Tag faceTag, NXOpen.UF.CamGeomType camGeomType, NXOpen.Tag operTag, NXOpen.UF.CamMaterialSide materialSide) { var boundary_data = new NXOpen.UF.UFCambnd.BoundaryData(); boundary_data.boundary_type = NXOpen.UF.CamBoundaryType.CamBoundaryTypeClosed; boundary_data.plane_type = 1; boundary_data.material_side = materialSide; boundary_data.ignore_holes = 0; boundary_data.ignore_islands = 0; boundary_data.ignore_chamfers = 0; boundary_data.app_data = new NXOpen.UF.UFCambnd.AppData[] { }; ufSession.Cambnd.AppendBndFromFace(operTag, camGeomType, faceTag, ref boundary_data); }
/// <summary> /// 设置边界 /// </summary> public static void SetBoundary(Snap.Position origin, NXOpen.Tag faceTag, NXOpen.UF.CamGeomType camGeomType, NXOpen.Tag operTag, NXOpen.UF.CamMaterialSide materialSide) { SetBoundaryByFace(faceTag, camGeomType, operTag, materialSide); IntPtr[] Boundaries; int count; ufSession.Cambnd.AskBoundaries(operTag, camGeomType, out count, out Boundaries); for (int i = 0; i < count; i++) { NXOpen.Matrix3x3 identity = Snap.Orientation.Identity; ufSession.Cambnd.SetBoundaryPlane(Boundaries[i], origin.Array, new double[] { identity.Xx, identity.Xy, identity.Xz , identity.Yx, identity.Yy, identity.Yz , identity.Zx, identity.Zy, identity.Zz }); } }
/// <summary> /// 设置区域 /// </summary> public static void SetMillArea(NXOpen.UF.CamGeomType camGeomType, NXOpen.Tag operTag, List <NXOpen.Tag> cutAreaGeometryTags) { var appDatas = new List <NXOpen.UF.UFCamgeom.AppData>(); cutAreaGeometryTags.ForEach(u => { var appData = new NXOpen.UF.UFCamgeom.AppData(); appData.has_stock = 0; appData.has_cut_stock = 0; appData.has_tolerances = 0; appData.has_feedrate = 0; appData.has_offset = 0; appData.has_avoidance_type = 0; appData.offset = 0.1; appDatas.Add(appData); }); _ufSession.Camgeom.DeleteGeometry(operTag, camGeomType); _ufSession.Camgeom.AppendItems(operTag, camGeomType, cutAreaGeometryTags.Count, cutAreaGeometryTags.ToArray(), appDatas.ToArray()); }
/// <summary> /// 修剪边界 /// </summary> public static void SetBoundaryByCurves(List <NXOpen.Tag> curves, NXOpen.UF.CamGeomType camGeomType, NXOpen.Tag operTag, NXOpen.UF.CamMaterialSide materialSide) { var boundary_data = new NXOpen.UF.UFCambnd.BoundaryData(); boundary_data.boundary_type = NXOpen.UF.CamBoundaryType.CamBoundaryTypeClosed; boundary_data.plane_type = 1; boundary_data.origin = new double[] { 0, 0, 0 }; boundary_data.matrix = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; boundary_data.material_side = materialSide; boundary_data.ignore_holes = 0; boundary_data.ignore_islands = 0; boundary_data.ignore_chamfers = 0; boundary_data.app_data = null; var appDatas = new List <NXOpen.UF.UFCambnd.AppData>(); curves.ForEach(u => { var app_data_list = new NXOpen.UF.UFCambnd.AppData(); /* Set flags. */ app_data_list.has_stock = 1; app_data_list.has_tolerances = 0; app_data_list.has_feedrate = 0; app_data_list.has_blank_distance = 0; app_data_list.has_tool_position = 0; /* Set values. */ app_data_list.stock = 0.1; app_data_list.tolerances = new double[] { 0.1, 0.1 }; app_data_list.feedrate_unit = NXOpen.UF.CamFeedrateUnit.CamFeedrateUnitPerMinute; app_data_list.feedrate_value = 0.1; app_data_list.blank_distance = 0.0; app_data_list.tool_position = NXOpen.UF.CamToolPosition.CamToolPositionTanto; appDatas.Add(app_data_list); }); ufSession.Cambnd.AppendBndFromCurve(operTag, camGeomType, curves.Count, curves.ToArray(), ref boundary_data, appDatas.ToArray()); }
/// <summary> /// 删除边界 /// </summary> public static void DeleteBoundaries(NXOpen.Tag operTag, NXOpen.UF.CamGeomType camGeomType) { ufSession.Cambnd.DeleteBoundaries(operTag, camGeomType); }