分享

【转载】NX开发 导出Parasolid(*.x

 战神之家 2014-09-28
Option Strict Off
Imports System.IO
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.UF.UFPs
Imports NXOpen.UF.UFAssem
Imports NXOpen.UF.UFModl
Imports NXOpen.UF.UFObj
Imports NXOpen.UF.UFPart
Imports NXOpen.UF.UFConstants
Module Module1
    Public body_list() As Tag
    '  Explicit Activation
    '      This entry point is used to activate the application explicitly
    Sub Main()
        Dim theSession As Session = Session.GetSession()
        Dim theUI As UI = UI.GetUI()
        Dim theUfSession As UFSession = UFSession.GetUFSession()
        ' TODO: Add your application code here
        Dim displayPart As Part = theSession.Parts.Display
        MsgBox("1")
        'Dim prtname As String = "D:\1111111.prt"                    '部件文件名
        'Dim prtname As String = "F:\lashen.prt"
        'Dim expname As String = "F:\lashen.txt"                                 '表达式文件名
        Dim x_tname As String = "D:\aasse_pb.x_t"                              'ParaSolid文件名
        Dim part_tag As NXOpen.Tag = displayPart.Tag
        'Dim load_status As NXOpen.UF.UFPart.LoadStatus
        'Try
        '    theUfSession.Part.Open(prtname, part_tag, load_status)
        'Catch ex As Exception
        '    MsgBox(ex.ToString)
        'End Try
        'Try
        '    theUfSession.Modl.ImportExp(expname, 0)
        'Catch ex As Exception
        '    MsgBox(ex.ToString)
        'End Try
        Try
            theUfSession.Modl.Update()
        Catch ex As Exception
            ex.ToString()
        End Try
        Try
            theUfSession.Part.Save()
        Catch ex As Exception
            ex.ToString()
        End Try
        Dim root_part_occ As NXOpen.Tag
        root_part_occ = theUfSession.Assem.AskRootPartOcc(part_tag)
        theUfSession.Modl.CreateList(body_list)
        Try
            If root_part_occ = Tag.Null Then
                make_body_list_part(part_tag)
            Else
                Dim obj As NXOpen.Tag = theUfSession.Assem.AskPrototypeOfOcc(root_part_occ)
                make_body_list_assem(obj)
            End If
            theUfSession.Ps.ExportData(body_list, x_tname)
            theUfSession.Modl.DeleteBodyParms(body_list)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    Sub make_body_list_part(ByVal body_tag As Tag)
        Dim obj As NXOpen.Tag = Tag.Null
        Dim UF_body_type As Int32
        Dim type As Int32
        Dim subtype As Int32
        Do
            UFSession.GetUFSession().Obj.CycleObjsInPart(body_tag, UF_solid_type, obj)
            If obj <> Tag.Null Then
                UFSession.GetUFSession().Obj.AskTypeAndSubtype(obj, type, subtype)
                UFSession.GetUFSession().Modl.AskBodyType(obj, UF_body_type)
                If subtype <> UF_solid_body_subtype Then
                    Continue Do
                End If
                If UF_body_type = UF_MODL_SOLID_BODY Then
                    UFSession.GetUFSession().Modl.PutListItem(body_list, obj)
                    Exit Do
                End If
            End If
        Loop
    End Sub
    Sub make_body_list_assem(ByVal body_tag As Tag)
        Dim obj As Tag = Tag.Null
        Dim UF_body_type As Int32
        Dim type As Int32
        Dim subtype As Int32
        Do
            Dim UF_OBJ As UFObj = UFSession.GetUFSession().Obj
            UF_OBJ.CycleObjsInPart(body_tag, UF_solid_type, obj)
            If obj <> Tag.Null Then
                UF_OBJ.AskTypeAndSubtype(obj, type, subtype)
                Dim UF_MODL As UFModl = UFSession.GetUFSession().Modl
                UF_MODL.AskBodyType(obj, UF_body_type)
                If subtype <> UF_solid_body_subtype Then
                    Continue Do
                End If
                If UF_body_type = UF_MODL_SOLID_BODY Then
                    UF_MODL.PutListItem(body_list, obj)
                    Exit Do
                End If
             End If
        Loop
    End Sub
    Public Function GetUnloadOption(ByVal dummy As String) As Integer
        'Unloads the image immediately after execution within NX
        GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
        '----Other unload options-------
        'Unloads the image when the NX session terminates
        'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
        'Unloads the image explicitly, via an unload dialog
        'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Explicitly
        '-------------------------------
    End Function
End Module

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多