Inventor文件中保存自定义数据 - 1

利用IStorage和IStream存储自定义数据到Inventor文件 (C++) 我去年在全球博客就写了此文章,还有一个姊妹篇(用.NETx竟然没有 阅读详情

在一些工作流中,需要对文件本身附加一些数据,对最终用户不可见,便于下游的使用。Inventor API提供了三种方式:

1. iProperties 
2. Attribute 
3. IStorage & IStream

首先最容易的就是iProperties 。这个基本内容有太多文章介绍。我就不赘述了。直接看几段代码,看看如何添加一些数据,并如何取出。为方便不同用户,例子用VBA, .NET。Inventor API 或学徒服务器。


VBA

Sub AddCustomProperty()

    隐式打开文档 
    Dim oDoc As Document 
    Set oDoc = ThisApplication.Documents.Open("c:\testpart.ipt", False) 

    ' 需要添加的特性集合名
    Dim oNameOfNewPS As String 
    oNameOfNewPS = "myNewSet" 


    ' 新建特性集合 
    Dim oNewPS As PropertySet 
    If oDoc.PropertySets.PropertySetExists("myNewSet") Then 
       ' 如果已经存在 
       Set oNewPS = oDoc.PropertySets("myNewSet") 
       ' 可考虑清理掉原有数据 
    Else 
        '添加新的特性集合,记得给定一个GUID 
         Set oNewPS = oDoc.PropertySets.Add("myNewSet", 
                              "{3FDB7763-80DB-4269-83E4-7F43BC8E9EA7}") 
         End If


    '各种特性值 
    Dim oIntProV As Integer 
    oIntProV = 100 
    Dim oBoolProV As Boolean 
    oBoolProV = False 
    Dim oDoubleProV As Double 
    oDoubleProV = 3.1415926 
    Dim oDateProV As Date 
    oDateProV = "2013-3-1 15:25" 

    ' 添加特性,假定它们还不存在 
    ' assume they do not exist in the property set 
    Call oNewPS.Add(oIntProV, "ModelCount") 
    Call oNewPS.Add(oBoolProV, "ModelUpdateToDate") 
    Call oNewPS.Add(oDoubleProV, "ModelBasicLength") 
    Call oNewPS.Add(oDateProV, "ModelUpdateDate") 
    oDoc.Save 
    oDoc.Close 
End Sub

Sub ReadCustomProperty()

      ' 隐式打开文档 
    Dim oDoc As Document 
    Set oDoc = ThisApplication.Documents.Open("c:\testpart.ipt", False) 
 
 ' 需要添加的特性集合名
    Dim oNameOfNewPS As String 
    oNameOfNewPS = "myNewSet" 
    ' 新建特性集合 
    Dim oNewPS As PropertySet 

    If oDoc.PropertySets.PropertySetExists("myNewSet") Then 
       ' 如果已经存在 
       Set oNewPS = oDoc.PropertySets("myNewSet") 
     
    Else         
        MsgBox "no property named myNewSet" 
        Exit Sub       
    End If 
    Dim oShowStr As String 
    oShowStr = "" 

  ‘  遍历特性 
    Dim oEachP As Property 
    For Each oEachP In oNewPS 
       oShowStr = oShowStr & " [Property Name]  " & oEachP.Name 
       oShowStr = oShowStr & " [Property Value]  " & oEachP.Value & vbCr 
    Next 
    MsgBox oShowStr 
    oDoc.Close 
End Sub

VB.NET

   Sub AddCustomProperty()

 

        Dim m_inventorApp As Inventor.Application = Nothing

        m_inventorApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")

 

        ' open a document invisble

        Dim oDoc As Document

        oDoc = m_inventorApp.Documents.Open("c:\testpart.ipt",False)

 

        ' name of new property set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

        ' new property set

        Dim oNewPS As PropertySet

        If oDoc.PropertySets.PropertySetExists("myNewSet") Then

            ' if the set exists aleady

            oNewPS = oDoc.PropertySets("myNewSet")

            ' you can clean up the existing properties

        Else

            ' add a new one with a GUID

            oNewPS = oDoc.PropertySets.Add("myNewSet",

                                           "{3FDB7763-80DB-4269-83E4-7F43BC8E9EA7}")

        End If

 

        'the values of the properties

        Dim oIntProV As Integer

        oIntProV = 100

        Dim oBoolProV As Boolean

        oBoolProV = False

        Dim oDoubleProV As Double

        oDoubleProV = 3.1415926000000001

        Dim oDateProV As Date

        oDateProV = "2013-3-1 15:25"

 

  ' add these properties with the meaningful name

        ' assume they do not exist in the property set

        oNewPS.Add(oIntProV, "ModelCount")

        oNewPS.Add(oBoolProV, "ModelUpdateToDate")

        oNewPS.Add(oDoubleProV, "ModelBasicLength")

        oNewPS.Add(oDateProV, "ModelUpdateDate")

 

        oDoc.Save()

        oDoc.Close()

    End Sub

 

    Sub ReadCustomProperty() 

 

        Dim m_inventorApp As 
             Inventor.
Application = Nothing

        m_inventorApp = System.Runtime.InteropServices.Marshal. 
GetActiveObject(
"Inventor.Application")

 

        ' open a document invisble

        Dim oDoc As Document

        oDoc = m_inventorApp.Documents.Open("c:\testpart.ipt",False)

        ' name of new property set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

        ' new property set

        Dim oNewPS As PropertySet = Nothing

        If oDoc.PropertySets.PropertySetExists("myNewSet") Then

            ' if the set exists aleady

            oNewPS = oDoc.PropertySets("myNewSet")

            ' you can clean up the existing properties

        Else

            MsgBox("no property named myNewSet")

            Exit Sub

        End If

 

        Dim oShowStr As String

        oShowStr = ""

 

        'iterate the properties

        Dim oEachP As [Property]

        For Each oEachP In oNewPS

         oShowStr &= " [Property Name]  " & 
                               oEachP.Name

            oShowStr &= " [Property Value]  " & 
                         oEachP.Value & vbCr

        Next 

        MessageBox.Show(oShowStr)

        oDoc.Close()

    End Sub

Apprentice

   Sub AddCustomProperty_Apprentice()

 

        Dim m_ApprenticeApp As Inventor.ApprenticeServerComponent=

            New Inventor.ApprenticeServerComponent()

 

        ' open a document

        Dim oDoc As ApprenticeServerDocument

        oDoc = m_ApprenticeApp.Open("c:\testpart.ipt")

 

        ' name of new property set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

        ' new property set

        Dim oNewPS As PropertySet

        If oDoc.PropertySets.PropertySetExists("myNewSet") Then

            ' if the set exists aleady

            oNewPS = oDoc.PropertySets("myNewSet")

            ' you can clean up the existing properties

        Else

            ' add a new one with a GUID

            oNewPS = oDoc.PropertySets.Add("myNewSet",

                                           "{3FDB7763-80DB-4269-83E4-7F43BC8E9EA7}")

        End If

 

 

        'the values of the properties

        Dim oIntProV As Integer

        oIntProV = 100

        Dim oBoolProV As Boolean

        oBoolProV = False

        Dim oDoubleProV As Double

        oDoubleProV = 3.1415926000000001

        Dim oDateProV As Date

        oDateProV = "2013-3-1 15:25"

 

' add these properties with the meaningful name

        ' assume they do not exist in the property set

        oNewPS.Add(oIntProV, "ModelCount")

        oNewPS.Add(oBoolProV, "ModelUpdateToDate")

        oNewPS.Add(oDoubleProV, "ModelBasicLength")

        oNewPS.Add(oDateProV, "ModelUpdateDate")

 

        ' flush the modification. Apprentice requires

        oDoc.PropertySets.FlushToFile()

 

        m_ApprenticeApp.FileSaveAs.AddFileToSave(oDoc, oDoc.FullDocumentName)

        m_ApprenticeApp.FileSaveAs.ExecuteSave()

 

    End Sub

 

    Sub ReadCustomProperty_Apprentice()

 

        Dim m_ApprenticeApp As Inventor.ApprenticeServerComponent=

             New Inventor.ApprenticeServerComponent()

 

        ' open a document invisble

        ' open a document

        Dim oDoc As ApprenticeServerDocument

        oDoc = m_ApprenticeApp.Open("c:\testpart.ipt")

 

        ' name of new property set

        Dim oNameOfNewPS As String

        oNameOfNewPS = "myNewSet"

        ' new property set

        Dim oNewPS As PropertySet = Nothing

        If oDoc.PropertySets.PropertySetExists("myNewSet") Then

            ' if the set exists aleady

            oNewPS = oDoc.PropertySets("myNewSet")

            ' you can clean up the existing properties

        Else

            MsgBox("no property named myNewSet")

            Exit Sub

        End If

 

        Dim oShowStr As String

        oShowStr = ""

 

        'iterate the properties

        Dim oEachP As [Property]

        For Each oEachP In oNewPS

            oShowStr &= " [Property Name]  " & 
                         oEachP.Name

            oShowStr &= " [Property Value]  " & 
                       oEachP.Value & vbCr

        Next

        MessageBox.Show(oShowStr)

        oDoc.Close()

    End Sub



Inventor 2018右键菜单全攻略:从基础配置到高级自定义(含避坑指南) 本文深入解析了Inventor 2018右键菜单的构成逻辑与高级自定义方法。从标记菜单、上下文菜单的差异讲起,提供了菜单项异常排查与修复的完整指南,并详细演示了如何通过自定义标记菜单、编辑CUI文件及利用iLogic,将右键菜单打造成个性化的高效命令中心,从而显著提升设计工作流效率。 阅读详情

相关推荐

CAD文件转换避坑指南:Inventor导出STP时这些设置千万别忽略

本文深入解析了使用Autodesk Inventor导出STP文件时的关键设置与避坑指南。重点探讨了应用协议选择、样条曲线拟合精度对几何保真度的影响,以及装配体结构和元数据的保全策略,旨在帮助用户实现高质量、零误差的CAD数据交付,避免下游软件打开时出现特征丢失或曲面破碎等问题。

weixin_29214559的博客 518

Inventor文件中保存自定义数据 - 2

第二种方式是Attribute。我们叫做属性,和iPRoperties以示区别。很多Inventor对象都提供了添加属性的功能,包括文档。属性的操作也有大量文章,本文推荐两个材料: 第一是帮助文档。专门有个章节讲解:     另外就是Brian的博客文章。我还没来得及翻译。  http://modthemachine.typepad.com/my_weblog/2009/0

Gear Up Cloud 1851

Autodesk Inventor 高级操作实战教程

在Inventor中,基础操作包括创建新项目、打开和保存文件、使用标准单位和基本视图操控。新建项目时,选择合适的模板可以事半功倍。通过"File"菜单可以进行文件的新建、打开、保存以及导出操作。此外,Inventor允许用户设置和修改标准单位,确保项目在不同单位制下的兼容性。学习使用快捷键和工具栏图标可以极大地提高工作效率。通过以上内容,用户可以对Inventor的基本界面布局和操作有一个初步的了解,为接下来深入学习零件建模、装配设计等更高级功能打下基础。

weixin_42581846的博客 2324

inventor宏写入属性

写入属性

weixin_57217890的博客 589

appinventor本地数据库1

appinventor本地数据库1

ADS 2024实战:手把手教你搞定CGH40010F的Doherty功放仿真与版图(附避坑指南)

本文详细介绍了使用ADS 2024进行CGH40010F Doherty功放从仿真到版图的全流程设计,涵盖器件建模、稳定性分析、负载牵引匹配和版图联合仿真等关键步骤。特别针对新手常见问题提供避坑指南,帮助工程师高效完成射频功放设计,提升5G基站和雷达系统的性能。

weixin_42528191的博客 221

创建表并插入视图数据_Inventor技巧丨将模型属性插入到修订表中

Inventor支持将模型属性插入到修订表中,前提是:该工程图是基于此模型创建的。举个例子,如果你需要将自定义属性插入到修订表中该如何操作呢?请按照以下步骤进行操作。1. 打开此工程图,工具菜单,文档设置,找到工程图标签2. 在工程图中的特性,选择自定义模型源数据3.选择复制模型iProperty设置4. 选择所需要复制的属性参数此时,参数均已复制完毕。接下来,请在修订表中进行设置。...

weixin_39978444的博客 1181

如何使用superpowers

"这个 bug 帮我修一下" → 我会自动走 systematic-debugging → TDD → verify 流程。- "帮我添加一个登录功能" → 我会自动走 brainstorming → plan → TDD → verify 流程。只要任务有 1% 的可能性适用某个技能,我就会先调用它再行动。→ TDD(测试驱动开发)→ verification(验证)→ code review(代码审查)提出需求 → brainstorming(头脑风暴)→ writing-plans(编写计划)

xiaojingjianqiang的博客 610

Inventor中管理Attribute的工具

Brian在他的博客Mode the machine中又发布了一个Attribute Helper的免费小工具。我且把Attribute翻译成特性吧。推荐的目的是,这个小工具对一些需要使用到Inventor中的特性的人将会很有很大的帮助,因为你能通过它方便地读取/增加/编辑/删除特性。写这个小工具的起因是因为Inventor中的Attribute只能通过编程来能访问到,也就是说,如果你需要用到

CAD定制乐园 1366

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 468

为什么桥式传感器(Bridge Sensor)需要用到仪表放大器?

仪表放大器在桥式传感器的应用里起到关键作用,本文介绍桥式传感器的原理、特性,以及信号调理过程,并附上了一个 TINA - TI 的仿真电路。

疯狂的运放 1528

App Inventor 本地数据库详解

1.前端界面 标签相当于文件夹 数据相当于文件夹中的文件 1.增 将姓名输入框的内容以数据的形式保存到姓名标签 2.查 此时的文件夹只能放一个文件,所以查询到文件夹的名字就等于标签列表,文件件的内容就等于获取的数据 3.删 因为此时只有一条数据,所以删除这条数据=清除所有数据。 4.改 因为此时只有一条数据,所以修改这条数据=新增一条数据。 ...

望天吼 1万+

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1256

Open Inventor 2024.1 RC

在 Open Inventor 的早期版本中,当与具有大容量数据(即至少几 GB)的正交切片或倾斜切片交互时,可能会观察到许多挂起。任何需要更新切片的大部分以进行渲染的更改都会导致潜在的挂起

控件与插件之大全 928

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2344

基于Simulink进行多相电机EMI抑制的仿真建模

特点高可靠性:通过增加相数来提供冗余,增强系统的故障容忍度。低转矩脉动:改善了电机的动态性能,减少了转矩波动。复杂的EMI管理:更多的相数意味着更复杂的电磁环境,增加了EMI抑制的难度。挑战模型复杂性:涉及电气、机械和电磁场等多个领域的相互作用。实时性要求:控制系统需要能够快速响应以适应动态负载变化。多变量优化:包括滤波器设计、PWM调制策略等在内的多个参数需综合考虑以找到最优解。使用Simscape Electrical库来构建一个多相电机模型。

amy_mhd的博客 272

inventor导出tekla_保存和导出文件参考 | Inventor 2019 | Autodesk Knowledge Network

.CATPart、.CATProductCATIA V5 零件和部件文件。(版本 R10 - R19).CATPartCATIA V5 零件。(版本 R10 - R19).x_b、.x_tParasolid 二进制和文本文件。(版本 9.0 - 23.0).g、.neuPro/ENGINEER Granite 和中性文件。(Granite 版本 1.0 - 6.0)BMP光栅图像。DWF二维矢量文...

weixin_29476755的博客 1700

Orange3实战教程:转换---预处理

部件提供了多种预处理方法,这些方法可以在单个预处理流程中组合使用。某些方法也可作为独立部件提供,支持更高级的技术和参数调整。连接到测试与评分:在交叉验证的每个批次中应用预处理器,随后学习器的预处理器会作用于预处理后的子集。连接到学习器:覆盖学习器的默认预处理流程,仅应用自定义流程(各学习器的默认步骤详见其文档)。直接连接到原始数据并输出预处理后的数据集,可能导致模型过拟合。:从原始数据中随机选择固定数量或百分比的特征,主要用于高级测试或教学用途。的预处理器输入,同时传入数据和学习器(如。

err2008的专栏 147

inventor导出tekla_保存和导出文件参考 | Inventor 2021 | Autodesk Knowledge Network

.CATPart、.CATProductCATIA V5 零件和部件文件。(版本 R10 - R19).CATPartCATIA V5 零件。(版本 R10 - R19).x_b、.x_tParasolid 二进制和文本文件。(版本 9.0 - 23.0).g、.neuPro/ENGINEER Granite 和中性文件。(Granite 版本 1.0 - 6.0)BMP光栅图像。DWF二维矢量文...

weixin_39608301的博客 1889

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

inventor扫掠不成功_Inventor资源中心

概述温馨提示:文章非常长,请耐心阅读,肯定能让软件使用者受益匪浅! 非标设计中涉及到的资源中心内容,包括型材、紧固件、轴用标准件等等。所以有必要熟悉资源中心的使用与应用。在安装inventor软件的过程中,默认把所有资源中心数据库都安装,也可以自定义安装符合自己标准的一些数据库,且安装路径也可以设置,比如笔者就改了路径,如下图所示。默认资源中心的库位置为这里只讲桌面资源中心,暂不说vault se...

weixin_36087674的博客 2542

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

APP inventor 的BLE低功耗蓝牙控制

appinventor制作BLEapp控制ESP32参考

Miaofufu的博客 2778

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

App Inventor 2 图片云端保存及访问的App开发思路

一般来说,类似于购物App,你可以从手机App上传物品图片,然后他人也可以在手机App上查看你上传的物品的照片,这时图片就必须采用云端保存的方式。本文主要就是聊一聊 App Inventor 2 进行图片上传及云端图片访问这种场景的App开发思路,及关键步骤的一些指导。

AppInventor2中文网(https://www.fun123.cn)技术。 1151

Open Inventor 2024.1.1 for VS2022[2024.4.4]

在 Open Inventor 的早期版本中,当与具有大量数据(即至少几 GB)的正交切片或斜切片交互时,可能会观察到许多挂起。任何需要更新大部分切片以进行渲染的更改都可能导致挂起

控件与插件之大全 1299

怎样向hadoop中导入数据_Inventor中导入第三方数据

第2章 导入第三方数据2.1 叙述在这里,我们把inventor以外的三维模型数据称为第三方数据,关于第三方数据的导入,包括直接打开第三方软件格式文件和中性格式文件。如果直接打开第三方软件格式的文件,会涉及到关联文件,比如部件文件会关联到零件,所以被关联的零件不能缺少。如下图的solidworks模型文件,如果只有第一个装配文件,则用inventor软件打开后是个空文件,所以下方那些涉及到的零件文...

weixin_39679678的博客 654

revit 转换ifc_基于Inventor BIM建模(三)与Revit的协作

导语Inventor 凭借其强大的造型能力(优于 Revit)、深化设计和 BOM 表功能以及工程图与装配模拟等功能,在深化加工和基础设施等领域,对于 BIM 整体和专项解决方案具有很好的补充与完善。下面介绍Inventor是如何与同胞兄弟Revit进行建筑信息交互的。1 BIM互操作性将可配置的三维 CAD 模型转换为 BIM 对象通过模型简化和不必要的零部件或特征合并,形成一个简化的零件,最后...

weixin_31750655的博客 1545

App inventor 2开发集锦-九格拼图

本文详细介绍了九格拼图游戏的设计与实现过程,包括游戏规则说明、界面设计、程序逻辑分析和代码编写。游戏通过记录玩家完成拼图的耗时和移动次数计算得分,支持重新开始和保存历史最高纪录功能。文章重点分析了三个技术难点:碎片的随机排列、移动逻辑实现和拼图成功判断,并提供了完整的解决方案。程序采用模块化设计,包含12个自定义过程和15个事件处理程序,通过全局变量管理游戏状态,利用网络数据库保存游戏成绩。最后作者提出了游戏难度公平性方面的思考,指出随机初始状态可能影响游戏体验的问题。

王同学的博客 907
上一篇: 操作iPart表的行和列 -1
下一篇: Inventor文件中保存自定义数据 - 2
autodeskinventorapi
博客等级 码龄14年 313粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值