找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 19585|回复: 2
打印 上一主题 下一主题

[原创] vb.net 导出 *x_t(Parasolid文件)

[复制链接]
跳转到指定楼层
1
发表于 2011-6-21 15:28:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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



本帖最后由 cwz0571 于 2011-6-21 16:02 编辑
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2012-2-19 22:14:46 | 只看该作者
好东西 顶一个 自学vb。net  希望可以交流交流
3
发表于 2012-9-14 15:54:04 | 只看该作者
好东西啊,老大,但是有个问题,导出单个模型没问题,导出装配体会出错。
后来看了下代码,发现make_body_list_part和make_body_list_assem这两个过程的语句是一样的啊。
出错的语句是UF_MODL.AskBodyType(obj, UF_body_type)
错误反馈说Non-body EID input。。。
可能这里的参数obj是一个装配体而不是单个零件,所以得不到BodyType?
我都是用录制“操作记录”来编的,导出x_t不支持录制,所以没有办法了,希望给点提示哈~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-25 22:41 , Processed in 0.036178 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表