news 2026/4/15 14:30:17

Inventor 二次开发从入门到精通(4)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Inventor 二次开发从入门到精通(4)

4.1 Application 对象:Inventor 的入口

Application对象是 Inventor API 的根对象,所有操作都从这里开始。其核心功能包括:

  • 管理文档(创建、打开、保存、关闭);
  • 访问用户界面(功能区、命令、对话框);
  • 提供几何工具(创建点、向量、矩阵等);
  • 控制 Inventor 的运行状态(可见性、自动更新等)。
4.1.1 获取 Application 对象的两种方式
方式 1:连接已运行的 Inventor 实例
private Application GetInventorApp() { Application invApp = null; try { // 尝试连接已运行的Inventor invApp = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application"); } catch (Exception ex) { // 若未运行,抛出异常或启动新实例 throw new Exception("未找到运行的Inventor实例:" + ex.Message); } return invApp; }
方式 2:启动新的 Inventor 实例
private Application StartInventorApp() { Application invApp = null; try { // 获取Inventor的类型 Type invType = Type.GetTypeFromProgID("Inventor.Application"); // 创建实例 invApp = (Application)Activator.CreateInstance(invType); // 显示界面 invApp.Visible = true; // 禁用自动更新(提升性能) invApp.ScreenUpdating = false; } catch (Exception ex) { throw new Exception("启动Inventor失败:" + ex.Message); } return invApp; }
4.1.2 Application 对象的常用属性和方法
属性 / 方法功能
ActiveDocument获取当前激活的文档
Documents获取文档集合
TransientGeometry获取几何工具对象,用于创建点、向量等
UserInterfaceManager获取用户界面管理器
ScreenUpdating设置是否启用屏幕更新
Quit()退出 Inventor

4.2 文档的基本操作

4.2.1 创建新文档

Inventor 支持创建多种类型的文档,通过Documents.Add()方法实现:

// 创建零件文档 Document partDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject); // 创建装配体文档 Document assyDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kAssemblyDocumentObject); // 创建工程图文档 Document drawDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject); // 创建表达视图文档 Document presentationDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kPresentationDocumentObject);

4.2 文档的基本操作

4.2.1 创建新文档

Inventor 支持创建多种类型的文档,通过Documents.Add()方法实现:

// 创建零件文档 Document partDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject); // 创建装配体文档 Document assyDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kAssemblyDocumentObject); // 创建工程图文档 Document drawDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kDrawingDocumentObject); // 创建表达视图文档 Document presentationDoc = _inventorApp.Documents.Add(DocumentTypeEnum.kPresentationDocumentObject);
4.2.2 打开现有文档

使用Documents.Open()方法打开本地文档:

// 定义文档路径 string docPath = @"D:\InventorFiles\Sample.part"; // 打开文档(只读模式) Document doc = _inventorApp.Documents.Open(docPath, false);

注意:路径需使用绝对路径,且需保证文件存在,否则会抛出异常。

4.2.3 保存文档

文档的保存分为Save()(保存当前文档)和SaveAs()(另存为):

// 保存当前文档 _inventorApp.ActiveDocument.Save(); // 另存为新文件 string newPath = @"D:\InventorFiles\NewSample.part"; _inventorApp.ActiveDocument.SaveAs(newPath, false);
4.2.4 关闭文档

使用Document.Close()方法关闭文档,可指定是否保存更改:

// 关闭文档并保存更改 _inventorApp.ActiveDocument.Close(true); // 关闭文档不保存更改 _inventorApp.ActiveDocument.Close(false);
4.2.5 遍历所有打开的文档
foreach (Document doc in _inventorApp.Documents) { string info = $"文档名称:{doc.DisplayName},类型:{doc.DocumentType}"; _inventorApp.UserInterfaceManager.MessageBox.Show(info); }

4.3 几何对象的创建与操作

Inventor 的TransientGeometry对象提供了创建临时几何对象的方法,这些对象不存储在文档中,仅用于计算和建模。

4.3.1 点(Point)的创建
// 创建三维点 Point p1 = _inventorApp.TransientGeometry.CreatePoint(10, 20, 30); // 创建二维点(Z坐标为0) Point p2 = _inventorApp.TransientGeometry.CreatePoint(50, 50, 0); // 获取点的坐标 double x = p1.X; double y = p1.Y; double z = p1.Z;
4.3.2 向量(Vector)的创建与运算
// 创建向量 Vector v1 = _inventorApp.TransientGeometry.CreateVector(1, 0, 0); Vector v2 = _inventorApp.TransientGeometry.CreateVector(0, 1, 0); // 向量相加 Vector v3 = v1.Add(v2); // 向量点乘 double dot = v1.DotProduct(v2); // 向量叉乘 Vector cross = v1.CrossProduct(v2); // 向量归一化 v1.Normalize();
4.3.3 矩阵(Matrix)的创建与变换

矩阵用于实现几何对象的平移、旋转、缩放等变换:

// 创建单位矩阵 Matrix matrix = _inventorApp.TransientGeometry.CreateMatrix(); // 平移变换(沿X轴移动10) matrix.SetTranslation(_inventorApp.TransientGeometry.CreateVector(10, 0, 0)); // 旋转变换(绕Z轴旋转90度) matrix.SetRotation(_inventorApp.TransientGeometry.CreateVector(0, 0, 1), Math.PI / 2);

4.4 参数的管理与修改

参数是 Inventor 参数化建模的核心,通过 API 可实现参数的创建、修改和查询。

4.4.1 访问现有参数
PartDocument partDoc = (PartDocument)_inventorApp.ActiveDocument; // 获取参数集合 Parameters paramsCollection = partDoc.ComponentDefinition.Parameters; // 通过名称访问尺寸参数 ModelParameter lengthParam = (ModelParameter)paramsCollection["Length"]; // 修改参数值 lengthParam.Value = 150; // 通过类型筛选参数 foreach (Parameter param in paramsCollection) { if (param.Type == ParameterTypeEnum.kModelParameter) { _inventorApp.UserInterfaceManager.MessageBox.Show($"参数名:{param.Name},值:{param.Value}"); } }
4.4.2 创建新参数
// 创建模型参数(长度) ModelParameter newParam = partDoc.ComponentDefinition.Parameters.ModelParameters.Add( "Width", // 参数名 UnitTypeEnum.kMillimeterLengthUnits, // 单位 80 // 初始值 ); // 创建用户参数(整数) UserParameter userParam = partDoc.ComponentDefinition.Parameters.UserParameters.AddByValue( "Count", // 参数名 5, // 初始值 UnitTypeEnum.kIntegerUnits // 单位 );

4.5 事务的高级使用

事务可用于批量操作的管理,支持嵌套和撤销 / 重做:

// 创建父事务 Transaction parentTrans = _inventorApp.TransactionManager.CreateTransaction(partDoc, "批量创建特征"); parentTrans.Start(); // 创建子事务 Transaction childTrans1 = _inventorApp.TransactionManager.CreateTransaction(partDoc, "创建拉伸"); childTrans1.Start(); // 执行拉伸创建操作 childTrans1.End(); Transaction childTrans2 = _inventorApp.TransactionManager.CreateTransaction(partDoc, "创建孔"); childTrans2.Start(); // 执行孔创建操作 childTrans2.End(); // 提交父事务 parentTrans.End(); // 撤销父事务(会同时撤销子事务) // parentTrans.Undo(); // 重做父事务 // parentTrans.Redo();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 13:05:11

6款必知的reMarkable GUI客户端:本地管理VS云同步全解析

6款必知的reMarkable GUI客户端:本地管理VS云同步全解析 【免费下载链接】awesome-reMarkable A curated list of projects related to the reMarkable tablet 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-reMarkable 还在为reMarkable平板文件传输…

作者头像 李华
网站建设 2026/4/13 14:43:45

收藏级干货!一文吃透大模型智能体:LLM-based Agents核心原理

逛AI圈时是不是总被这些问题绕晕?ChatGPT为啥能当"全能助手"而非单纯聊天工具?大语言模型(LLM)撑起的智能体,和咱们以前接触的传统AI到底差在哪?为啥说它是AI落地的关键方向? 对于刚入…

作者头像 李华
网站建设 2026/4/12 22:52:55

收藏!Java转大模型工程师薪资暴涨60%,招聘消息炸屏的转型指南

“从Java开发跨界大模型工程师,薪资直接涨了60%,最直观的变化是——招聘软件的消息提示根本回不过来。” 一位程序员在CSDN技术社区的分享,戳中了无数正在寻求职业突破的开发者。 自ChatGPT掀起技术革命,文心一言、DeepSeek、通义…

作者头像 李华
网站建设 2026/3/25 4:51:01

c语言学生信息管理系统

📚 零基础入门C语言项目:手把手教你写学生信息管理系统在C语言学习的进阶阶段,一个经典的实战项目就是「学生信息管理系统」。这个小项目不仅能串联起结构体、数组、循环、函数等核心知识点,还能让你直观感受到编程解决实际问题的…

作者头像 李华