1 // NX 1930 2 // Journal created by Administrator on Wed Jul 29 11:53:25 2020 中国标准时间 3 4 // 5 #include <uf_defs.h> 6 #include <NXOpen/NXException.hxx> 7 #include <NXOpen/Session.hxx> 8 #include <NXOpen/Axis.hxx> 9 #include <NXOpen/BasePart.hxx> 10 #include <NXOpen/Builder.hxx> 11 #include <NXOpen/CAM_AcrossVoids.hxx> 12 #include <NXOpen/CAM_ArcOutputTypeCiBuilder.hxx> 13 #include <NXOpen/CAM_AvoidanceMethodsBuilder.hxx> 14 #include <NXOpen/CAM_BlankIpw.hxx> 15 #include <NXOpen/CAM_BlankIpwMultipleSource.hxx> 16 #include <NXOpen/CAM_BlankIpwSet.hxx> 17 #include <NXOpen/CAM_BlankIpwSetList.hxx> 18 #include <NXOpen/CAM_Boundary.hxx> 19 #include <NXOpen/CAM_BoundaryPlanarMill.hxx> 20 #include <NXOpen/CAM_BoundarySet.hxx> 21 #include <NXOpen/CAM_BoundarySetList.hxx> 22 #include <NXOpen/CAM_CAMSetup.hxx> 23 #include <NXOpen/CAM_CavityMilling.hxx> 24 #include <NXOpen/CAM_CavityMillingBuilder.hxx> 25 #include <NXOpen/CAM_CleanupOutput.hxx> 26 #include <NXOpen/CAM_CleanupSettings.hxx> 27 #include <NXOpen/CAM_CornerControlBuilder.hxx> 28 #include <NXOpen/CAM_CutAngle.hxx> 29 #include <NXOpen/CAM_CutDirection.hxx> 30 #include <NXOpen/CAM_CutLevel.hxx> 31 #include <NXOpen/CAM_CutLevelPlanar.hxx> 32 #include <NXOpen/CAM_CutParameters.hxx> 33 #include <NXOpen/CAM_CutPatternBuilder.hxx> 34 #include <NXOpen/CAM_CutVolumeGeom.hxx> 35 #include <NXOpen/CAM_Cycle.hxx> 36 #include <NXOpen/CAM_DisplayPaint.hxx> 37 #include <NXOpen/CAM_DisplayPath.hxx> 38 #include <NXOpen/CAM_DisplaySilhouette.hxx> 39 #include <NXOpen/CAM_DisplayTool.hxx> 40 #include <NXOpen/CAM_ExtendAtEdges.hxx> 41 #include <NXOpen/CAM_FaceMilling.hxx> 42 #include <NXOpen/CAM_FaceMillingBuilder.hxx> 43 #include <NXOpen/CAM_FeatureGeomBuilder.hxx> 44 #include <NXOpen/CAM_FeatureGeometry.hxx> 45 #include <NXOpen/CAM_FeedsBuilder.hxx> 46 #include <NXOpen/CAM_FeedsOptimizationData.hxx> 47 #include <NXOpen/CAM_FinishPassesBuilder.hxx> 48 #include <NXOpen/CAM_Geometry.hxx> 49 #include <NXOpen/CAM_GeometryCiBuilder.hxx> 50 #include <NXOpen/CAM_GeometryGroup.hxx> 51 #include <NXOpen/CAM_GeometrySet.hxx> 52 #include <NXOpen/CAM_GeometrySetList.hxx> 53 #include <NXOpen/CAM_HoleBossGeom.hxx> 54 #include <NXOpen/CAM_Inheritable2dLength.hxx> 55 #include <NXOpen/CAM_InheritableDoubleBuilder.hxx> 56 #include <NXOpen/CAM_InheritableFeedBuilder.hxx> 57 #include <NXOpen/CAM_InheritableFeedModeBuilder.hxx> 58 #include <NXOpen/CAM_InheritableIntBuilder.hxx> 59 #include <NXOpen/CAM_InheritableTextBuilder.hxx> 60 #include <NXOpen/CAM_InheritableToolDepBuilder.hxx> 61 #include <NXOpen/CAM_LayoutCiBuilder.hxx> 62 #include <NXOpen/CAM_LevelToLevel.hxx> 63 #include <NXOpen/CAM_LowerLimit.hxx> 64 #include <NXOpen/CAM_MaxCutTraverse.hxx> 65 #include <NXOpen/CAM_Method.hxx> 66 #include <NXOpen/CAM_MillBoundaryGeomBuilder.hxx> 67 #include <NXOpen/CAM_MillCutParameters.hxx> 68 #include <NXOpen/CAM_MillGeomBuilder.hxx> 69 #include <NXOpen/CAM_MillOperationBuilder.hxx> 70 #include <NXOpen/CAM_MinCutVolume.hxx> 71 #include <NXOpen/CAM_MultiBladeBaseGeometry.hxx> 72 #include <NXOpen/CAM_MultiBladeSplittersGeometry.hxx> 73 #include <NXOpen/CAM_MultiDepthCut.hxx> 74 #include <NXOpen/CAM_MultiplePassesBuilder.hxx> 75 #include <NXOpen/CAM_MultipleStepoverBuilder.hxx> 76 #include <NXOpen/CAM_NCGroup.hxx> 77 #include <NXOpen/CAM_NCGroupBuilder.hxx> 78 #include <NXOpen/CAM_NCGroupCollection.hxx> 79 #include <NXOpen/CAM_NcmAvoidancePointBuilder.hxx> 80 #include <NXOpen/CAM_NcmClearanceBuilder.hxx> 81 #include <NXOpen/CAM_NcmPlanarBuilder.hxx> 82 #include <NXOpen/CAM_NcmPlanarEngRetBuilder.hxx> 83 #include <NXOpen/CAM_NcmSmoothingBuilder.hxx> 84 #include <NXOpen/CAM_NcmSubopBuilder.hxx> 85 #include <NXOpen/CAM_NcmTransfer.hxx> 86 #include <NXOpen/CAM_Notes.hxx> 87 #include <NXOpen/CAM_Operation.hxx> 88 #include <NXOpen/CAM_OperationBuilder.hxx> 89 #include <NXOpen/CAM_OperationCollection.hxx> 90 #include <NXOpen/CAM_OperationDisplayOptionsBuilder.hxx> 91 #include <NXOpen/CAM_OutputUncutRegions.hxx> 92 #include <NXOpen/CAM_ParamBuilder.hxx> 93 #include <NXOpen/CAM_PathDisplayColors.hxx> 94 #include <NXOpen/CAM_PlanarMilling.hxx> 95 #include <NXOpen/CAM_PlanarMillingBuilder.hxx> 96 #include <NXOpen/CAM_PlanarOperationBuilder.hxx> 97 #include <NXOpen/CAM_PostEventsCiBuilder.hxx> 98 #include <NXOpen/CAM_RoundPointBuilder.hxx> 99 #include <NXOpen/CAM_SmallAreaAvoidance.hxx> 100 #include <NXOpen/CAM_Splitter.hxx> 101 #include <NXOpen/CAM_SplitterList.hxx> 102 #include <NXOpen/CAM_SpunOutlineGeom.hxx> 103 #include <NXOpen/CAM_SteepContainment.hxx> 104 #include <NXOpen/CAM_StepoverBuilder.hxx> 105 #include <NXOpen/CAM_StockPerPassBuilder.hxx> 106 #include <NXOpen/CAM_Tool.hxx> 107 #include <NXOpen/CAM_ToolAxisBase.hxx> 108 #include <NXOpen/CAM_ToolAxisChange.hxx> 109 #include <NXOpen/CAM_ToolAxisFixed.hxx> 110 #include <NXOpen/CAM_ToolAxisTilt.hxx> 111 #include <NXOpen/CAM_ToolChangeCiBuilder.hxx> 112 #include <NXOpen/CAM_ToolPathEditorBuilder.hxx> 113 #include <NXOpen/CAM_ToolPathSplitParametersBuilder.hxx> 114 #include <NXOpen/CAM_Topology.hxx> 115 #include <NXOpen/CAM_TrochoidalSettings.hxx> 116 #include <NXOpen/CAM_Ude.hxx> 117 #include <NXOpen/CAM_UdeList.hxx> 118 #include <NXOpen/CAM_UdeSet.hxx> 119 #include <NXOpen/CAM_UpDownCutting.hxx> 120 #include <NXOpen/CAM_ZAxisSmoothing.hxx> 121 #include <NXOpen/CartesianCoordinateSystem.hxx> 122 #include <NXOpen/CoordinateSystem.hxx> 123 #include <NXOpen/CAM_ParamBuilder.hxx> 124 #include <NXOpen/CAM_ProgramOrderGroupBuilder.hxx> 125 #include <NXOpen/Direction.hxx> 126 #include <NXOpen/Expression.hxx> 127 #include <NXOpen/ExpressionCollection.hxx> 128 #include <NXOpen/IPlane.hxx> 129 #include <NXOpen/NXObject.hxx> 130 #include <NXOpen/Part.hxx> 131 #include <NXOpen/PartCollection.hxx> 132 #include <NXOpen/Plane.hxx> 133 #include <NXOpen/PlaneCollection.hxx> 134 #include <NXOpen/Point.hxx> 135 #include <NXOpen/PreviewBuilder.hxx> 136 #include <NXOpen/ScCollector.hxx> 137 #include <NXOpen/Session.hxx> 138 #include <NXOpen/SmartObject.hxx> 139 #include <NXOpen/Unit.hxx> 140 #include <NXOpen/UnitCollection.hxx> 141 142 #include "C:\all_uf.h" 143 144 #include <NXOpen/CAM_CAMSession.hxx> 145 #include <NXOpen/CAM_CAMSetup.hxx> 146 #include <NXOpen/CAM_PathDisplay.hxx> 147 #include <NXOpen/Part.hxx> 148 #include <NXOpen/PartCollection.hxx> 149 #include <NXOpen/SIM_KinematicConfigurator.hxx> 150 #include <NXOpen/CAM_Cycle.hxx> 151 #include <NXOpen/CAM_HolderSectionBuilder.hxx> 152 #include <NXOpen/CAM_InheritableDoubleBuilder.hxx> 153 #include <NXOpen/CAM_InheritableIntBuilder.hxx> 154 #include <NXOpen/CAM_InheritableToolDepBuilder.hxx> 155 #include <NXOpen/CAM_MillToolBuilder.hxx> 156 #include <NXOpen/CAM_MillingToolBuilder.hxx> 157 #include <NXOpen/CAM_MillingTrackpointBuilder.hxx> 158 #include <NXOpen/CAM_NCGroup.hxx> 159 #include <NXOpen/CAM_NCGroupBuilder.hxx> 160 #include <NXOpen/CAM_NCGroupCollection.hxx> 161 #include <NXOpen/CAM_ParamBuilder.hxx> 162 #include <NXOpen/CAM_Tool.hxx> 163 #include <NXOpen/CAM_ToolBuilder.hxx> 164 #include <NXOpen/CAM_Ude.hxx> 165 #include <NXOpen/CAM_UdeList.hxx> 166 #include <NXOpen/CAM_UdeSet.hxx> 167 #include <NXOpen/NXObject.hxx> 168 169 #include <NXOpen/CAM_NcmAvoidancePointBuilder.hxx> 170 #include <NXOpen/CAM_NcmClearanceBuilder.hxx> 171 #include <NXOpen/CAM_OrientGeomBuilder.hxx> 172 #include <NXOpen/CAM_OrientGeometry.hxx> 173 #include <NXOpen/CAM_InheritableIntBuilder.hxx> 174 #include <NXOpen/CAM_LayoutCiBuilder.hxx> 175 #include <NXOpen/CAM_MillOrientGeomBuilder.hxx> 176 177 #include <NXOpen/CAM_CutParameters.hxx> 178 #include <NXOpen/CAM_Method.hxx> 179 #include <NXOpen/CAM_MethodBuilder.hxx> 180 #include <NXOpen/CAM_MillMethodBuilder.hxx> 181 182 #define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))) 183 184 static int report_error(char *file, int line, char *call, int irc) 185 { 186 if (irc) 187 { 188 char err[133], msg[133]; 189 sprintf(msg, "*** ERROR code %d at line %d in %s: +++ ", 190 irc, line, file); 191 UF_get_fail_message(irc, err); 192 UF_print_syslog(msg, FALSE); 193 UF_print_syslog(err, FALSE); 194 UF_print_syslog(" ", FALSE); 195 UF_print_syslog(call, FALSE); 196 UF_print_syslog("; ", FALSE); 197 198 if (!UF_UI_open_listing_window()) 199 { 200 UF_UI_write_listing_window(msg); 201 UF_UI_write_listing_window(err); 202 UF_UI_write_listing_window(" "); 203 UF_UI_write_listing_window(call); 204 UF_UI_write_listing_window("; "); 205 } 206 } 207 return(irc); 208 } 209 210 // We are currently testing removal of using namespace NXOpen. 211 // Uncomment the below line if your journal does not compile. 212 using namespace NXOpen; 213 214 extern "C" DllExport int ufusr_ask_unload() 215 { 216 return (int)Session::LibraryUnloadOptionImmediately; 217 } 218 219 static void createTool()//创建刀具 220 { 221 NXOpen::Session *theSession = NXOpen::Session::GetSession(); 222 NXOpen::Part *workPart(theSession->Parts()->Work()); 223 NXOpen::Part *displayPart(theSession->Parts()->Display()); 224 NXOpen::CAM::NCGroup *nCGroup1(dynamic_cast<NXOpen::CAM::NCGroup *>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("GENERIC_MACHINE"))); 225 NXOpen::CAM::NCGroup *nCGroup2; 226 nCGroup2 = workPart->CAMSetup()->CAMGroupCollection()->CreateTool(nCGroup1, "mill_planar", "MILL", NXOpen::CAM::NCGroupCollection::UseDefaultNameFalse, "D8"); 227 228 NXOpen::CAM::Tool *tool1(dynamic_cast<NXOpen::CAM::Tool *>(nCGroup2)); 229 NXOpen::CAM::MillToolBuilder *millToolBuilder1; 230 millToolBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateMillToolBuilder(tool1); 231 // ---------------------------------------------- 232 millToolBuilder1->TlDiameterBuilder()->SetValue(8.0); 233 millToolBuilder1->TlNumberBuilder()->SetValue(8); 234 millToolBuilder1->TlAdjRegBuilder()->SetValue(0); 235 millToolBuilder1->TlCutcomRegBuilder()->SetValue(0); 236 NXOpen::NXObject *nXObject1; 237 nXObject1 = millToolBuilder1->Commit(); 238 millToolBuilder1->Destroy(); 239 240 } 241 242 static void Create_Method(char *str)//创建方法 243 { 244 NXOpen::Session *theSession = NXOpen::Session::GetSession(); 245 NXOpen::Part *workPart(theSession->Parts()->Work()); 246 NXOpen::Part *displayPart(theSession->Parts()->Display()); 247 NXOpen::CAM::Method *method1(dynamic_cast<NXOpen::CAM::Method *>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("METHOD"))); 248 NXOpen::CAM::NCGroup *nCGroup0; 249 nCGroup0 = workPart->CAMSetup()->CAMGroupCollection()->CreateMethod(method1, "NF", "0", NXOpen::CAM::NCGroupCollection::UseDefaultNameFalse, str); 250 NXOpen::CAM::Method *method2(dynamic_cast<NXOpen::CAM::Method *>(nCGroup0)); 251 NXOpen::CAM::MillMethodBuilder *millMethodBuilder1; 252 millMethodBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateMillMethodBuilder(method2); 253 millMethodBuilder1->CutParameters()->PartStock()->SetValue(0.07); 254 NXOpen::NXObject *nXObject1; 255 nXObject1 = millMethodBuilder1->Commit(); 256 millMethodBuilder1->Destroy(); 257 } 258 259 static void create_mcs(char *msc)//创建MCS 260 { 261 NXOpen::Session *theSession = NXOpen::Session::GetSession(); 262 NXOpen::Part *workPart(theSession->Parts()->Work()); 263 NXOpen::Part *displayPart(theSession->Parts()->Display()); 264 NXOpen::CAM::NCGroup *nCGroup2(dynamic_cast<NXOpen::CAM::NCGroup *>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("GEOMETRY"))); 265 NXOpen::CAM::NCGroup *nCGroup3; 266 nCGroup3 = workPart->CAMSetup()->CAMGroupCollection()->CreateGeometry(nCGroup2, "NF", "MCS", NXOpen::CAM::NCGroupCollection::UseDefaultNameFalse, msc); 267 NXOpen::CAM::OrientGeometry *orientGeometry1(dynamic_cast<NXOpen::CAM::OrientGeometry *>(nCGroup3)); 268 NXOpen::CAM::MillOrientGeomBuilder *millOrientGeomBuilder1; 269 millOrientGeomBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateMillOrientGeomBuilder(orientGeometry1); 270 NXOpen::CAM::OrientGeomBuilder::CsysPurposeModes csyspurposemode1; 271 csyspurposemode1 = millOrientGeomBuilder1->GetCsysPurposeMode(); 272 NXOpen::CAM::OrientGeomBuilder::SpecialOutputModes specialoutputmode1; 273 specialoutputmode1 = millOrientGeomBuilder1->GetSpecialOutputMode(); 274 NXOpen::CAM::OrientGeomBuilder::ToolAxisModes toolaxismode1; 275 toolaxismode1 = millOrientGeomBuilder1->GetToolAxisMode(); 276 NXOpen::Point3d origin1(0.0, 0.0, 0.0); 277 NXOpen::Vector3d normal1(0.0, 0.0, 1.0); 278 NXOpen::Plane *plane1; 279 plane1 = workPart->Planes()->CreatePlane(origin1, normal1, NXOpen::SmartObject::UpdateOptionAfterModeling); 280 NXOpen::CAM::MillOrientGeomBuilder::LowerLimitModes lowerlimitmode1; 281 lowerlimitmode1 = millOrientGeomBuilder1->GetLowerLimitMode(); 282 NXOpen::NXObject *nXObject1; 283 nXObject1 = millOrientGeomBuilder1->Commit(); 284 millOrientGeomBuilder1->Destroy(); 285 plane1->DestroyPlane(); 286 } 287 288 extern "C" DllExport void ufusr(char* param, int* retCode, int paramLen) 289 { 290 try 291 { 292 UF_initialize(); 293 Session* theSession = Session::GetSession(); 294 Part* workPart(theSession->Parts()->Work()); 295 Part* displayPart(theSession->Parts()->Display()); 296 tag_t Tooltag = NULL_TAG; 297 tag_t setuptag = NULL_TAG; 298 tag_t mctTag = NULL_TAG; 299 tag_t geomtag = NULL_TAG; 300 tag_t MCStag = NULL_TAG; 301 tag_t Meth_tag = NULL_TAG; 302 tag_t ncMeth_tag = NULL_TAG; 303 304 UF_SETUP_ask_setup(&setuptag); 305 CAM::CAMSetup *cAMSetup1; 306 cAMSetup1 = workPart->CreateCamSetup("NF"); 307 CAM::NCGroup* nCGroup1; 308 UF_SETUP_ask_geom_root(setuptag, &geomtag);//获取几何TAG 309 UF_NCGROUP_ask_object_of_name(geomtag, "MCS_MILL", &MCStag); 310 if (MCStag) 311 { 312 nCGroup1 = (dynamic_cast<CAM::NCGroup*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("MCS_MILL"))); 313 } 314 else 315 { 316 create_mcs("MCS_MILL"); 317 nCGroup1 = (dynamic_cast<CAM::NCGroup*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("MCS_MILL"))); 318 } 319 //设置安全高度 320 MCStag = workPart->CAMSetup()->CAMGroupCollection()->FindObject("MCS_MILL")->Tag(); 321 double origin[3] = { 0.0,0.0,30.0 }; 322 double normal[3] = { 0.0,0.0,1.0 }; 323 int err = UF_CAM_set_clear_plane_data(MCStag, origin, normal); 324 if (err) 325 { 326 char msg[256]; 327 UF_get_fail_message(err, msg); 328 uc1601(msg, 1); 329 } 330 CAM::NCGroup* nCGroup4; 331 nCGroup4 = workPart->CAMSetup()->CAMGroupCollection()->CreateGeometry(nCGroup1, "NF", "WORKPIECE", CAM::NCGroupCollection::UseDefaultNameTrue, "WORKPIECE");//使用默认名 332 CAM::FeatureGeometry* featureGeometry1(dynamic_cast<CAM::FeatureGeometry*>(nCGroup4)); 333 CAM::MillGeomBuilder* millGeomBuilder1; 334 millGeomBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateMillGeomBuilder(featureGeometry1); 335 NXObject* nXObject1; 336 nXObject1 = millGeomBuilder1->Commit(); 337 millGeomBuilder1->Destroy(); 338 339 int count = 0; 340 char obj_name[256] = ""; 341 char obj_name1[256] = ""; 342 tag_t* objects = NULL; 343 CAM::NCGroup* nCGroup3; 344 UF_UI_ONT_ask_selected_nodes(&count, &objects); 345 if (objects != NULL) 346 { 347 int Type = 0, Subtype = 0; 348 UF_OBJ_ask_type_and_subtype(objects[0], &Type, &Subtype); 349 if (Type == UF_machining_task_type && Subtype == UF_mach_order_task_subtype) 350 { 351 UF_OBJ_ask_name(objects[0], obj_name); 352 nCGroup3 = workPart->CAMSetup()->CAMGroupCollection()->FindObject(obj_name); 353 } 354 else 355 { 356 CAM::NCGroup* nCGroup; 357 UF_OBJ_ask_name(objects[0], obj_name1); 358 nCGroup = workPart->CAMSetup()->CAMGroupCollection()->FindObject(obj_name1); 359 nCGroup3 = nCGroup->GetParent(); 360 } 361 } 362 else 363 { 364 tag_t programs = NULL_TAG; 365 UF_OBJ_cycle_by_name_and_type(UF_ASSEM_ask_work_part(), "PROGRAM", UF_machining_task_type, false, &programs); 366 if (programs) 367 nCGroup3 = workPart->CAMSetup()->CAMGroupCollection()->FindObject("PROGRAM"); 368 else 369 { 370 CAM::NCGroup *NCGroup1(dynamic_cast<CAM::NCGroup *>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("NC_PROGRAM"))); 371 CAM::NCGroup *NCGroup2; 372 NCGroup2 = workPart->CAMSetup()->CAMGroupCollection()->CreateProgram(NCGroup1, "NF", "PROGRAM", CAM::NCGroupCollection::UseDefaultNameTrue, "PROGRAM"); 373 CAM::ProgramOrderGroupBuilder *programOrderGroupBuilder1; 374 programOrderGroupBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateProgramOrderGroupBuilder(NCGroup1); 375 NXObject *NXObject1; 376 NXObject1 = programOrderGroupBuilder1->Commit(); 377 programOrderGroupBuilder1->Destroy(); 378 nCGroup3 = NCGroup2; 379 } 380 } 381 UF_SETUP_ask_mthd_root(setuptag, &Meth_tag); 382 UF_NCGROUP_ask_object_of_name(Meth_tag, "0.07", &ncMeth_tag); 383 CAM::Method* method1; 384 if (ncMeth_tag) 385 { 386 method1=dynamic_cast<CAM::Method*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("0.07")); 387 } 388 else 389 { 390 Create_Method("0.07");//创建方法 391 method1 = dynamic_cast<CAM::Method*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("0.07")); 392 } 393 CAM::Tool* tool1; 394 UF_SETUP_ask_mct_root(setuptag, &mctTag); 395 UF_NCGROUP_ask_object_of_name(mctTag, "D8", &Tooltag); 396 if (Tooltag) //存在 397 { 398 tool1 = dynamic_cast<CAM::Tool*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("D8")); 399 } 400 else //不存在 401 { 402 createTool(); //创建一把刀 403 tool1 = dynamic_cast<CAM::Tool*>(workPart->CAMSetup()->CAMGroupCollection()->FindObject("D8")); 404 } 405 CAM::FeatureGeometry* featureGeometry2(dynamic_cast<CAM::FeatureGeometry*>(nXObject1)); 406 CAM::Operation* operation1; 407 operation1 = workPart->CAMSetup()->CAMOperationCollection()->Create(nCGroup3, method1, tool1, featureGeometry2, "NF", "FACE_M", CAM::OperationCollection::UseDefaultNameTrue, "FACE_M"); 408 CAM::FaceMilling* faceMilling1(dynamic_cast<CAM::FaceMilling*>(operation1)); 409 CAM::FaceMillingBuilder* faceMillingBuilder1; 410 Direction* nullNXOpen_Direction(NULL); 411 faceMillingBuilder1 = workPart->CAMSetup()->CAMOperationCollection()->CreateFaceMillingBuilder(faceMilling1); 412 // ---------------------------------------------- 413 // Dialog Begin Face M - [FACE_M] 414 // ---------------------------------------------- 415 faceMillingBuilder1->NonCuttingBuilder()->EngageOpenAreaBuilder()->SetVector(nullNXOpen_Direction); 416 faceMillingBuilder1->CutParameters()->FloorStock()->SetValue(0.0);//底部余量 417 faceMillingBuilder1->CutParameters()->SetExtendToPart(true);//延伸到部件轮廓 418 faceMillingBuilder1->BndStepover()->PercentToolFlatBuilder()->SetValue(50.0);//平面刀具直径百分比 419 faceMillingBuilder1->CutParameters()->BlankDistance()->SetValue(0.50);//毛坯距离 420 faceMillingBuilder1->DepthPerCut()->SetValue(0.0);//每刀深度 421 faceMillingBuilder1->FeedsBuilder()->FeedCutBuilder()->SetValue(2000.0);//进给 422 faceMillingBuilder1->NonCuttingBuilder()->EngageClosedAreaBuilder()->SetEngRetType(CAM::NcmPlanarEngRetBuilder::EngRetTypesSameAsEngage);//进刀 423 faceMillingBuilder1->FeedsBuilder()->SpindleRpmBuilder()->SetValue(6000.0);//主轴转速 424 //faceMillingBuilder1->FeedsBuilder()->RecalculateData(CAM::FeedsBuilder::RecalcuateBasedOnSpindleSpeed);//计算器 425 NXObject* nXObject2; 426 nXObject2 = faceMillingBuilder1->Commit(); 427 faceMillingBuilder1->Destroy(); 428 429 // ---------------------------------------------- 430 // Dialog Begin Cavity M - [CAVITY_M] 431 // ---------------------------------------------- 432 CAM::Operation* operation2; 433 operation2 = workPart->CAMSetup()->CAMOperationCollection()->Create(nCGroup3, method1, tool1, featureGeometry2, "NF", "CAVITY_M", CAM::OperationCollection::UseDefaultNameTrue, "CAVITY_M"); 434 CAM::CavityMilling* cavityMilling1(dynamic_cast<CAM::CavityMilling*>(operation2)); 435 CAM::CavityMillingBuilder* cavityMillingBuilder1; 436 cavityMillingBuilder1 = workPart->CAMSetup()->CAMOperationCollection()->CreateCavityMillingBuilder(cavityMilling1); 437 cavityMillingBuilder1->CutParameters()->PartStock()->SetValue(0.1); 438 cavityMillingBuilder1->BndStepover()->PercentToolFlatBuilder()->SetValue(60.0);//平面刀具直径百分比 439 cavityMillingBuilder1->CutLevel()->GlobalDepthPerCut()->DistanceBuilder()->SetValue(0.5); 440 cavityMillingBuilder1->CutParameters()->SetPatternDirection(CAM::CutParametersPatternDirectionTypesInward);//向内 441 cavityMillingBuilder1->NonCuttingBuilder()->EngageOpenAreaBuilder()->SetVector(nullNXOpen_Direction); 442 cavityMillingBuilder1->SetIslandCleanup(true);//设置孤岛清理 443 cavityMillingBuilder1->NonCuttingBuilder()->EngageClosedAreaBuilder()->SetEngRetType(CAM::NcmPlanarEngRetBuilder::EngRetTypesSameAsEngage); 444 cavityMillingBuilder1->NonCuttingBuilder()->EngageOpenAreaBuilder()->HeightBuilder()->SetValue(1.0);//进刀高度 445 //cavityMillingBuilder1->FeedsBuilder()->RecalculateData(CAM::FeedsBuilder::RecalcuateBasedOnSpindleSpeed); 446 cavityMillingBuilder1->FeedsBuilder()->FeedCutBuilder()->SetValue(2000.0); 447 cavityMillingBuilder1->FeedsBuilder()->SpindleRpmBuilder()->SetValue(6000.0); 448 //cavityMillingBuilder1->FeedsBuilder()->RecalculateData(CAM::FeedsBuilder::RecalcuateBasedOnCutFeedRate); 449 NXObject* nXObject3; 450 nXObject3 = cavityMillingBuilder1->Commit(); 451 cavityMillingBuilder1->Destroy(); 452 // ---------------------------------------------- 453 // Dialog Begin 铣削边界 454 // ---------------------------------------------- 455 CAM::NCGroup* nCGroup5; 456 nCGroup5 = workPart->CAMSetup()->CAMGroupCollection()->CreateGeometry(featureGeometry2, "NF", "MILL_BND", CAM::NCGroupCollection::UseDefaultNameTrue, "MILL_BND");//使用默认名创建边界 457 CAM::FeatureGeometry* featureGeometry3(dynamic_cast<CAM::FeatureGeometry*>(nCGroup5)); 458 CAM::MillBoundaryGeomBuilder* millBoundaryGeomBuilder1; 459 millBoundaryGeomBuilder1 = workPart->CAMSetup()->CAMGroupCollection()->CreateMillBoundaryGeomBuilder(featureGeometry3); 460 NXObject* nXObject5; 461 nXObject5 = millBoundaryGeomBuilder1->Commit(); 462 millBoundaryGeomBuilder1->Destroy(); 463 // ---------------------------------------------- 464 // Dialog Begin Wx 1 - [WX_1] 465 // ---------------------------------------------- 466 CAM::FeatureGeometry* featureGeometry4(dynamic_cast<CAM::FeatureGeometry*>(nXObject5)); 467 CAM::Operation* operation3; 468 operation3 = workPart->CAMSetup()->CAMOperationCollection()->Create(nCGroup3, method1, tool1, featureGeometry4, "NF", "WX_1", CAM::OperationCollection::UseDefaultNameTrue, "WX_1"); 469 CAM::PlanarMilling* planarMilling1(dynamic_cast<CAM::PlanarMilling*>(operation3)); 470 CAM::PlanarMillingBuilder* planarMillingBuilder1; 471 planarMillingBuilder1 = workPart->CAMSetup()->CAMOperationCollection()->CreatePlanarMillingBuilder(planarMilling1); 472 planarMillingBuilder1->CutLevel()->CommonDepth()->SetValue(0.5); 473 planarMillingBuilder1->NonCuttingBuilder()->OverlapDistanceBuilder()->SetValue(0.2);//重叠距离 474 planarMillingBuilder1->FeedsBuilder()->SpindleRpmBuilder()->SetValue(6000); 475 planarMillingBuilder1->FeedsBuilder()->FeedCutBuilder()->SetValue(2200.0); 476 //planarMillingBuilder1->FeedsBuilder()->RecalculateData(CAM::FeedsBuilder::RecalcuateBasedOnSpindleSpeed); 477 NXObject* nXObject6; 478 nXObject6 = planarMillingBuilder1->Commit(); 479 planarMillingBuilder1->Destroy(); 480 // ---------------------------------------------- 481 // Dialog Begin Mill F - [MILL_F] 482 // ---------------------------------------------- 483 CAM::Operation* operation4; 484 operation4 = workPart->CAMSetup()->CAMOperationCollection()->Create(nCGroup3, method1, tool1, featureGeometry4, "NF", "MILL_F", CAM::OperationCollection::UseDefaultNameTrue, "MILL_F"); 485 CAM::PlanarMilling* planarMilling2(dynamic_cast<CAM::PlanarMilling*>(operation4)); 486 CAM::PlanarMillingBuilder* planarMillingBuilder2; 487 planarMillingBuilder2 = workPart->CAMSetup()->CAMOperationCollection()->CreatePlanarMillingBuilder(planarMilling2); 488 planarMillingBuilder2->CutParameters()->PartStock()->SetValue(0.0); 489 planarMillingBuilder2->CutParameters()->FloorStock()->SetValue(0.0); 490 CAM::Inheritable2dLength* inheritable2dLength1; 491 inheritable2dLength1 = planarMillingBuilder2->CutParameters()->Tolerances(); 492 inheritable2dLength1->SetValue0(0.005); 493 inheritable2dLength1->SetValue1(0.005); 494 planarMillingBuilder2->CutLevel()->SetCutLevelType(CAM::CutLevelPlanar::TypesFloorOnly); 495 planarMillingBuilder2->NonCuttingBuilder()->OverlapDistanceBuilder()->SetValue(0.2); 496 planarMillingBuilder2->NonCuttingBuilder()->SetDefaultRegionStartType(CAM::NcmSubopBuilder::DefaultRegionStartTypesCorner); 497 planarMillingBuilder2->FeedsBuilder()->SpindleRpmBuilder()->SetValue(7000.0); 498 planarMillingBuilder2->FeedsBuilder()->FeedCutBuilder()->SetValue(1500.0); 499 //planarMillingBuilder2->FeedsBuilder()->RecalculateData(CAM::FeedsBuilder::RecalcuateBasedOnSpindleSpeed); 500 NXObject* nXObject7; 501 nXObject7 = planarMillingBuilder2->Commit(); 502 planarMillingBuilder2->Destroy(); 503 UF_terminate(); 504 } 505 catch (...) 506 { 507 uc1601("操作失败!*请检查日志文件", 1); 508 } 509 }