How to: Get a none predefined DataDefsvalue


Topic:

Get a none predefined DataDefsvalue


Class hierarchy:

IPCsApplication IPCsDocument IPCsDrawing ProjectDataDefs
IPCsApplication IPCsDocument IPCsDrawing PageDataDefs
IPCsApplication IPCsDocument IPCsDrawing SymbolDataDefs


Description:

How to get the list of valid strings, to be used with the datafields FieldName-property.


Sourcecode:
[+] Delphi
uses DPSCAD_TLB, Variants;

var
  ADrawing : IPCsDrawing;
  i : integer;
  AStr : string;
begin
  {getting the the drawing}
  ADrawing := PCsApplication.ActiveDocument.Drawing;

  {getting the Projectdatadefs}
  AStr := 'Valid values for ProjectDataDefs:' + #13#10;
  if VarIsArray(ADrawing.ProjectDataDefs) then {array is created}
    for i := 0 to VarArrayHighBound(ADrawing.ProjectDataDefs,1) do
      AStr := AStr + ADrawing.ProjectDataDefs[i] + #13#10;
  AStr := AStr + #13#10;

  {getting the PageDataDefs}
  AStr := AStr + 'Valid values for PageDataDefs:' + #13#10;
  if VarIsArray(ADrawing.PageDataDefs) then {array is created}
    for i := 0 to VarArrayHighBound(ADrawing.PageDataDefs,1) do
      AStr := AStr + ADrawing.PageDataDefs[i] + #13#10;
  AStr := AStr + #13#10;

   {getting the SymbolDataDefs}
  AStr := AStr + 'Valid values for SymbolDataDefs:' + #13#10;
  if VarIsArray(ADrawing.SymbolDataDefs) then {array is created}
    for i := 0 to VarArrayHighBound(ADrawing.SymbolDataDefs,1) do
      AStr := AStr + ADrawing.SymbolDataDefs[i] + #13#10;

  ShowMessage(AStr);
end;

[+] Visual Basic
Dim str As String = ""

'getting the the drawing
Dim drawing As Dpscad.PCsDrawing = PCsApplication.ActiveDocument.Drawing

'getting the Projectdatadefs
str = "Valid values for ProjectDataDefs:" & vbLf
Dim dataDefs As Array = DirectCast(drawing.ProjectDataDefs, Array)
Dim dataDefStrings As String() = New String(dataDefs.Length - 1) {}
dataDefs.CopyTo(dataDefStrings, 0)
For i As Integer = 0 To dataDefStrings.Length - 1
  str += dataDefStrings(i) & vbLf
Next
str += vbLf

'getting the Pagedatadefs
str += "Valid values for PageDataDefs:" & vbLf
dataDefs = DirectCast(drawing.ProjectDataDefs, Array)
dataDefStrings = New String(dataDefs.Length - 1) {}
dataDefs.CopyTo(dataDefStrings, 0)
For i As Integer = 0 To dataDefStrings.Length - 1
  str += dataDefStrings(i) & vbLf
Next
str += vbLf

'getting the Symboldatadefs
str += "Valid values for SymbolDataDefs:" & vbLf
dataDefs = DirectCast(drawing.ProjectDataDefs, Array)
dataDefStrings = New String(dataDefs.Length - 1) {}
dataDefs.CopyTo(dataDefStrings, 0)
For i As Integer = 0 To dataDefStrings.Length - 1
  str += dataDefStrings(i) & vbLf
Next

MessageBox.Show(str)

[+] C#
string str = "";

/*getting the the drawing*/
Dpscad.PCsDrawing drawing = PCsApplication.ActiveDocument.Drawing;

/*getting the Projectdatadefs*/
str = "Valid values for ProjectDataDefs:\n";
Array dataDefs = (Array)drawing.ProjectDataDefs;
string[] dataDefStrings = new string[dataDefs.Length];
dataDefs.CopyTo(dataDefStrings, 0);
for (int i = 0; i < dataDefStrings.Length; i++)
  str += dataDefStrings[i] + "\n";
str += "\n";

/*getting the Pagedatadefs*/
str += "Valid values for PageDataDefs:\n";
dataDefs = (Array)drawing.ProjectDataDefs;
dataDefStrings = new string[dataDefs.Length];
dataDefs.CopyTo(dataDefStrings, 0);
for (int i = 0; i < dataDefStrings.Length; i++)
  str += dataDefStrings[i] + "\n";
str += "\n";

/*getting the Symboldatadefs*/
str += "Valid values for SymbolDataDefs:\n";
dataDefs = (Array)drawing.ProjectDataDefs;
dataDefStrings = new string[dataDefs.Length];
dataDefs.CopyTo(dataDefStrings, 0);
for (int i = 0; i < dataDefStrings.Length; i++)
  str += dataDefStrings[i] + "\n";

MessageBox.Show(str);