aardio + SOLIDWORKS 快速入门

aardio + SOLIDWORKS 快速入门其实在 aardio 中调用 SOLIDWORKS 非常简单 var swApp com CreateObject SldWorks

大家好,欢迎来到IT知识分享网。

其实在 aardio 中调用 SOLIDWORKS 非常简单:

var swApp = com.CreateObject("SldWorks.Application")

这样就可以直接调用 SOLIDWORKS 的所有接口函数了,在官网开发文档里对应的是 ISldWorks 接口,从这个接口开始看文档就可以了。

aardio 提供了 com.sldWorks 扩展库,com.sldWorks 对象实际也就是上面说的 SldWorks.Application 对象。

下面先从最基础的用法开始。

import console.int; import com.sldWorks; //创建 ISldWorks 接口对象 var swApp = com.sldWorks(); //窗口设为可见 swApp.Visible = true; //打开指定的文档。 swApp.OpenDoc("/File.sldprt") //遍历所有文档 for k,swDoc in swApp.eachDocument(){ //遍历文档特性 var swFeat = swDoc.FirstFeature(); while (swFeat != null) { console.log(swFeat.Name); swFeat = swFeat.GetNextFeature(); } //加 set 前缀函数修改带参数属性,可用代码提示快速输入 _sw 前缀常量。 swDoc.setSummaryInfo(0/*_swSumInfoTitle*/,"My Part"); //加 get 前缀函数获取带参数属性(摘要信息之标题)。 var title = swDoc.getSummaryInfo(0/*_swSumInfoTitle*/); }

熟悉 SOLIDWORKS 的用户应当知道这个 swApp 怎么用,在 aardio 里没有太大的区别。有其他问题请参考 aardio 调用 COM 接口的文档与范例。

在 aardio 中直接调用 VBA 编写并执行宏代码。

import com.sldWorks; var swApp = com.sldWorks(); swApp.Visible = true; swApp.VBA( ` Dim swApp As Object Sub main() Set swApp = Application.SldWorks swApp.SendMsgToUser "第一个 VBA 宏" End Sub` ) 

非常方便。

SOLIDWORKS 有一个优势可以直接运行文本格式的 VBA 代码。

但是,SOLIDWORKS 调用宏时不能像 Excel, AutoCAD 那样传参数。甚至是不得不动用剪贴板这些方式来艰难地传参数。

在 aardio 里我们可以利用 aardio 的模板语法轻松地解决这个问题,我们可以在 VBA 代码里写 aardio 代码,传递 aardio 对象、数组 ……

示例:

import com.sldWorks; var swApp = com.sldWorks(); swApp.ShowForeground(); swApp.VBA( ` Sub main() set aardioDict = <? ={ key1 = "aardio 对象的值1", key2 = "aardio 对象的值2", } ?> MsgBox aardioDict("key1") End Sub` )

VBA 代码中位于模板标记 <? 到 ?> 之间的是 aardio 代码:

<? ={ key1 = "aardio 对象的值1", key2 = "aardio 对象的值2", } ?>

模板如果开始于等号 `=`,则输出后面的表达式到 VBA 代码中。如果这后面是包含名值对的表对象 —— 会自动转换为 VBA 字典对象。如果输出 aardio 数组 —— 则会转换为 VBA 的集合( Collection ) 对象。

也可以直接运行宏文件:

swApp.RunMacro("/vba.swp" )

可以运行 *.swp, *.swb 格式的 VBA 宏 ,或者 *.dll 格式的 C# 编写的宏。

在 aardio 中可以直接编译 C# 源码并生成 DLL 文件。

示例:

import com.sldWorks; var swApp = com.sldWorks(); //创建 C# 编译器 import dotNet; var compiler = swApp.NetCompiler("C#") //C# 源码,支持 aardio 模板语法 compiler.Source = /* using System; namespace Macro1 { public class SolidWorksMacro { //默认初始化代码 <?= owner.start("SolidWorksMacro") ?> //启动主函数 public void Main() { swApp.SendMsgToUser("宏开始运行!"); } } } */ //编译并生成 DLL compiler.CompileOrFail("/Macro1.dll") 

在 aardio 里调用 C# 代码非常简洁,生成的 DLL 也不再需要额外带上那些 SOLIDWORKS 的依赖程序集。

秘密就在 C# 代码可以插入下面这句 aardio 模板代码:

<?= owner.start("SolidWorksMacro") ?>

owner.start() 的参数指定 C# 类名 `SolidWorksMacro`。

这句模板代码的作用是自动生成 SOLIDWORKS 宏的初始化代码,并且负责自动设置好依赖程序集。

其实我们还可以在 aardio 模板里做更多事,例如在 C# 代码里嵌入 aardio 对象,数组 …… 。

示例:

import com.sldWorks; var swApp = com.sldWorks(); //创建 C# 编译器 import dotNet; var compiler = swApp.NetCompiler("C#") //C# 源码,支持 aardio 模板语法 compiler.Source = /* using System; namespace Macro1 { public class SolidWorksMacro { <?= owner.start("SolidWorksMacro") ?> public void Main() { object result = <? ={ key1 = 123; key2 = 789; } ?>; foreach (var kvp in (Dictionary<string, object>)result) { swApp.SendMsgToUser(kvp.Key + "=" + kvp.Value.ToString() ); } } } } */ //编译并生成 DLL compiler.CompileOrFail("/Macro2.dll") 

在 C# 中用下面的模板代码置入了 aardio 对象:

<? ={ key1 = 123; key2 = 789; } ?>;

下面我们运行前面生成的 DLL 宏:

import com.sldWorks; var swApp = com.sldWorks(); swApp.RunMacro("/Macro2.dll");

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/93359.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信