加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

将Inventor的参数导出到Excel表格中。

(2010-06-30 12:15:54)
标签:

inventor

cad

ilogic

编程

提取

参数

it

分类: Inventor

最近有几个人问到了这个问题。

Inventor作为一个设计软件,又有链接Excel表格的功能,我一时没有想起这一个功能有什么作用。把所有的参数都输出到一个Excel表格,有什么特别的用处么?

 

下面来谈谈具体的实现方法, 这两个方法都不是我自己做出来的。分别感谢这两位的努力。

 

1、VBA编程法--- Sanjay Ramaswamy

 

用法就是新建一个空的Excel表格, 然后再VBA 编辑器里面复制下面的代码,然后add a reference to “Microsoft Excel 12.0 Object Library”。 运行即可。

 

Public Sub ExportParameters()

   

    Err.Clear

    Dim oExcel As Excel.Application

    Set oExcel = GetObject(, "Excel.Application")

    If Err <> 0 Then

        MsgBox "Excel must be running"

        Exit Sub

    End If

   

    Err.Clear

    Dim oSheet As Excel.WorkSheet

    Set oSheet = oExcel.ActiveSheet

    If Err <> 0 Then

        MsgBox "An empty must be active in Excel"

        Exit Sub

    End If

   

    Dim oDoc As Document

    Set oDoc = ThisApplication.ActiveDocument

   

    oSheet.Cells(1, 1).Value = "Name"

    oSheet.Cells(1, 2).Value = "Units"

    oSheet.Cells(1, 3).Value = "Equation"

    oSheet.Cells(1, 4).Value = "Value (cm)"

   

    oSheet.Cells(1, 1).HorizontalAlignment = Excel.xlCenter

    oSheet.Cells(1, 2).HorizontalAlignment = Excel.xlCenter

    oSheet.Cells(1, 3).HorizontalAlignment = Excel.xlCenter

    oSheet.Cells(1, 4).HorizontalAlignment = Excel.xlCenter

    oSheet.Cells(1, 1).Font.Bold = True

    oSheet.Cells(1, 2).Font.Bold = True

    oSheet.Cells(1, 3).Font.Bold = True

    oSheet.Cells(1, 4).Font.Bold = True

   

    oSheet.Cells(3, 1).Value = "Model Parameters"

    oSheet.Cells(3, 1).Font.Bold = True

   

    Dim i As Long

    i = 4

    Dim oModelParam As ModelParameter

    For Each oModelParam In oDoc.ComponentDefinition.Parameters.ModelParameters

       

        oSheet.Cells(i, 1).Value = oModelParam.Name

        oSheet.Cells(i, 2).Value = oModelParam.Units

        oSheet.Cells(i, 3).Value = oModelParam.Expression

        oSheet.Cells(i, 4).Value = oModelParam.Value

       

        i = i + 1

    Next

   

    i = i + 1

    oSheet.Cells(i, 1).Value = "Reference Parameters"

    oSheet.Cells(i, 1).Font.Bold = True

    i = i + 1

   

    Dim oRefParam As ReferenceParameter

    For Each oRefParam In oDoc.ComponentDefinition.Parameters.ReferenceParameters

       

        oSheet.Cells(i, 1).Value = oRefParam.Name

        oSheet.Cells(i, 2).Value = oRefParam.Units

        oSheet.Cells(i, 3).Value = oRefParam.Expression

        oSheet.Cells(i, 4).Value = oRefParam.Value

       

        i = i + 1

    Next

   

    i = i + 1

    oSheet.Cells(i, 1).Value = "User Parameters"

    oSheet.Cells(i, 1).Font.Bold = True

    i = i + 1

   

    Dim oUserParam As UserParameter

    For Each oUserParam In oDoc.ComponentDefinition.Parameters.UserParameters

       

        oSheet.Cells(i, 1).Value = oUserParam.Name

        oSheet.Cells(i, 2).Value = oUserParam.Units

        oSheet.Cells(i, 3).Value = oUserParam.Expression

        oSheet.Cells(i, 4).Value = oUserParam.Value

       

        i = i + 1

    Next

   

    Dim oParamTable As ParameterTable

    For Each oParamTable In oDoc.ComponentDefinition.Parameters.ParameterTables

       

        i = i + 1

        oSheet.Cells(i, 1).Value = "Table Parameters - " & oParamTable.FileName

        oSheet.Cells(i, 1).Font.Bold = True

        i = i + 1

   

        Dim oTableParam As TableParameter

        For Each oTableParam In oParamTable.TableParameters

           

            oSheet.Cells(i, 1).Value = oTableParam.Name

            oSheet.Cells(i, 2).Value = oTableParam.Units

            oSheet.Cells(i, 3).Value = oTableParam.Expression

            oSheet.Cells(i, 4).Value = oTableParam.Value

           

            i = i + 1

        Next

    Next

   

    Dim oDerivedParamTable As DerivedParameterTable

    For Each oDerivedParamTable In oDoc.ComponentDefinition.Parameters.DerivedParameterTables

       

        i = i + 1

        oSheet.Cells(i, 1).Value = "Derived Parameters - " & oDerivedParamTable.ReferencedDocumentDescriptor.FullDocumentName

        oSheet.Cells(i, 1).Font.Bold = True

        i = i + 1

   

        Dim oDerivedParam As DerivedParameter

        For Each oDerivedParam In oDerivedParamTable.DerivedParameters

           

            oSheet.Cells(i, 1).Value = oDerivedParam.Name

            oSheet.Cells(i, 2).Value = oDerivedParam.Units

            oSheet.Cells(i, 3).Value = oDerivedParam.Expression

            oSheet.Cells(i, 4).Value = oDerivedParam.Value

           

            i = i + 1

        Next

    Next

End Sub

 

 

第二个方法--- iLogic方法 , 感谢xiaodong Liang

 

用法,新建一个test.xlsx在C盘下面,然后复制下面内容到一个规则里面。运行即可。

 

 

 'Open Excel
 GoExcel.Open("c:\test.xlsx", "Sheet1")

 'Title of column
 GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A1") = "Name"
 GoExcel.CellValue("c:\test.xlsx", "Sheet1", "B1") = "Units"
 GoExcel.CellValue("c:\test.xlsx", "Sheet1", "C1") = "Equation"
 GoExcel.CellValue("c:\test.xlsx", "Sheet1", "D1") = "Value (cm)"
 
 'Model Parameters
 Dim oCurrentIndex As Long = 3
 GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex)) = "Model Parameters"
 
 Dim index As Long
 Dim oIndexStr As String 
 
 Dim oModelPs
 oModelPs = ThisApplication.Activedocument.ComponentDefinition.Parameters.ModelParameters

For index = 1 To oModelPs.Count

  
  oIndexStr = "A" & CStr(oCurrentIndex + index)
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oModelPs(index).Name
 
  oIndexStr = "B" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oModelPs(index).Units
 
  oIndexStr = "C" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oModelPs(index).Expression
 
  oIndexStr = "D" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oModelPs(index).Value
Next

'Reference Parameters
oCurrentIndex = oCurrentIndex + oModelPs.Count + 1
GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "Reference Parameters"
 
 Dim oRefPs
oRefPs = ThisApplication.Activedocument.ComponentDefinition.Parameters.ReferenceParameters
 
For index = 1 To oRefPs.Count
 
  oIndexStr = "A" & CStr(oCurrentIndex + index)
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oRefPs(index).Name
 
   oIndexStr = "B" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oRefPs(index).Units
 
  oIndexStr = "C" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oRefPs(index).Expression
 
  oIndexStr = "D" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oRefPs(index).Value
Next

'User Parameters
oCurrentIndex = oCurrentIndex +  oRefPs.Count + 1
GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "User Parameters"

 Dim oUserPs
oUserPs = ThisApplication.Activedocument.ComponentDefinition.Parameters.UserParameters
 
For index = 1 To oUserPs.Count

  oIndexStr = "A" & CStr(oCurrentIndex + index)
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oUserPs(index).Name
 
  oIndexStr = "B" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oUserPs(index).Units
 
  oIndexStr = "C" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oUserPs(index).Expression
 
  oIndexStr = "D" & CStr(oCurrentIndex + index) 
  GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oUserPs(index).Value
Next


'ParameterTables
oCurrentIndex = oCurrentIndex +oUserPs.Count  + 1
GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "Parameter Table"
 
Dim oPTables
oPTables = ThisApplication.Activedocument.ComponentDefinition.Parameters.ParameterTables

For  i = 1 To oPTables.Count 
  
   Dim oEachPTable
   oEachPTable = oPTables(i)
  
   Dim oPTableParas
   oPTableParas = oEachPTable.TableParameters  
  
   oCurrentIndex = oCurrentIndex + 1
   GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "Table Parameters - " & oEachPTable.FileName
  
   For index  = 1 To  oPTableParas.Count
   
  Dim oEachP
  oEachP = oPTableParas(index)
 
  oIndexStr = "A" & CStr(index + oCurrentIndex)
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachP.Name
 
  oIndexStr = "B" & CStr(index +oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachP.Units
 
     oIndexStr = "C" & CStr(index +oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachP.Expression
 
     oIndexStr = "D" & CStr(index + oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachP.Value    
   Next
  
   oCurrentIndex = oCurrentIndex + oPTableParas.Count
  
Next

'Derived Parameter Table
oCurrentIndex = oCurrentIndex + 1
GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "Derived Parameter Table"
 
 Dim oDTables
oDTables = ThisApplication.Activedocument.ComponentDefinition.Parameters.DerivedParameterTables

For  i = 1 To oDTables.Count 
  
   Dim oEachDTable
   oEachDTable = oDTables(i)
  
   Dim oDTableParas
   oDTableParas = oEachDTable.DerivedParameters   
  
   oCurrentIndex = oCurrentIndex + 1
   GoExcel.CellValue("c:\test.xlsx", "Sheet1", "A" & CStr(oCurrentIndex) ) = "Table Parameters - " & oEachDTable.ReferencedDocumentDescriptor.FullDocumentName
  
   For index  = 1 To  oDTableParas.Count
   
  Dim oEachDP
  oEachDP = oDTableParas(index)
 
  oIndexStr = "A" & CStr(index + oCurrentIndex)
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachDP.Name
 
  oIndexStr = "B" & CStr(index +oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachDP.Units
 
     oIndexStr = "C" & CStr(index +oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachDP.Expression
 
     oIndexStr = "D" & CStr(index + oCurrentIndex) 
     GoExcel.CellValue("c:\test.xlsx", "Sheet1", oIndexStr) = oEachDP.Value    
   Next
    oCurrentIndex = oCurrentIndex + oDTableParas.Count
 
Next  
  
 
 
GoExcel.Save
GoExcel.Close

 

 

 

 

 

 

 

 

 

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有