删除无用修复内容

This commit is contained in:
JackLee 2025-02-15 13:49:41 +08:00
parent 8ccf83a878
commit 3673b84594

View File

@ -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)