David Egan
David Egan

Reputation: 434

Catia Sheet No. Title Blocks

I would like to get some VBA code which would tell me the number of sheets in a Catia drawing. Each sheet would have a title block placed on it. A text field on each title block would communicates the number of sheets. So if you had three sheets in the drawing you would have 1 of 3 (in the title block sheet 1) 2 of 3 (in the title block shhet 2) and 3 of 3 (in the title block sheet 3). If the macro could update all title blocks on all sheets automatically.

Any help much appreciated.

Upvotes: 0

Views: 3030

Answers (1)

GisMofx
GisMofx

Reputation: 1024

The concept is to loop through all of the DrawingSheet objects in the Sheets collection of the DrawingDocument you should put all title block elements in the "Background View". Next we need to update or create existing title block text elements. These are DrawingText objects. We try to access the DrawingText by name(THIS MUST BE UNIQUE!). If it does not exist, we create it. If it does exist, we update the value.

Here's a start to making your title block:

Option Explicit
Sub UpdateSheetPage()

    Dim DrawingDoc As DrawingDocument
    Dim DSheet As DrawingSheet
    Dim DView As DrawingView
    Dim SheetCount As Integer
    Dim currentSheet As Integer

    'the drawing must be the active docuement window or this will fail. you can do more error checking if needed
    On Error GoTo ExitSub
    Set DrawingDoc = CATIA.ActiveDocument
    SheetCount = DrawingDoc.Sheets.Count



    currentSheet = 1 'initialize sheet number
    'loop through all sheets and update or create a sheet number
    For Each DSheet In DrawingDoc.Sheets
        UpdatePageNumber DSheet, currentSheet, SheetCount
        currentSheet = currentSheet + 1
    Next

ExitSub:
End Sub

Sub UpdatePageNumber(currentDrawingSheet As DrawingSheet, currentSheetNumber As Integer, totalSheets As Integer)
    Dim sheetNumber As String
    Dim xPos, yPos As Long 'mm

    'edit these if needed
    xPos = 100 'edit this - only use for new creation
    yPos = 100 'edit this
    'display format
    sheetNumber = "Page " & currentSheetNumber & "/" & totalSheets

    Dim backgroundView As DrawingView
    Dim dTexts As DrawingTexts
    Dim currentText As DrawingText
    Set backgroundView = currentDrawingSheet.Views.Item("Background View")
    Set dTexts = backgroundView.Texts
    On Error GoTo CreateNew
    Set currentText = dTexts.GetItem("SheetNumber")
    currentText.Text = sheetNumber
    Exit Sub

CreateNew:
    Set currentText = dTexts.Add(sheetNumber, xPos, yPos)
    currentText.Name = "SheetNumber" 'so we can access it later for an update
End Sub

Upvotes: 1

Related Questions