0

我想做一个感觉相当简单的任务,并且我找到了应该清楚的特定 API 帮助页面,但是,我实际上无法使事情正常进行。

我想实现的关键步骤是:

  1. 重命名活动文档
  2. 更新对本文档的引用以适应新名称
  3. 保存活动文档。

此帮助页面显示了重命名文档的用法,并且在“备注”标题下,包含指向接下来两个步骤的链接,立即提及它们,好像实现它们很容易。 https://help.solidworks.com/2020/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDocExtension~RenameDocument.html?verRedirect=1

问题是,我有点像 VBA 初学者——通常我会使用“记录”功能,然后从那里整理东西——但是手动执行上述步骤并不会导致任何内容被记录下来一个或另一个原因。

假设我能够传入要重命名的项目(我将在 Sub 的开头为此定义一个变量,例如swModel = swApp.ActiveDoc)和新名称(NewName = "NEW NAME HERE"),我将如何将帮助 API 转换为我可以的 Sub实际运行?

其中两个建议声明为函数,一个作为公共接口 - 我以前从未使用过这些 - 这些只是在标准模块中运行吗?我是否需要编写一个“主子”来顺序调用不同的函数,或者如果它们只使用一次,它们是否可以直接包含在子中?

[感觉有点失落——当帮助文件没有那么有用时,这令人沮丧]

让我知道是否缺少更多信息可以添加以改进我的问题 - 正如我所说,我对这个编码事物相当陌生......

4

1 回答 1

1

“记录”功能有时是一个很好的起点,但是当您手动执行它们时,它无法识别很多功能。

API 帮助有助于了解如何使用特定功能。在几乎每个示例中,特定方法(例如 RenameDocument)的使用都只显示为抽象的。总是有一个实例变量向您显示调用此方法所需的对象类型。所以你可以在你想要的每个子中使用它们,但事先需要访问特定的实例对象。

对于您的示例,使用IModelDocExtension类型的对象调用RenameDocument方法。你要做的第一件事是获取这个对象,然后你可以调用帮助文章中描述的方法。在文章中的备注下,您可以找到有关在调用方法之前或之后可能需要执行的操作的其他信息。 对于您的示例,提到重命名会在保存文档后永久进行。

最后,这是您想要对一些 VBA 代码执行的操作:

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2


Sub main()
    ' get the solidworks application object
    Set swApp = Application.SldWorks
    
    'get the current opened document object
    Set swModel = swApp.ActiveDoc
    
    ' get the modeldocextension object
    Dim swModelExtension As ModelDocExtension
    Set swModelExtension = swModel.Extension
    
    Dim lRet As Long
    lRet = swModelExtension.RenameDocument("NEW NAME")
    
    If lRet = swRenameDocumentError_e.swRenameDocumentError_None Then
        MsgBox "success renaming"
    Else
        MsgBox "failed with error: " & lRet
    End If
    
End Sub

Afterwars 您必须处理返回值以检查本文中描述的错误:https ://help.solidworks.com/2020/English/api/swconst/SolidWorks.Interop.swconst~SolidWorks.Interop.swconst.swRenameDocumentError_e.html

于 2021-02-03T11:01:22.187 回答