API提供了访问iPart表,行,列的属性。但是没有提供直接修改行,列,或增加删除行列的方法。

实际上,每个iPart表都和一个后台的Excel表格关联,在用户界面里,右键iPart表,可以看到两个菜单【修改表】或【通过Excel表修改】(我这里只有英文版Inventor,或许中文版的翻译不是这样,但可通过截图找到对应菜单)

例如,假设我们有这样一个iPart。其中有一列还是自定义的。

关闭后,在用Excel方式打开,能看到如下情况:

可以看到,iProperties对应的列定义为:  特性名[特性集合名]; 如果是自定义的,则带有xml标签<free>; 如果是普通参数列,则直接用其名字,例如d0,d1

现在增加一列和一行。

再从Inventor打开,则是这样的结果:

也就是说,我们可以通过修改Excel表来操作其行和列。而API提供了访问对应Excel表的方法:

iPartFactory.ExcelWorkSheet 

本文中首先看看如何创建新的iPart表,其行列的内容由代码确定。

VBA

记得先添加Excel的引用

Private Sub CreateNewiPartTable()

    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.ActiveDocument
    On Error Resume Next
    Dim oFactory As iPartFactory
    Set oFactory = oPartDoc.ComponentDefinition.iPartFactory
    'Get the iPartTable
    If Err > 0 Or oFactory Is Nothing Then
    Set oFactory = oPartDoc.ComponentDefinition.CreateFactory
    Else
    Exit Sub
    End If
    On Error GoTo 0
    Dim oWorkSheet As WorkSheet
    Set oWorkSheet = oFactory.ExcelWorkSheet
    Dim oCells As Range
    Set oCells = oWorkSheet.Cells
    ' Column names...
    'Set the key for the iPartTable, here we use the key 'Part Number"
    With oCells
    .Item(1, 2) = oCells.Item(1, 2) + "0"
    .Item(1, 3) = oPartDoc.ComponentDefinition.Parameters.ModelParameters.Item(1).Name
    .Item(1, 4) = oPartDoc.ComponentDefinition.Parameters.ModelParameters.Item(2).Name
    .Item(1, 5) = oPartDoc.ComponentDefinition.Parameters.ModelParameters.Item(3).Name
    .Item(1, 6) = oPartDoc.ComponentDefinition.Parameters.ModelParameters.Item(4).Name
    End With
    Dim oUM As UnitsOfMeasure
    Set oUM = oPartDoc.UnitsOfMeasure
    Dim oParameter As Parameter
    Set oParameter = oPartDoc.ComponentDefinition.Parameters.ModelParameters.Item(1)
    'The first row is column name in excel table, the first ipart row is the second row in fact
    Dim iInitRow, i As Integer
    iInitRow = 2
    With oCells
        .Item(iInitRow, 3) = _
            oUM.GetStringFromValue( _
                oParameter.Value, oParameter.Units)
        Set oParameter = _
                oPartDoc.ComponentDefinition. _
                Parameters.ModelParameters.Item(2)
        .Item(iInitRow, 4) = _
                oUM.GetStringFromValue( _
                    oParameter.Value, oParameter.Units)
        Set oParameter = _
                oPartDoc.ComponentDefinition. _
                    Parameters.ModelParameters.Item(3)
        .Item(iInitRow, 5) = _
                oUM.GetStringFromValue( _
                    oParameter.Value, oParameter.Units)
        .Item(iInitRow, 6) = _
                oPartDoc.ComponentDefinition. _
                    Parameters.ModelParameters.Item(4).Expression
    End With
    'We need query the part number from iProperties of the part document.
    Dim sPartNumber As String
    sPartNumber = _
        oPartDoc.PropertySets.Item( _
            "{32853F0F-3444-11d1-9E93-0060B03C1CA6}"). _
                ItemByPropId(kPartNumberDesignTrackingProperties).Value
    Dim pos As Integer
    pos = InStrRev(sPartNumber, "-")
    Dim str As String
    str = Left(sPartNumber, pos)
    Dim iNumber As Integer
    iNumber = Right(sPartNumber, Len(sPartNumber) - pos)
    'Assume the offset of the parameter's value _
    ' (between two rows) is equal to 0.5cm
    Dim offset As Double
    offset = 0.5
    'Add 20 rows into the iPartTable
    For i = 1 To 20
        ' Row i values...
        If (iNumber + i) < 10 Then
            sPartNumber = _
                str + "0" + CStr(iNumber + i)
            Else
            sPartNumber = _
                str + CStr(iNumber + i)
        End If
        With oCells
            .Item(iInitRow + i, 1) = _
                sPartNumber
            .Item(iInitRow + i, 2) = _
                sPartNumber
            Set oParameter = _
                oPartDoc.ComponentDefinition. _
                    Parameters.ModelParameters.Item(1)
            .Item(iInitRow + i, 3) = _
                oUM.GetStringFromValue( _
                    oParameter.Value + offset * i, _
                        oParameter.Units)
            Set oParamete

操作iPart表的行和列 -1相关推荐

  1. 操作iPart表的行和列 -2

    在上一篇文章, 我们学习了如何创建一个iPart Table,并设置了一些行和列.今天我们看看如何对现有的iPart Table进行操作.其实很简单,就是直接对Excel 表处理. 以下代码基于上次创 ...

  2. php列出mysql表格,php列出mysql表所有行和列的方法

    本文实例讲述了php列出mysql表所有行和列的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: Selecting Data $user = "root"; ...

  3. 为iPart表添加“重量”列

    原文地址: http://modthemachine.typepad.com/my_weblog/2009/02/setting-the-weight-for-ipart-members.html T ...

  4. DataTable操作(建表,建行,建列,添加数据)

    public DataTable GetNewTable() {DataTable dt2 = new DataTable("NewDataSet"); //创建一个新Table, ...

  5. 浪迹天涯king教你用elementui做复杂的表格,去处理报表数据(合并表头,合并表体行和列)

    1.不用多说了,先上图片 2.功能特性 1.表头的背景色,标题的虚线边框 2.表头的个别单元格样式 3. 表头合并行功能 4. 复杂的动态表头功能 5. 表体渲染下标从第n行开始 6. 表体第一行,第 ...

  6. VBA--遍历所有工作表,获取所有行和列,复制粘贴为数值

    Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long '封装延时函数 Sub delay( ...

  7. 检索数据_1_从表中查询所有行和列

    从表中查询所有行和列 需求描述 需求:检索表里所有行的数据. 解决方法:通过SQL的关键字*来匹配到所有行和列,结合SELECT FROM 即可满足需求. 注: 数据库数据集SQL脚本详见如下链接地址 ...

  8. python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...

  9. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

最新文章

  1. 手机贷服务器维护升级,手机贷服务器升级
  2. 微众银行殷磊:AI+卫星,从上帝视角洞察资产管理|BDTC 2019
  3. GNN 系列:Graph 基础知识介绍
  4. python梦幻西游4小人_梦幻西游大漠插件过鼠标漂移和四小人
  5. android开发 BaseAdapter中getView()里的3个参数是什么意思
  6. 4安装-企业级 Hyper-v 群集部署实验方案
  7. Spring Boot 2.5.5发布:开始支持Java 17了!
  8. 【Java设计模式】单例模式
  9. webservice / cxf 开发经验总结
  10. 某月某日前包括当天吗_10月26日,你真的理解了导数的定义吗?(答思考题送猫王小音箱)...
  11. MySql Cluster 集成安装,Centos,坑点集锦
  12. 我的PGA我作主----搞清楚什么是真正的PGA
  13. 2005年九大受宠技术:TD-SCDMA
  14. 基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计
  15. layim之初始化配置
  16. 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
  17. 读书笔记2014第8本:《追寻生命的意义》
  18. 青岛新媒体运营教程:教你玩转抖音企业号,6步玩转抖音蓝v号
  19. “我靠做抖音小店,月入过万”:35岁前, 千万别让“拼命打工”拖垮自己!...
  20. ★★ 2009世界著名电子商务B2B/B2C网站大全

热门文章

  1. 西工大计算机专业考研好考吗,研友分享:西北工业大学计算机考研血泪史
  2. 跳跃游戏II-力扣45-java 动态规划
  3. 单字节 双字节 四字节到底是什么东西
  4. Android如何在onCreate()方法中获取控件的高度和宽度
  5. Very fast template matching(非常快的模板匹配)
  6. 【C语言基础自学课程】 01 - C语言编程基本知识
  7. C语言仅凭自学能到什么高度?
  8. 稳健性检验!稳健性检验!
  9. 图像处理--归一化切割--(normalized cut)--Python实现
  10. npm run build:prod打包步骤