Inventor(C#)开发学习小结——入门篇
用C#对Inventor做开发,网上案例比较少,多数是VBA的代码示例,官方的示例多数也是VBA,仅提供了一部分C#示例,并不完整。
此外,Inventor提供的API文档也是全英文的,刚入门着实不太好理解API的层次关系,需要借助API对象关系图。另外,还需要将英文与中文一一对应,例如Balloon用词典翻译是“气泡”,但是在Inventor中则是一种“标注”。
首先需要引入Inventor的DLL,地址在:C:\Program Files\Autodesk\Inventor 2019\Bin\Public Assemblies\Autodesk.Inventor.Interop.dll。网上有个C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Autodesk.Inventor.Interopv4.0_17.0.0.0__d84147f8b4276564\autodesk.inventor.interop.dll,这个路径里面包含了很多不同版本的DLL,我试了一下,似乎都不能用,可能是因为实际使用的Inventor与DLL之间版本不一致,用上面的地址则没有问题。
话不多说,直接上代码:
//第一段
using Inventor;
using Application = Inventor.Application;#region 获取Inventor实例
//第二段
private static Inventor.Application inventorApp = null;private static void GetInventorApplication()
{try{//Marshal.GetActiveObject 从运行对象表(ROT)获取指定对象的运行实例
//第三段//获取一个Inventor的参考inventorApp = (Inventor.Application)Marshal.GetActiveObject("Inventor.Application");Console.WriteLine("查找到可用的实例");}catch{try{Console.WriteLine("没有正常连接到Inventor");//创建新实例
//第四段Type inventorAppType = Type.GetTypeFromProgID("Inventor.Application");Console.WriteLine(inventorAppType.GUID.ToString());Console.WriteLine("重新创建一个Inventor实例");inventorApp = Activator.CreateInstance(inventorAppType) as Application;Console.WriteLine("创建新Inventor实例完毕");}catch{Console.WriteLine("创建新实例失败");Process.GetCurrentProcess().Close(); //Diagnostics.Process 获取新的Process组件并将其与当前活动的进程关联}}finally{if (inventorApp != null){Console.WriteLine("生成了Inventor实例并显示Inventor");
//第五段inventorApp.ApplicationEvents.OnQuit += ApplicationEvents_OnQuit;//inventorApp.WindowState = WindowsSizeEnum.kMaximize; //将Inventor窗口大小设置为最大窗口inventorApp.WindowState = WindowsSizeEnum.kNormalWindow;inventorApp.Visible = false;inventorApp.SilentOperation = true;}}
}private static void ApplicationEvents_OnQuit(EventTimingEnum BeforeOrAfter, NameValueMap context, out HandlingCodeEnum HandlingCode)
{Console.WriteLine("触发OnQuit事件");//HandlingCodeEnum 从某些事件中返回的代码//OnQuit 当Inventor被关闭时通知client
//第六段 inventorApp.ApplicationEvents.OnQuit -= ApplicationEvents_OnQuit;HandlingCode = HandlingCodeEnum.kEventHandled; //kEventHandled绕过本地行为 /更多详见后面的备注//inventorApp = null; //仅仅用这个不能关闭Inventor进程,必须要用杀进程的方法///inventorApp.Quit(); //用于毙掉Inventor进程// Process.GetCurrentProcess().Kill();Console.WriteLine("关闭Inventor,结束操作");
}#endregion
Inventor(C#)开发学习小结——入门篇相关推荐
- 自学Web前端开发学习讲解 – 入门篇
很多人都对web前端感兴趣,这一期主要聊关于如何入门学习Web前端开发的过程分享,此篇适合想入门初学者,大佬就不用看了.主要内容是以本人这一路自学web前端的一些经验和建议,学习哪些知识,以及如何正确 ...
- C# 学习笔记入门篇(上)
文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...
- 云小课|DGC数据开发之基础入门篇
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到DGC数据 ...
- 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序
前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...
- Java工程师学习指南 入门篇
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- Vue学习笔记入门篇——数据及DOM
本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...
- 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型
1. 什么是数据类型? 我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型. 比如,数学中的数字 ...
- HTML5+app开发学习之调试篇
HTML5+app开发学习之调试篇 调试方式介绍一 边改边看 调试方式介绍二 真机运行 HBuilder/HBuilderX真机联调常见问题 调试方式介绍三 Android调试(Chrome) 调试方 ...
最新文章
- 各种花里胡哨的管理系统介绍
- 触发器和java的关系_触发器-1 - java ee spring - 博客园
- 城市规划理论II 通勤与移居
- 红包实名的背后,支付实名制如何影响产品设计?
- Docker 镜像之存储管理
- 在京东上买的手机然后申请退货的经历
- C++ primer 第12章 12.3 使用标准库:文本查询程序
- 一直接受键盘字符 接收小写字符出输出大写 接受大写输出小写 数字不输出
- linux基础命令(总结)
- centos 下memcached 构建以及php memcache安装
- BGP选择路由的策略
- 厉害了,竟有程序员在GitHub上建了一个新华词典数据库
- 南洋理工大学“网络安全高级研修班”寒假访学记
- 安卓实现每日一句功能-一言API调用
- like功能以及check功能
- 1.2字符类型及操作
- 用AI「复活」逝者:「深度怀旧」项目火遍推特,我们也用民国老照片试了下 #蚂蚁呀嘿
- 通达信指标:捕捞季节
- 2021-08-23-Nginx安装与部署项目
- 修改host文件实现内网传输