Files
OnebotCatalog/sample-data/tools/debug-export.vb

70 lines
3.0 KiB
VB.net

' 调试: 单步 STEP 导出定位 "File already exists" 来源
Option Strict Off
Imports System
Imports System.IO
Imports System.Text
Imports NXOpen
Imports NXOpen.UF
Module DebugExport
Sub Main()
Dim sb As New StringBuilder()
Dim cur As String = Directory.GetCurrentDirectory()
Dim masterPath As String = Path.Combine(cur, "KC_master.prt")
sb.AppendLine("CWD=" & cur & " masterExists=" & File.Exists(masterPath))
Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
Session.GetSession().Parts.OpenBaseDisplay(masterPath, partLoadStatus1)
Dim w As Part = Session.GetSession().Parts.Work
sb.AppendLine("Work=" & (If(w Is Nothing, "NULL", w.FullPath)))
If w IsNot Nothing Then
Dim ufs As UFSession = UFSession.GetUFSession()
Try
ufs.Modl.EditExp("stroke=87")
ufs.Modl.Update()
sb.AppendLine("EditExp+Update OK")
Catch ex As Exception
sb.AppendLine("EditExp/Update 失败: " & ex.Message)
End Try
' 诊断: 实体数与引用集
Dim bodyCount As Integer = 0
Try
For Each b As NXOpen.Body In w.Bodies
bodyCount += 1
Next
Catch
End Try
sb.AppendLine("实体数=" & bodyCount)
Try
For Each rs As NXOpen.ReferenceSet In w.GetAllReferenceSets()
sb.AppendLine("引用集: " & rs.Name)
Next
Catch ex As Exception
sb.AppendLine("引用集枚举失败: " & ex.Message)
End Try
Dim outDir As String = Path.Combine(cur, "dbg_out")
Directory.CreateDirectory(outDir)
Dim stpPath As String = Path.Combine(outDir, "DBG.stp")
If File.Exists(stpPath) Then File.Delete(stpPath)
Try
Dim sc As NXOpen.StepCreator = Session.GetSession().DexManager.CreateStepCreator()
sc.ExportFrom = NXOpen.StepCreator.ExportFromOption.ExistingPart ' 批处理无显示部件 → 直接处理部件文件
sc.InputFile = masterPath
sc.ExportAs = NXOpen.StepCreator.ExportAsOption.Ap214
sc.OutputFile = stpPath
sc.ColorAndLayers = True
sc.Commit()
sc.Destroy()
sb.AppendLine("STEP 导出成功: " & stpPath & " size=" & (New FileInfo(stpPath)).Length)
Catch ex As Exception
sb.AppendLine("STEP 导出失败: " & ex.GetType().Name & " / " & ex.Message)
Dim inner As Exception = ex.InnerException
While inner IsNot Nothing
sb.AppendLine(" inner: " & inner.Message)
inner = inner.InnerException
End While
End Try
End If
File.WriteAllText(Path.Combine(cur, "debug-export.txt"), sb.ToString(), Encoding.UTF8)
End Sub
End Module