【实用技巧】如何把VBA代码转换成.Net/iLogic

JUMU实名认证 发表于 2019-11-02 23:04 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
大部分时候,我们是在 VBA 里面写自动化设计的示例代码,原因如下:
  • VBAInventor 自带的 SDK,是 Inventor 的一部分。
  • VBA 有智能语法提示。
  • 可以设置断点,调试代码方便。
  • 可以用 Watches 窗口查看变量值和对象。
  • 可以通过 Object Browser 查看所有 Inventor 对象的属性和方法。

我们在 VBA 里面完成代码工作以后,想要在 iLogic 或者 .Net 环境里面运行代码,此时,就需要把 VBA 的代码的转换。
不做转换会有什么情况发生呢?让我们来试试看。
如下是一段 VBA 代码,如果直接在 iLogic 环境里运行:

  1. Sub MySubMethod()
复制代码

问题 1:需要 Sub Main()

解决办法:如果我们有多个方法,第一个方法应该是程序最先被执行的地方,这个方法需要命名为 Sub Main()。

在上面这段代码里面,我们需要把 Sub MyMainMethod 移到最上面,然后改名为 Sub Main()
moXCCt3cCtN03oZ0.jpg

问题 2没有 Let/Set
解决办法:我们需要从代码里把“Set” 关键字删除掉。
ImVTtZwvLPVYyTC9.jpg

最后得到如下代码:
Sub Main() ' Do something ' Then call another method
Call MySubMethod
End Sub

Sub MySubMethod()
Dim doc As Document doc = ThisApplication.ActiveDocument
Call MsgBox(doc.DisplayName)
End Sub

还有一点,也许不是必要的,但我觉得可以值得一试的是,把On Error Resume Next改成Try/Catch.
比如这段代码:
On Error Resume NextDim doc As PartDocumentdoc = ThisApplication.ActiveDocument
If Err.Number = 0 Then
Call MsgBox(doc.DisplayName)
Else
Call MsgBox("No active part document")
End If
On Error Goto 0

我们可以切换成这样:
Dim doc As PartDocument
Try doc = ThisApplication.ActiveDocument
Call MsgBox(doc.DisplayName)
Catch Call MsgBox("No active part document")
End Try请点这里↓↓↓

  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- 距米网 |苏公网安备32041102000587号

©2017-2025 苏ICP备18040927号-1