diff --git a/nxopen_api_fix/cam/NXOpen_cam_api.py b/nxopen_api_fix/cam/NXOpen_cam_api.py deleted file mode 100644 index 1e7f293..0000000 --- a/nxopen_api_fix/cam/NXOpen_cam_api.py +++ /dev/null @@ -1,451 +0,0 @@ -# NX Version:NX 2412 -# Email:809262979@qq.com -# python .py created by deepseek -import math - -import NXOpen - -import NXOpen.CAM - -import NXOpen.Features - -import NXOpen.SIM - - - -# ---------------------------------------------- - -# 初始化CAM Session - -# ---------------------------------------------- - -def init_cam(): - - session = NXOpen.Session.GetSession() - - session.ApplicationSwitchImmediate("UG_APP_MANUFACTURING") - - session.IsCamSessionInitialized() - - return session - - - -# ---------------------------------------------- - -# 初始化CAM WorkPart - -# ---------------------------------------------- - -def init_workpart(arg_session): - - workpart = arg_session.Parts.Work - - return workpart - - - -# ---------------------------------------------- - -# 初始化GENERIC_MACHINE父级 - -# ---------------------------------------------- - -def init_parent_generic_machine(arg_workpart): - - temp_machine = arg_workpart.CAMSetup.CAMGroupCollection.FindObject("GENERIC_MACHINE") - - return temp_machine - - - -# ---------------------------------------------- - -# 初始化GEOMETRY父级 - -# ---------------------------------------------- - -def init_parent_geometry(arg_workpart): - - temp_geometry = arg_workpart.CAMSetup.CAMGroupCollection.FindObject("GEOMETRY") - - return temp_geometry - - - -# ---------------------------------------------- - -# 初始化方法组父级 - -# ---------------------------------------------- - -def init_parent_nc_method(arg_workpart): - - temp_method = arg_workpart.CAMSetup.CAMGroupCollection.FindObject("METHOD") - - return temp_method - - - -# ---------------------------------------------- - -# 初始化方法组父级 - -# ---------------------------------------------- - -def init_parent_nc_program(arg_workpart): - - temp_nc_program = arg_workpart.CAMSetup.CAMGroupCollection.FindObject("NC_PROGRAM") - - return temp_nc_program - - - -# ---------------------------------------------- - -# 初始化加工模板 - -# ---------------------------------------------- - -def init_template_name(): - - temp_template_name="mill_contour" - - return temp_template_name - - - -# ---------------------------------------------- - -# 初始化刀具 - -# ---------------------------------------------- - - - -def create_tool(arg_workpart,arg_machine,arg_template_name,arg_tool_name,arg_tool_diameter): - - #先用FindObject函数通过arg_tool_name查找刀具对象是否存在, - - #如果FindObject查找的对象不存在则创建 - - #这里建议使用Try容错处理 - - temp_tool = None - - try: - - #查找刀具对象 - - temp_tool = arg_workpart.CAMSetup.CAMGroupCollection.FindObject(arg_tool_name) - - except Exception as e: - - #创建刀具对象 - - tool_group = arg_workpart.CAMSetup.CAMGroupCollection.CreateToolWithUserName(arg_machine, arg_template_name, "MILL", NXOpen.CAM.NCGroupCollection.UseDefaultName.TrueValue, "MILL", "Mill") - - millToolBuilder = arg_workpart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool_group) - - #设定刀具半径 - - millToolBuilder.TlDiameterBuilder.Value = arg_tool_diameter - - temp_tool = millToolBuilder.Commit() - - millToolBuilder.Destroy() - - return temp_tool - - - -# ---------------------------------------------- - -# 初始化加工坐标系 - -# ---------------------------------------------- - -def create_mcs(arg_workpart,arg_geometry,arg_template_name,arg_mcs_name): - - #先用FindObject函数通过arg_mcs_name查找刀具对象是否存在, - - #如果FindObject查找的对象不存在则创建 - - #这里建议使用Try容错处理 - - temp_mcs=None - - try: - - #通过arg_mcs_name查找坐标系对象 - - temp_mcs = arg_workpart.CAMSetup.CAMGroupCollection.FindObject(arg_mcs_name,NXOpen.CAM.CAMGroup.CAMGroupType.MachineCoordinateSystem) - - except Exception as e:#查找对象错误则转到创建mcs坐标系对象 - - #创建mcs坐标系对象 - - orient_geometry = arg_workpart.CAMSetup.CAMGroupCollection.CreateGeometryWithUserName(arg_geometry, arg_template_name, "MCS", NXOpen.CAM.NCGroupCollection.UseDefaultName.TrueValue, arg_mcs_name, "MCS") - - millOrientBuilder = arg_workpart.CAMSetup.CAMGroupCollection.CreateMillOrientGeomBuilder(orient_geometry) - - millOrientBuilder.GetCsysPurposeMode() - - millOrientBuilder.GetSpecialOutputMode() - - millOrientBuilder.GetToolAxisMode() - - unit1 = arg_workpart.UnitCollection.FindObject("MilliMeter") - - millOrientBuilder.GetLowerLimitMode() - - millOrientBuilder.TransferClearanceBuilder.SafeDistance = 10.0 #安全高度 - - arg_workpart.Expressions.CreateSystemExpressionWithUnits("0", unit1) - - temp_mcs = millOrientBuilder.Commit() - - millOrientBuilder.Destroy() - - return temp_mcs - - - -# ---------------------------------------------- - -# 创建几何体 - -# ---------------------------------------------- - -def create_cam_feature(arg_workpart,arg_mcs,arg_template_name): - - feature_geometry = arg_workpart.CAMSetup.CAMGroupCollection.CreateGeometryWithUserName(arg_mcs, arg_template_name, "WORKPIECE", NXOpen.CAM.NCGroupCollection.UseDefaultName.TrueValue, "WORKPIECE", "Workpiece") - - feature_mill_geom_builder = arg_workpart.CAMSetup.CAMGroupCollection.CreateMillGeomBuilder(feature_geometry) - - feature_mill_geom_builder.PartGeometry.InitializeData(False) - - geometrySetList = feature_mill_geom_builder.PartGeometry.GeometryList - - taggedObject = geometrySetList.FindItem(0) - - geometrySet = taggedObject - - partLoadStatus = arg_workpart.LoadThisPartFully() - - partLoadStatus.Dispose() - - selectionIntentRuleOptions = arg_workpart.ScRuleFactory.CreateRuleOptions() - - selectionIntentRuleOptions.SetSelectedFromInactive(False) - - bodies1 = [NXOpen.Body.Null] * 1 - - body = arg_workpart.Bodies.FindObject("UNPARAMETERIZED_FEATURE(1)") - - bodies1[0] = body - - bodyDumbRule1 = arg_workpart.ScRuleFactory.CreateRuleBodyDumb(bodies1, True, selectionIntentRuleOptions) - - selectionIntentRuleOptions.Dispose() - - scCollector = geometrySet.ScCollector - - rules1 = [None] * 1 - - rules1[0] = bodyDumbRule1 - - scCollector.ReplaceRules(rules1, False) - - feature = feature_mill_geom_builder.Commit() - - feature_mill_geom_builder.Destroy() - - return feature,body - - - -# ---------------------------------------------- - -# 创建毛坯 - -# ---------------------------------------------- - -def create_block_feature(arg_workpart,arg_cam_feature,arg_body): - - block_mill_geom_builder = arg_workpart.CAMSetup.CAMGroupCollection.CreateMillGeomBuilder(arg_cam_feature) - - block_mill_geom_builder.BlankGeometry.InitializeData(False) - - block_mill_geom_builder.BlankGeometry.GeometryList - - block_mill_geom_builder.BlankGeometry.BlankIpwMultipleSource.SetList - - block_mill_geom_builder.BlankGeometry.BlankDefinitionType = NXOpen.CAM.GeometryGroup.BlankDefinitionTypes.AutoBlock - - toolingBoxBuilder1 = arg_workpart.Features.ToolingFeatureCollection.CreateToolingBoxBuilder(NXOpen.Features.ToolingBox.Null) - - selections1 = [NXOpen.NXObject.Null] * 1 - - selections1[0] = arg_body - - deselections1 = [] - - toolingBoxBuilder1.SetSelectedOccurrences(selections1, deselections1) - - toolingBoxBuilder1.OffsetPositiveZ - - temp_block_geom = block_mill_geom_builder.Commit() - - block_mill_geom_builder.Destroy() - - millGeomBuilder3 = arg_workpart.CAMSetup.CAMGroupCollection.CreateMillGeomBuilder(temp_block_geom) - - block_feature = millGeomBuilder3.Commit() - - millGeomBuilder3.Destroy() - - return block_feature - - - -# ---------------------------------------------- - -# 创建工序 - -# ---------------------------------------------- - -def cam_program(arg_workpart,arg_nc_program,arg_method,arg_tool,arg_feature,arg_template_name): - - operation = arg_workpart.CAMSetup.CAMOperationCollection.CreateWithUserName(nc_program, method, tool, block_feature, template_name, "CAVITY_MILL", NXOpen.CAM.OperationCollection.UseDefaultName.TrueValue, "CAVITY_MILL", "Cavity Mill") - - cavityMilling = operation - - cavityMillingBuilder = arg_workpart.CAMSetup.CAMOperationCollection.CreateCavityMillingBuilder(cavityMilling) - - cavityMillingBuilder.CutLevel.InitializeData() - - # 切削参数 - - cavityMillingBuilder.CutLevel.GlobalDepthPerCut.DistanceBuilder.Value = 0.5 - - cavityMillingBuilder.CutLevel.ApplyGlobalDepthPerCut() - - cavityMillingBuilder.CutPattern.CutPattern = NXOpen.CAM.CutPatternBuilder.Types.FollowPeriphery - - cavityMillingBuilder.CutParameters.PatternDirection = NXOpen.CAM.CutParametersPatternDirectionTypes.Inward - - cavityMillingBuilder.NonCuttingBuilder.TransferAvoidanceFromBuilder.ToolAxis = NXOpen.Direction.Null - - cavityMillingBuilder.NonCuttingBuilder.TransferAvoidanceGohomeBuilder.ToolAxis = NXOpen.Direction.Null - - cavityMillingBuilder.NonCuttingBuilder.EngageOpenAreaBuilder.Vector = NXOpen.Direction.Null - - cavityMillingBuilder.NonCuttingBuilder.ClearanceBuilder.AxisObject = NXOpen.Direction.Null - - cavityMillingBuilder.CutParameters.CutOrder = NXOpen.CAM.CutParametersCutOrderTypes.DepthFirst - - cavityMillingBuilder.CutParameters.PartStock.Value = 0.14999999999999999 - - cavityMillingBuilder.FeedsBuilder.SpindleRpmBuilder.Value = 5000.0 - - cavityMillingBuilder.NonCuttingBuilder.RetractAreaBuilder.Vector = NXOpen.Direction.Null - - cavityMillingBuilder.NonCuttingBuilder.RetractFinalBuilder.Vector = NXOpen.Direction.Null - - cavityMillingBuilder.FeedsBuilder.RecalculateData(NXOpen.CAM.FeedsBuilder.RecalculateBasedOn.SpindleSpeed) - - cavityMillingBuilder.NonCuttingBuilder.EngageOpenAreaBuilder.EngRetType = NXOpen.CAM.NcmPlanarEngRetBuilder.EngRetTypes.Linear - - - - nXObject6 = cavityMillingBuilder.Commit() - - objects1 = [NXOpen.CAM.CAMObject.Null] * 1 - - cavityMilling2 = nXObject6 - - objects1[0] = cavityMilling2 - - arg_workpart.CAMSetup.GenerateToolPath(objects1) - - cavityMillingBuilder.Destroy() - - cavityMillingBuilder2 = arg_workpart.CAMSetup.CAMOperationCollection.CreateCavityMillingBuilder(cavityMilling2) - - isupdated2 = cavityMillingBuilder2.CutLevel.InitializeData() - - toolpath=cavityMillingBuilder2.Commit() - - cavityMillingBuilder2.Destroy() - - #显示刀路 - - session.CAMSession.PathDisplay.ShowToolPath(toolpath) - - session.CAMSession.PathDisplay.Jump(False) - - - -if __name__ == '__main__': - - # ---------------------------------------------- - - # tool_diameter变量为刀具直径,数值类型双精度 - - # tool_name变量为刀具名字,根据tool_diameter生成 - - # nc_program_name变量默认为字符串"NC_PROGRAM" - - # nc_method_name变量默认为"METHOD" - - # 四个变量必须生成 - - # example: - - # tool_diameter=8.0 - - # tool_name="8.0铣刀" - - # nc_program_name="NC_PROGRAM" - - # nc_method_name="METHOD" - - # mcs_name ="MCS" - - # ---------------------------------------------- - - tool_name = None - - tool_diameter = None - - nc_program_name = None - - nc_method_name = None - - mcs_name = None - - session=init_cam() - - workpart=init_workpart(session) - - generic_machine=init_parent_generic_machine(workpart) - - geometry=init_parent_geometry(workpart) - - nc_program=init_parent_nc_program(workpart,nc_program_name) - - nc_method=init_parent_nc_method(workpart,nc_method_name) - - template_name=init_template_name() - - tool=create_tool(workpart,generic_machine,template_name,tool_name,tool_diameter) - - mcs=create_mcs(workpart,geometry,template_name,mcs_name) - - cam_feature,body=create_cam_feature(workpart,mcs,template_name) - - block_feature=create_block_feature(workpart,cam_feature,body) - - cam_program(workpart,nc_program,nc_method,tool,cam_feature,template_name) -