【问题标题】:Macro for unlocking Views in Catia not working用于解锁 Catia 中视图的宏不起作用
【发布时间】:2019-04-23 02:54:14
【问题描述】:

我正在尝试为 Catia V5 创建宏,它将自动解锁所有视图并更新它们。宏更新所有视图(当它们被解锁时)。 问题是它只解锁了我在运行宏之前当前所在的工作表上的视图,然后它不会更新其他工作表上的其他视图。

因此,解锁视图仅适用于我在运行宏之前最后激活的图纸。 但是,如果我的所有视图都已解锁并且我运行宏,它将更新我的所有视图,但由于某种原因,当我将它们锁定时解锁它们不会像前面所说的那样工作。

Sub CATMain()

Dim oDrawing As DrawingRoot
Dim oViews As DrawingViews
Dim oSheets As DrawingSheets

Set oDrawing = CATIA.ActiveDocument.DrawingRoot
Set oSheets = oDrawing.Sheets
Set oViews = oDrawing.Sheets.ActiveSheet.Views

Dim i, y As Integer

For y = 1 To oSheets.Count
    oDrawing.Sheets.Item(y).Activate
    For i = 1 To oViews.Count
        oViews.Item(i).LockStatus = False
    oDrawing.Sheets.ActiveSheet.Update
    Next
Next

End Sub

我希望我的宏能够解锁所有视图并在每张图纸上更新它们。

【问题讨论】:

  • iy 是否计入预期数字?也许考虑使用For Each 循环而不是基于计数器的迭代。您可以使用右键单击添加监视来“监视”变量,也可以使用debug.print "y: " & y, "i: " & i
  • 另外:i 在您的情况下被声明为Variant。有关更多信息,请参阅此问题:stackoverflow.com/questions/28238292/declaring-variables-in-vba
  • oView 设置在第一个 For 循环之外。你应该把它放在里面。目前您只修改初始活动工作表的视图。设置变量后更改活动工作表不会调整变量。
  • @VincentG 谢谢你解决了我的问题。我看到 oViews 是在循环之前定义的(我的带有视图的活动工作表)。但是在第一个''for y''之后认为循环命令会改变这一点,我猜不会。
  • @L8n 感谢您的帮助和额外的指导,不知道变量的声明。

标签: vba catia


【解决方案1】:

我没有使用 Catia,但您的代码应该如下所示:

Sub CATMain()

    Dim oDrawing As DrawingRoot
    Dim oView As DrawingView
    Dim oSheet As DrawingSheet
    Set oDrawing = CATIA.ActiveDocument.DrawingRoot

    For Each oSheet in oDrawing.Sheets
       For Each oView in oSheet.Views
          oView.LockStatus = False
          oSheet.Update 'Not sure if required here, might be moved outside the loop?
       Next
    Next
End Sub

【讨论】:

  • 而不仅仅是Next,我更喜欢写Next oView(例如)。它增加了一些额外的说明。在小循环中,就像这里的情况一样,它并不重要,但是当代码开始“增长”时它会有所帮助。
  • 这是最适合我的方法,感谢您的帮助。 For y = 1 To oSheets.Count oDrawing.Sheets.Item(y).Activate Set oViews = oDrawing.Sheets.ActiveSheet.Views For i = 1 To oViews.Count oViews.Item(i).LockStatus = False Next i oDrawing.Sheets.ActiveSheet.Update Next y
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多