first push

This commit is contained in:
JackLee 2025-02-15 13:48:06 +08:00
parent 4872e3c9cf
commit 8ccf83a878
12 changed files with 128979 additions and 1 deletions

View File

@ -1 +1,9 @@
init git #deepseek-NXOpen
**本项目主要用于保存LLM模型的资料库和提示词**</br>
本项目应该配合OpenAI等coder模型使用,单独使用无效.</br>
文件和目录说明:</br>
nxopen_python.py:该文件主要用于导出当前NX版本的Python的NXOpen的API</br>
nxopen_api_know:知识库目录主要用于存放nxopen python的每个模块的API</br>
nxopen_tips_words:存放提示词,子目录分别对应每个模块</br>
nxopen_api_fix:用于针对NX版本的迭代,不同版本之间API的变动差异修复,内容包含新增API和废弃API</br>

View File

@ -0,0 +1,7 @@
数值和坐标点采用双精度数值类型
Create类型的函数第一个参数不能为None
以下函数第一个参数不能为None
创建坐标系的时候CreateGeometryWithUserName:第一参数为group_geometry对象
创建几何体的时候CreateGeometryWithUserName:第一参数为坐标系对象
创建刀具的时候CreateToolWithUserName:第一参数为generic_machine对象
创建工序的时候CreateWithUserName:第一参数为NC_PROGRAM父级对象

View File

@ -0,0 +1,451 @@
# 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)

View File

@ -0,0 +1,375 @@
import math
import NXOpen
import NXOpen.Assemblies
import NXOpen.Drafting
import NXOpen.Drawings
import NXOpen.Preferences
def main(args) :
theSession = NXOpen.Session.GetSession() #type: NXOpen.Session
workPart = theSession.Parts.Work
displayPart = theSession.Parts.Display
partFullPath = workPart.FullPath
theSession.ApplicationSwitchImmediate("UG_APP_DRAFTING")
workPart.Drafting.EnterDraftingApplication()
modelingView1 = workPart.ModelingViews.FindObject("Trimetric")
modelingView1.UpdateCustomSymbols()
draftingDrawingSheetBuilder1 = workPart.DraftingDrawingSheets.CreateDraftingDrawingSheetBuilder(NXOpen.Drawings.DraftingDrawingSheet.Null)
draftingDrawingSheetBuilder1.AutoStartViewCreation = True
draftingDrawingSheetBuilder1.Option = NXOpen.Drawings.DrawingSheetBuilder.SheetOption.CustomSize
draftingDrawingSheetBuilder1.StandardMetricScale = NXOpen.Drawings.DrawingSheetBuilder.SheetStandardMetricScale.S11
draftingDrawingSheetBuilder1.StandardEnglishScale = NXOpen.Drawings.DrawingSheetBuilder.SheetStandardEnglishScale.S11
draftingDrawingSheetBuilder1.Height = 841.0
draftingDrawingSheetBuilder1.Length = 1189.0
draftingDrawingSheetBuilder1.StandardMetricScale = NXOpen.Drawings.DrawingSheetBuilder.SheetStandardMetricScale.S11
draftingDrawingSheetBuilder1.StandardEnglishScale = NXOpen.Drawings.DrawingSheetBuilder.SheetStandardEnglishScale.S11
draftingDrawingSheetBuilder1.ScaleNumerator = 1.0
draftingDrawingSheetBuilder1.ScaleDenominator = 1.0
draftingDrawingSheetBuilder1.Units = NXOpen.Drawings.DrawingSheetBuilder.SheetUnits.Metric
draftingDrawingSheetBuilder1.ProjectionAngle = NXOpen.Drawings.DrawingSheetBuilder.SheetProjectionAngle.Third
draftingDrawingSheetBuilder1.Number = "1"
draftingDrawingSheetBuilder1.SecondaryNumber = ""
draftingDrawingSheetBuilder1.Revision = "A"
nXObject1 = draftingDrawingSheetBuilder1.Commit()
draftingDrawingSheetBuilder1.Destroy()
workPart.Drafting.SetTemplateInstantiationIsComplete(True)
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
baseViewBuilder1 = workPart.DraftingViews.CreateBaseViewBuilder(NXOpen.Drawings.BaseView.Null)
modelingView2 = workPart.ModelingViews.FindObject("Top")
baseViewBuilder1.SelectModelView.SelectedView = modelingView2
baseViewBuilder1.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
baseViewBuilder1.Style.ViewStyleBase.Part = workPart
baseViewBuilder1.Style.ViewStyleBase.PartName = partFullPath
loadStatus1 = workPart.IsFullyLoaded
baseViewBuilder1.SelectModelView.SelectedView = modelingView2
baseViewBuilder1.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
baseViewBuilder1.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = False
baseViewBuilder1.Style.ViewStyleOrientation.Ovt.NormalDirection = NXOpen.Direction.Null
baseViewBuilder1.Style.ViewStyleOrientation.Ovt.XDirection = NXOpen.Direction.Null
baseViewBuilder1.SelectModelView.SelectedView = modelingView2
baseViewBuilder1.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
baseViewBuilder1.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = False
modelingView3 = workPart.ModelingViews.FindObject("Front")
baseViewBuilder1.SelectModelView.SelectedView = modelingView3
baseViewBuilder1.Style.ViewStyleOrientation.Ovt.NormalDirection = NXOpen.Direction.Null
baseViewBuilder1.Style.ViewStyleOrientation.Ovt.XDirection = NXOpen.Direction.Null
baseViewBuilder1.Scale.Numerator = 3.0
point1 = NXOpen.Point3d(334.08210823909536, 666.29549676898228, 0.0)
baseViewBuilder1.Placement.Placement.SetValue(NXOpen.TaggedObject.Null, workPart.Views.WorkView, point1)
nXObject2 = baseViewBuilder1.Commit()
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
baseViewBuilder1.Destroy()
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
draftingDrawingSheet1 = nXObject1
draftingDrawingSheet1.Open()
projectedViewBuilder1 = workPart.DraftingViews.CreateProjectedViewBuilder(NXOpen.Drawings.ProjectedView.Null)
projectedViewBuilder1.Style.ViewStyleOrientation.HingeLine.Associative = True
projectedViewBuilder1.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
unit1 = workPart.UnitCollection.FindObject("MilliMeter")
expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
baseView1 = nXObject2
projectedViewBuilder1.Parent.View.Value = baseView1
projectedViewBuilder1.Style.ViewStyleBase.PartName = partFullPath
projectedViewBuilder1.Style.ViewStyleGeneral.ToleranceValue = 0.0080000080000000012
projectedViewBuilder1.Style.ViewStyleGeneral.Scale.Numerator = 3.0
projectedViewBuilder1.Style.ViewStyleGeneral.ExtractedEdges = NXOpen.Preferences.GeneralExtractedEdgesOption.Associative
vieworigin1 = NXOpen.Point3d(-50.0, -10.0, 50.0)
projectedViewBuilder1.Style.ViewStylePerspective.ViewOrigin = vieworigin1
projectedViewBuilder1.Placement.AlignmentView.Value = baseView1
projectedViewBuilder1.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
projectedViewBuilder1.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = True
projectedViewBuilder1.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder1.Placement.AlignmentView.Value = baseView1
point2 = NXOpen.Point3d(0.0, 0.0, 0.0)
projectedViewBuilder1.Placement.Placement.SetValue(baseView1, workPart.Views.WorkView, point2)
projectedViewBuilder1.Style.ViewStyleOrientation.HingeLine.ReverseDirection = True
point3 = NXOpen.Point3d(334.08210823909536, 319.53584410339272, 0.0)
projectedViewBuilder1.Placement.Placement.SetValue(NXOpen.TaggedObject.Null, workPart.Views.WorkView, point3)
projectedViewBuilder1.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder1.Placement.AlignmentView.Value = baseView1
nXObject3 = projectedViewBuilder1.Commit()
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
projectedViewBuilder1.Destroy()
workPart.MeasureManager.SetPartTransientModification()
workPart.Expressions.Delete(expression1)
workPart.MeasureManager.ClearPartTransientModification()
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
projectedViewBuilder2 = workPart.DraftingViews.CreateProjectedViewBuilder(NXOpen.Drawings.ProjectedView.Null)
projectedViewBuilder2.Style.ViewStyleOrientation.HingeLine.Associative = True
projectedViewBuilder2.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
projectedViewBuilder2.Parent.View.Value = baseView1
projectedViewBuilder2.Style.ViewStyleBase.PartName = partFullPath
projectedViewBuilder2.Style.ViewStyleGeneral.ToleranceValue = 0.0080000080000000012
projectedViewBuilder2.Style.ViewStyleGeneral.Scale.Numerator = 3.0
projectedViewBuilder2.Style.ViewStyleGeneral.ExtractedEdges = NXOpen.Preferences.GeneralExtractedEdgesOption.Associative
vieworigin2 = NXOpen.Point3d(-50.0, -10.0, 50.0)
projectedViewBuilder2.Style.ViewStylePerspective.ViewOrigin = vieworigin2
projectedViewBuilder2.Placement.AlignmentView.Value = baseView1
projectedViewBuilder2.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
projectedViewBuilder2.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = True
projectedViewBuilder2.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder2.Placement.AlignmentView.Value = baseView1
projectedViewBuilder2.Style.ViewStyleOrientation.HingeLine.ReverseDirection = True
point4 = NXOpen.Point3d(788.07265751211639, 666.29549676898228, 0.0)
projectedViewBuilder2.Placement.Placement.SetValue(NXOpen.TaggedObject.Null, workPart.Views.WorkView, point4)
projectedViewBuilder2.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder2.Placement.AlignmentView.Value = baseView1
nXObject4 = projectedViewBuilder2.Commit()
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
projectedViewBuilder2.Destroy()
workPart.MeasureManager.SetPartTransientModification()
workPart.Expressions.Delete(expression2)
workPart.MeasureManager.ClearPartTransientModification()
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
projectedViewBuilder3 = workPart.DraftingViews.CreateProjectedViewBuilder(NXOpen.Drawings.ProjectedView.Null)
projectedViewBuilder3.Style.ViewStyleOrientation.HingeLine.Associative = True
projectedViewBuilder3.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
expression3 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
projectedViewBuilder3.Parent.View.Value = baseView1
projectedViewBuilder3.Style.ViewStyleBase.PartName = partFullPath
projectedViewBuilder3.Style.ViewStyleGeneral.ToleranceValue = 0.0080000080000000012
projectedViewBuilder3.Style.ViewStyleGeneral.Scale.Numerator = 3.0
projectedViewBuilder3.Style.ViewStyleGeneral.ExtractedEdges = NXOpen.Preferences.GeneralExtractedEdgesOption.Associative
vieworigin3 = NXOpen.Point3d(-50.0, -10.0, 50.0)
projectedViewBuilder3.Style.ViewStylePerspective.ViewOrigin = vieworigin3
projectedViewBuilder3.Placement.AlignmentView.Value = baseView1
projectedViewBuilder3.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
projectedViewBuilder3.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = True
projectedViewBuilder3.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder3.Placement.AlignmentView.Value = baseView1
projectedViewBuilder3.Style.ViewStyleOrientation.HingeLine.ReverseDirection = True
projectedViewBuilder3.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder3.Placement.AlignmentView.Value = baseView1
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
projectedViewBuilder3.Destroy()
workPart.MeasureManager.SetPartTransientModification()
workPart.Expressions.Delete(expression3)
workPart.MeasureManager.ClearPartTransientModification()
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
baseViewBuilder2 = workPart.DraftingViews.CreateBaseViewBuilder(NXOpen.Drawings.BaseView.Null)
baseViewBuilder2.SelectModelView.SelectedView = modelingView2
baseViewBuilder2.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
baseViewBuilder2.Style.ViewStyleBase.Part = workPart
baseViewBuilder2.Style.ViewStyleBase.PartName = partFullPath
loadStatus2 = workPart.IsFullyLoaded
baseViewBuilder2.SelectModelView.SelectedView = modelingView2
baseViewBuilder2.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
baseViewBuilder2.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = False
baseViewBuilder2.Style.ViewStyleOrientation.Ovt.NormalDirection = NXOpen.Direction.Null
baseViewBuilder2.Style.ViewStyleOrientation.Ovt.XDirection = NXOpen.Direction.Null
baseViewBuilder2.SelectModelView.SelectedView = modelingView2
baseViewBuilder2.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
baseViewBuilder2.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = False
modelingView4 = workPart.ModelingViews.FindObject("Isometric")
baseViewBuilder2.SelectModelView.SelectedView = modelingView4
baseViewBuilder2.Style.ViewStyleOrientation.Ovt.NormalDirection = NXOpen.Direction.Null
baseViewBuilder2.Style.ViewStyleOrientation.Ovt.XDirection = NXOpen.Direction.Null
baseViewBuilder2.Scale.Numerator = 3.0
point5 = NXOpen.Point3d(891.1257269789985, 290.29105411954777, 0.0)
baseViewBuilder2.Placement.Placement.SetValue(NXOpen.TaggedObject.Null, workPart.Views.WorkView, point5)
nXObject5 = baseViewBuilder2.Commit()
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
baseViewBuilder2.Destroy()
workPart.DraftingManager.DrawingsFreezeOutOfDateComputation()
draftingDrawingSheet1.Open()
projectedViewBuilder4 = workPart.DraftingViews.CreateProjectedViewBuilder(NXOpen.Drawings.ProjectedView.Null)
projectedViewBuilder4.Style.ViewStyleOrientation.HingeLine.Associative = True
projectedViewBuilder4.SecondaryComponents.ObjectType = NXOpen.Drawings.DraftingComponentSelectionBuilder.Geometry.PrimaryGeometry
expression4 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1)
baseView2 = nXObject5
projectedViewBuilder4.Parent.View.Value = baseView2
projectedViewBuilder4.Style.ViewStyleBase.PartName = partFullPath
projectedViewBuilder4.Style.ViewStyleGeneral.ToleranceValue = 0.039191843884530862
projectedViewBuilder4.Style.ViewStyleGeneral.Scale.Numerator = 3.0
projectedViewBuilder4.Style.ViewStyleGeneral.ExtractedEdges = NXOpen.Preferences.GeneralExtractedEdgesOption.Associative
vieworigin4 = NXOpen.Point3d(-70.710678118654755, -8.164965809277259, -5.7735026918962653)
projectedViewBuilder4.Style.ViewStylePerspective.ViewOrigin = vieworigin4
projectedViewBuilder4.Placement.AlignmentView.Value = baseView2
projectedViewBuilder4.Style.ViewStyleBase.Arrangement.SelectedArrangement = NXOpen.Assemblies.Arrangement.Null
projectedViewBuilder4.Style.ViewStyleBase.Arrangement.InheritArrangementFromParent = True
projectedViewBuilder4.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder4.Placement.AlignmentView.Value = baseView2
point6 = NXOpen.Point3d(0.0, 0.0, 0.0)
projectedViewBuilder4.Placement.Placement.SetValue(baseView2, workPart.Views.WorkView, point6)
projectedViewBuilder4.Placement.AlignmentView.Value = NXOpen.TaggedObject.Null
projectedViewBuilder4.Placement.AlignmentView.Value = baseView2
workPart.DraftingManager.DrawingsUnfreezeOutOfDateComputation()
projectedViewBuilder4.Destroy()
workPart.MeasureManager.SetPartTransientModification()
workPart.Expressions.Delete(expression4)
workPart.MeasureManager.ClearPartTransientModification()
if __name__ == '__main__':
main(sys.argv[1:])

View File

@ -0,0 +1,30 @@
import NXOpen
import NXOpen.Features
def CreateBall(x,y,z,d) :
session = NXOpen.Session.GetSession()
workPart = session.Parts.Work
# 创建球体生成器
sphereBuilder = workPart.Features.CreateSphereBuilder(NXOpen.Features.Sphere.Null)
# 设置球体参数
sphereBuilder.Type = NXOpen.Features.SphereBuilder.Types.CenterPointAndDiameter
sphereBuilder.Diameter.Value = d # 设置直径
centerPoint = workPart.Points.CreatePoint(NXOpen.Point3d(x,y,z)) # 创建球心
sphereBuilder.CenterPoint = centerPoint
# 提交特征并销毁生成器
sphereFeature = sphereBuilder.CommitFeature()
sphereBuilder.Destroy()
if __name__ == '__main__':
#需要传入球的球心点的x,y,z坐标,数值类型双精度
#需要传入球的直径D,数值为双精度
#example:
#x=1.0
#y=1.0
#z=1.0
#d=1.0
x=None
y=None
z=None
CreatePoint(x,y,z,d)

View File

@ -0,0 +1,36 @@
import NXOpen
import NXOpen.Features
def CreateBall(x,y,z,l,w,h) :
session = NXOpen.Session.GetSession()
workPart = session.Parts.Work
# 创建长方体生成器
blockBuilder = workPart.Features.CreateBlockFeatureBuilder(NXOpen.Features.Block.Null)
# 设置长方体类型为“原点和边长”
blockBuilder.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths
# 设置布尔操作类型
blockBuilder.BooleanType = NXOpen.Features.FeatureBooleanType.Create
# 设置原点和边长
originPoint = NXOpen.Point3d(x,y,z)
blockBuilder.SetOriginAndLengths(originPoint, l, w, h)
# 提交特征并销毁生成器
blockFeature = blockBuilder.CommitFeature()
blockBuilder.Destroy()
if __name__ == '__main__':
#需要传入长方体原点的x,y,z坐标,数值类型双精度
#需要传入长方体长宽高,数值为双精度
#example:
#x=1.0
#y=1.0
#z=1.0
#l="1.0"
#w="1.0"
#h="1.0"
x=None
y=None
z=None
CreatePoint(x,y,z,l,w,h)

View File

@ -0,0 +1,21 @@
import NXOpen
import NXOpen.Point3d
def CreatePoint(x,y,z) :
session = NXOpen.Session.GetSession()
workPart = session.Parts.Work
# 定义点的坐标
coord = NXOpen.Point3d(x, y, z)
# 创建点
point = workPart.Points.CreatePoint(coord)
point.SetVisibility(NXOpen.SmartObject.VisibilityOption.Visible)
if __name__ == '__main__':
#需要传入点的x,y,z坐标,数值类型双精度
#example:
#x=1.0
#y=1.0
#z=1.0
x=None
y=None
z=None
CreatePoint(x,y,z)

46132
nxopen_api_know/NXOpen_API.py Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

57
nxopen_python.py Normal file
View File

@ -0,0 +1,57 @@
# NX Version:NX 2412
# Email:809262979@qq.com
# python .py created by JackLee
# NX run .py alt+F8
import NXOpen
import NXOpen.CAM
import NXOpen.UF as UF
import inspect
import io
from contextlib import redirect_stdout
# 获取当前会话
session = NXOpen.Session.GetSession()
# 打开列表窗口用于输出信息
lw = session.ListingWindow
lw.Open()
# 定义要检查的模块列表,具体要检查的模块自行设定,不建议设置太多模块同时导出,会卡死你的!
modules = [NXOpen]
def main():
for module in modules:
lw.WriteLine(f"-------------module name: {module.__name__}-------------")
func = inspect.getmembers(module)
for func_name,func_obj in func:
# 过滤掉以双下划线开头的成员
if not func_name.startswith('__') and not func_name.startswith('_'):
lw.WriteLine(f"func name: {module.__name__}.{func_name}")
# 获取类的所有成员
member = inspect.getmembers(func_obj)
for member_name, member_obj in member:
# 过滤掉以双下划线开头的成员
if not member_name.startswith('__') and not member_name.startswith('_'):
lw.WriteLine(f" member name: {module.__name__}.{func_name}.{member_name}")
#过滤掉影响阅读的成员
if not (type(member_obj).__name__).startswith('method_descriptor') \
and not (type(member_obj).__name__).startswith('getset_descriptor') \
and not (type(member_obj).__name__).startswith('builtin_function_or_method') \
and not (type(member_obj).__name__).startswith('type'):
lw.WriteLine(f" member type: {type(member_obj).__name__}")
for attr in dir(member_obj):
if not attr.startswith('__') and not attr.startswith('_'):
lw.WriteLine(f" attr type: {attr}")
if __name__ == '__main__':
lw.WriteLine(f"----------该脚本屏蔽内容如下:-----------")
lw.WriteLine(f"__")
lw.WriteLine(f"_")
lw.WriteLine(f"method_descriptor")
lw.WriteLine(f"getset_descriptor")
lw.WriteLine(f"builtin_function_or_method")
lw.WriteLine(f"-------------------------------------")
lw.WriteLine(f"屏蔽以上内容方便API的阅读,被屏蔽掉的内容作者认为是python内置或者绑定函数,对象,成员.阅读意义不大")
main()

View File

@ -0,0 +1,20 @@
条件:
数值类型:双精度
加工工序类型:CAVITY_MILL
刀具直径:8mm
刀具材料:硬质合金
工件材料:铝合金
加工坐标系:自动创建加工坐标系
安全高度:10mm
加工体:自动创建加工体
进给速度:根据材料推理确定
主轴转速:根据材料推理确定
每刀加工深度:根据材料推理确定
刀具直径:根据材料和加工最小区域确定
切削模式:根据工序性质和加工体的类型确定腔体or凸模
刀路类型:冗长or最短
进刀方式:外向内or内向外
NX版本:NX2412
保留余量:0.015mm(根据材料种类,考虑到加工后材料变形特点推理确定)
公差:根据实际加工需求确定(默认:±0.02)

View File

@ -0,0 +1,9 @@
要求:
1-生成Front作为前视图
2-根据Front前视图生成Top俯视图
3-根据Front前视图生成Left左视图
4-生成正等测图
所有数值为双精度类型
所有视图比例3:1
图纸内容涵盖内容
根据NXOpen_API.py和NXOpen API生成python代码