Importsの内容とかMainの位置とかいろいろ変えてみて、以下のコードで動きました。パート属性を割り当てるところはNXのOpen for .NETヘルプを見ました。
Imports System
Imports NXOpen
Imports system.IO
Imports VB = Microsoft.VisualBasic
Imports System.Windows.Forms
Imports system.text
Module NXJournal      
Sub Main       
    Dim theSession As Session = Session.GetSession()       
    Dim workPart As Part = theSession.Parts.Work       
    Dim displayPart As Part = theSession.Parts.Display 
    '---------------------------------------      
    'ここからVB       
        ' --------------------------------------       
        Dim pathNXGate As String = "C:\nxgate\temp\"       
        Dim tmpFile As String       
        Dim tmpFileExp As String       
        Dim sTmp(5) As String       
        Dim sAry() As String       
        Dim sTitle() As String       
        Dim sAttId As String       
        Dim sAttNam(30) As String       
        Dim sAttVal(30) As String       
        Dim iAttChk(100) As Integer       
        Dim iCtAtt As Integer = 0       
        Dim iCt As Integer = 0       
        Dim i As Integer       
        Dim num As Integer       
        Dim sExpLn As String = ""       
        Dim sLTtl As String = ""       
        Dim aLn() As String       
        Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS")       
        ' --------------------------------------File開くDialog       
        Dim ofd As New OpenFileDialog()       
        ofd.FileName = "csvUCF.csv"       
        ofd.InitialDirectory = pathNXGate       
        ofd.Title = "寸法リストファイルを選択"       
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then       
            tmpFile = ofd.FileName       
        Else       
            Exit Sub       
        End If       
        ' --------------------------------------DataFile有       
        ' 1行目はタイトル行       
        ' パート属性にする列タイトルは先頭にatt_をつける       
        ' FILE名するタイトルは、att_CL_ID固定&このタイトルは必須       
        If File.Exists(tmpFile) Then       
            FileOpen(1, tmpFile, OpenMode.Input, OpenAccess.Read)       ' 読込       
            ' ----------------------------------------------1行目(Title行)処理       
            sTmp(0) = LineInput(1)                          ' d,att_CL_ID,L...       
            sTmp(0) = Replace(sTmp(0), Chr(9), "")          ' Tab除去       
            sTitle = Split(sTmp(0), ",")       
            num = sTitle.Length                             ' title総数       
            For i = 0 To num - 1       
                If sTitle(i).IndexOf("att_") = 0 Then       ' 先頭がatt_       
                    sTitle(i) = Replace(sTitle(i), "att_", "")       
                    iAttChk(i) = iCtAtt       
                    iCtAtt = iCtAtt + 1                     ' 属性数       
                Else                                        ' att以外       
                    iAttChk(i) = -1                         ' 属性Check       
                End If       
            Next       
            ' ----------------------------------------------2行目以降(Title行以外)処理       
            Do While Not EOF(1)       
                sTmp(0) = LineInput(1)       
                sTmp(0) = Replace(sTmp(0), Chr(9), "")      ' Tab除去       
                sAry = Split(sTmp(0), ",")       
        sAttId=""       
        sExpLn=""       
                For i = 0 To num - 1       
                    If sTitle(i) <> "" Then       
                        If iAttChk(i) > -1 Then             ' 属性の場合       
                            sAttNam(iAttChk(i)) = sTitle(i) ' 属性名       
                            sAttVal(iAttChk(i)) = sAry(i)   ' 属性値       
                            If sTitle(i) = "CL_ID" Then     ' IDの場合       
                                sAttId = sAry(i)            ' ID       
                            End If       
                        Else       
                            sExpLn = sExpLn & sTitle(i) & "=" & sAry(i) & vbCrLf       
                        End If       
                    End If       
                Next       
                ' ------------------------------------------式インポート用ファイル作成       
                tmpFileExp = pathNXGate & sAttId & ".exp"  
                Dim writer As New StreamWriter(tmpFileExp, False, sjisEnc)       
                writer.WriteLine(sExpLn)       
                writer.Close()       
        ' ここからJournal       
        ' ----------------------------------------------       
        ' メニュー: ツール->Expression...       
        ' ----------------------------------------------       
        Dim markId1 As Session.UndoMarkId       
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Expression") 
        Dim expModified1 As Boolean      
        Dim errorMessages1() As String       
        workPart.Expressions.ImportFromFile(tmpFileExp, ExpressionCollection.ImportMode.Replace, expModified1, errorMessages1)       
        Dim markId2 As Session.UndoMarkId       
        markId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Update Expression Data")       
        Dim nErrs1 As Integer       
        nErrs1 = theSession.UpdateManager.DoUpdate(markId2) 
theSession.DeleteUndoMark(markId2, "Update Expression Data")
        Dim markId3 As Session.UndoMarkId      
        markId3 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Update Expression Data") 
        Dim nErrs2 As Integer      
        nErrs2 = theSession.UpdateManager.DoUpdate(markId3) 
        theSession.DeleteUndoMark(markId3, "Update Expression Data")      
        ' ----------------------------------------------       
        ' 属性割当       
        ' ----------------------------------------------       
                For i = 0 To iCtAtt - 1  
            workPart.SetAttribute(sAttNam(i), sAttVal(i))       
        NEXT       
        ' ----------------------------------------------       
        ' メニュー: ファイル->名前を変えて保存...       
        ' ----------------------------------------------       
        Dim partSaveStatus1 As PartSaveStatus       
        partSaveStatus1 = workPart.SaveAs(pathNXGate & sAttId)       
        partSaveStatus1.Dispose()       
            Loop       
        End If       
' ----------------------------------------------       
' メニュー: ツール->ジャーナル->停止       
' ---------------------------------------------- 
End Module
完成したコードはこれです。拡張子がvbだとアップロードできなかったので、ダウンロード後、拡張子をtxt→vbに変更してください。    
http://sites.google.com/site/nxgatentn/nxGateCreatePart_csv.txt?attredirects=0&d=1
 
 
 micasukeです。
NXの備忘録を取りとめもなく綴ってあります。
micasukeです。
NXの備忘録を取りとめもなく綴ってあります。
0 件のコメント:
コメントを投稿