操作iPart表的行和列 -1
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相关推荐
- 操作iPart表的行和列 -2
在上一篇文章, 我们学习了如何创建一个iPart Table,并设置了一些行和列.今天我们看看如何对现有的iPart Table进行操作.其实很简单,就是直接对Excel 表处理. 以下代码基于上次创 ...
- php列出mysql表格,php列出mysql表所有行和列的方法
本文实例讲述了php列出mysql表所有行和列的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: Selecting Data $user = "root"; ...
- 为iPart表添加“重量”列
原文地址: http://modthemachine.typepad.com/my_weblog/2009/02/setting-the-weight-for-ipart-members.html T ...
- DataTable操作(建表,建行,建列,添加数据)
public DataTable GetNewTable() {DataTable dt2 = new DataTable("NewDataSet"); //创建一个新Table, ...
- 浪迹天涯king教你用elementui做复杂的表格,去处理报表数据(合并表头,合并表体行和列)
1.不用多说了,先上图片 2.功能特性 1.表头的背景色,标题的虚线边框 2.表头的个别单元格样式 3. 表头合并行功能 4. 复杂的动态表头功能 5. 表体渲染下标从第n行开始 6. 表体第一行,第 ...
- VBA--遍历所有工作表,获取所有行和列,复制粘贴为数值
Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long '封装延时函数 Sub delay( ...
- 检索数据_1_从表中查询所有行和列
从表中查询所有行和列 需求描述 需求:检索表里所有行的数据. 解决方法:通过SQL的关键字*来匹配到所有行和列,结合SELECT FROM 即可满足需求. 注: 数据库数据集SQL脚本详见如下链接地址 ...
- python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解
用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...
- 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值
[web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...
最新文章
- 手机贷服务器维护升级,手机贷服务器升级
- 微众银行殷磊:AI+卫星,从上帝视角洞察资产管理|BDTC 2019
- GNN 系列:Graph 基础知识介绍
- python梦幻西游4小人_梦幻西游大漠插件过鼠标漂移和四小人
- android开发 BaseAdapter中getView()里的3个参数是什么意思
- 4安装-企业级 Hyper-v 群集部署实验方案
- Spring Boot 2.5.5发布:开始支持Java 17了!
- 【Java设计模式】单例模式
- webservice / cxf 开发经验总结
- 某月某日前包括当天吗_10月26日,你真的理解了导数的定义吗?(答思考题送猫王小音箱)...
- MySql Cluster 集成安装,Centos,坑点集锦
- 我的PGA我作主----搞清楚什么是真正的PGA
- 2005年九大受宠技术:TD-SCDMA
- 基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计
- layim之初始化配置
- 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
- 读书笔记2014第8本:《追寻生命的意义》
- 青岛新媒体运营教程:教你玩转抖音企业号,6步玩转抖音蓝v号
- “我靠做抖音小店,月入过万”:35岁前, 千万别让“拼命打工”拖垮自己!...
- ★★ 2009世界著名电子商务B2B/B2C网站大全