Scripting Examples

Visual Basic .NET Examples

Sheet Color

Changes the sheet color and connects to a Database.

Public Class CM4DScript

  Public Sub Execute(cm4dDoc as Cm4DScriptingDoc)

    Dim color as eColor

    Dim sheetLabel as String

    Dim sheet as QaSheet

    Dim sheetSet As QaSheetSet

    Dim annotT As QaText

    Dim annotG As QaGraph

    Dim database as CM4DDB

    sheet = cm4dDoc.ScriptSheet

    If sheet IsNot Nothing Then

      sheet.Color = eColor.eColorRed

    End If

   

    database = new CM4DDB

    database.Connect(cm4dDoc)

    cm4dDoc.Update()

    cm4dDoc.EndScript()

  End Sub

End Class

 

Public Class CM4DDB

  Public Sub Connect(cm4dDoc as Cm4DScriptingDoc)

    Dim db as QaDbDataSource

    db = cm4dDoc.NewDataSource()

    If db IsNot Nothing Then

      db.DataSourceType = eDataSourceType.eSQLServer

      db.DataSourceConnectString = "computername\cm4d"

      db.DataSourceDatabaseName = "sitedb1"

      db.Connect()

    End If

  End Sub

End Class

Page Numbering

Public Class CM4DScript

  Public Sub Execute(cm4dDoc as Cm4DScriptingDoc)

        Dim oSheetSet As CM4D.QaSheetSet

        Dim oSheet As CM4D.QaSheet

        Dim i As Integer

        Dim itotal_sheets As Integer = 0

        Dim icurrent_sheet As Integer = 0

        cm4dDoc.HideDocument()

        For i = 2 To cm4dDoc.GetSheetSetCount()

            Dim isheetcount As Integer

            oSheetSet = cm4dDoc.GetSheetSetByPos(i)

            isheetcount = oSheetSet.GetSheetCount()

            If oSheetSet.AllowPrintWTC = True Or oSheetSet.AllowPrintScheduler = True Then

                Dim istartsheet As Integer = 3

                Dim j As Integer

                For j = istartsheet To isheetcount

                    itotal_sheets = itotal_sheets + 1

                Next

            End If

        Next

        For i = 2 To cm4dDoc.GetSheetSetCount()

            oSheetSet = cm4dDoc.GetSheetSetByPos(i)

            Dim isheet_size As Integer = oSheetSet.Size

            Dim isheetcount As Integer = oSheetSet.GetSheetCount()

            If oSheetSet.AllowPrintWTC = True Or oSheetSet.AllowPrintScheduler = True Then

                Dim j As Integer

                For j = 1 To isheetcount

                    oSheet = oSheetSet.GetSheetByPos(j)

                    If j > 2 Then

                        icurrent_sheet = icurrent_sheet + 1

                        oSheet.Label = icurrent_sheet

                    ElseIf j = 1 Then

                        oSheet.Activate()

                        Dim itext_count As Integer = oSheet.GetTextCount()

                        Dim t As Integer

                        For t = 1 To itext_count

                            Dim title_box As CM4D.QaText = oSheet.GetTextByPos(t)

                            If InStr(title_box.Text, "Sample Start Date") > 0 And isheet_size = 3 Then

                                title_box.Text = "Part Number: ~routine~" & vbCrLf & "Plant Name: ~load,datasource~" & vbCrLf & "File Updated On Date: ~date~ Time: ~time~" & vbCrLf & "Sample Start Date: ~sample,date,old~" & vbCrLf & "Sample End Date:  ~sample,date,new~" & vbCrLf & "Page: ~sheet,label~ of " & itotal_sheets & vbCrLf & "PRINTED COPIES ARE UNCONTROLLED"

                                title_box.Refresh()

                            End If

                            If InStr(title_box.Text, "Part Number") > 0 And InStr(title_box.Text, "Sample Start Date") = 0 And isheet_size = 3 Then

                                title_box.Text = "Part Number: ~routine~" & vbCrLf & "Plant Name: ~load,datasource~" & vbCrLf & "File Updated On Date: ~date~ Time: ~time~" & vbCrLf & vbCrLf & vbCrLf & "Page: ~sheet,label~ of " & itotal_sheets & vbCrLf & "PRINTED COPIES ARE UNCONTROLLED"

                                title_box.Refresh()

                            End If

                            If InStr(title_box.Text, "Part Number") > 0 And InStr(title_box.Text, "Sample Start Date") = 0 And isheet_size = 5 Then

                                title_box.Text = "Plant Name: ~load,datasource~" & vbCrLf & "File Updated On Date: ~date~ Time: ~time~" & vbCrLf & "Sample Start Date: ~sample,date,old~" & vbCrLf & "Sample End Date:  ~sample,date,new~" & vbCrLf & "Page: ~sheet,label~ of " & itotal_sheets & vbCrLf & "PRINTED COPIES ARE UNCONTROLLED"

                                title_box.Refresh()

                            End If

                            If InStr(title_box.Text, "~sample,date~") > 0 And InStr(title_box.Text, ",old") = 0 And InStr(title_box.Text, ",new") = 0 And isheet_size = 3 Then

                                title_box.Delete()

                            End If

                        Next

                    End If

                    oSheet = oSheetSet.GetSheetByPos(3)

                    oSheet.Activate()

                Next

            End If

        Next

        cm4dDoc.ShowDocument()

        MsgBox("Page Numbers have been Updated/Applied" & vbCrLf & "Please Save and Open Template to Review Changes")

    cm4dDoc.EndScript()

  End Sub

End Class

Requires the Declaration: Imports Microsoft.VisualBasic

No Sample Load

Public Class CM4DScript

  Public Sub Execute(cm4dDoc as Cm4DScriptingDoc)

        Dim oCM4DQuery As CM4D.QaQuery

        Dim iQueryCount As Integer

        CM4DDoc.HideDocument()

        For iQueryCount = 1 To CM4DDoc.GetQueryCount()

            oCM4DQuery = CM4DDoc.GetQueryByPos(iQueryCount)

            ' - Set Sample Settings Information

            oCM4DQuery.OracleSamplesType = 0

            oCM4DQuery.Load()

        Next

        CM4DDoc.ShowDocument()

    cm4dDoc.EndScript()

  End Sub

End Class

Requirements

Assemblies: System.Windows.Forms.dll; Microsoft.VisualBasic.dll

Declarations: Imports Microsoft.VisualBasic

C# Examples

Example of a C# script that will change the sheet color:

public class CM4DScript

{

  public static void Execute(Cm4DScriptingDoc doc)

  {

    CM4D.Scripting.Cm4DScriptingDoc myDoc = doc;

    eColor color = eColor.eColorRed;

    string sheetLabel = "Sheet 1";

    CM4DSheet sheet = new CM4DSheet();

    sheet.ChangeColor(myDoc, sheetLabel, color);

    cm4dDoc.Update();

    myDoc.EndScript();

  }

}

public class CM4DSheet

{

  public void ChangeColor(Cm4DScriptingDoc cm4dDoc, string label, eColor color)

  {

    var sheet = cm4dDoc.GetSheet(label);

    if(sheet != null)

      sheet.Color = color;

  }

}


Can we improve this topic?