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?