首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)
This commit is contained in:
46
sample-data/tools/debug-save.vb
Normal file
46
sample-data/tools/debug-save.vb
Normal file
@@ -0,0 +1,46 @@
|
||||
' 诊断 2: 批处理下 Work=NULL — 验证 (a) BasePart 直接转 Part 操作 (b) SetDisplay 签名
|
||||
Option Strict Off
|
||||
Imports System
|
||||
Imports System.IO
|
||||
Imports System.Text
|
||||
Imports NXOpen
|
||||
Imports NXOpen.UF
|
||||
|
||||
Module DebugSave
|
||||
Sub Main()
|
||||
Dim lw As ListingWindow = Session.GetSession().ListingWindow
|
||||
lw.Open()
|
||||
Dim sb As New StringBuilder()
|
||||
Dim outPath As String = Path.Combine(Directory.GetCurrentDirectory(), "KC_master.prt")
|
||||
sb.AppendLine("CWD=" & Directory.GetCurrentDirectory())
|
||||
|
||||
' (a) SetDisplay 签名反射
|
||||
Dim pc As NXOpen.PartCollection = Session.GetSession().Parts
|
||||
For Each mi As System.Reflection.MethodInfo In pc.GetType().GetMethods()
|
||||
If mi.Name = "SetDisplay" OrElse mi.Name = "Open" Then sb.AppendLine("SIG: " & mi.ToString())
|
||||
Next
|
||||
|
||||
Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
|
||||
Dim basePart1 As NXOpen.BasePart = Session.GetSession().Parts.OpenBaseDisplay(outPath, partLoadStatus1)
|
||||
sb.AppendLine("basePart1=" & (If(basePart1 Is Nothing, "NULL", basePart1.FullPath)))
|
||||
sb.AppendLine("Work=" & (If(Session.GetSession().Parts.Work Is Nothing, "NULL", "非空")))
|
||||
|
||||
' (b) 直接转换 BasePart → Part 并操作
|
||||
Dim p1 As Part = CType(basePart1, Part)
|
||||
sb.AppendLine("p1 cast ok, FullPath=" & p1.FullPath & " IsModified(before)=" & p1.IsModified)
|
||||
Dim ufs As UFSession = UFSession.GetUFSession()
|
||||
ufs.Modl.EditExp("bore=50")
|
||||
ufs.Modl.Update()
|
||||
sb.AppendLine("p1.IsModified(after EditExp+Update)=" & p1.IsModified)
|
||||
' 对比 Save 与 SaveAs 在批处理下的落盘行为
|
||||
Dim pss As NXOpen.PartSaveStatus = p1.Save(NXOpen.BasePart.SaveComponents.True, NXOpen.BasePart.CloseAfterSave.False)
|
||||
If pss IsNot Nothing Then pss.Dispose()
|
||||
sb.AppendLine("after Save: size=" & (New FileInfo(outPath)).Length & " mtime=" & File.GetLastWriteTime(outPath))
|
||||
Dim asPath As String = Path.Combine(Directory.GetCurrentDirectory(), "KC_master_as.prt")
|
||||
Dim pss2 As NXOpen.PartSaveStatus = p1.SaveAs(asPath)
|
||||
If pss2 IsNot Nothing Then pss2.Dispose()
|
||||
sb.AppendLine("after SaveAs: exists=" & File.Exists(asPath) & " size=" & (If(File.Exists(asPath), (New FileInfo(asPath)).Length, 0)))
|
||||
File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "debug-save.txt"), sb.ToString(), Encoding.UTF8)
|
||||
lw.WriteLine(sb.ToString())
|
||||
End Sub
|
||||
End Module
|
||||
Reference in New Issue
Block a user