hexagon logo

VB.NET for PC DMIS

I am new to using PCDMIS.

ASSIGN/V3=SYSTEMDATE("MM'/'dd'/'yy")
ASSIGN/V4=SYSTEMTIME("hh:mm:ss tt")
ASSIGN/V5=DIST1.DEV
ASSIGN/V6=DIST2.DEV
ASSIGN/V7=DIST3.DEV
ASSIGN/V8=DIST4.DEV
ASSIGN/V9=DIST5.DEV
ASSIGN/V10=DIST9.DEV
ASSIGN/V11=DIST10.DEV
ASSIGN/V12=DIST6.DEV
ASSIGN/V13=DIST7.DEV
ASSIGN/V14=DIST11.DEV
ASSIGN/V15=DIST12.DEV
ASSIGN/V16=DIST8.DEV
ASSIGN/V17=DIST19.DEV
ASSIGN/V18=LOC1.X.DEV
ASSIGN/V19=LOC1.Y.DEV
ASSIGN/V20=LOC2.X.DEV
ASSIGN/V21=LOC2.Y.DEV
ASSIGN/V22=LOC3.X.DEV
ASSIGN/V23=LOC3.Y.DEV
ASSIGN/V24=LOC4.X.DEV
ASSIGN/V25=LOC4.Y.DEV
ASSIGN/V26=LOC5.X.DEV
ASSIGN/V27=LOC5.Y.DEV
ASSIGN/V28=LOC6.X.DEV
ASSIGN/V29=LOC6.Y.DEV
ASSIGN/V30=LOC7.X.DEV
ASSIGN/V31=LOC7.Y.DEV
ASSIGN/V32=LOC8.X.DEV
ASSIGN/V33=LOC8.Y.DEV
ASSIGN/V34=LOC9.X.DEV
ASSIGN/V35=LOC9.Y.DEV
ASSIGN/V36=LOC10.X.DEV
ASSIGN/V37=LOC10.Y.DEV
ASSIGN/V38=LOC16.X.DEV
ASSIGN/V39=LOC16.Y.DEV
ASSIGN/V40=LOC11.X.DEV
ASSIGN/V41=LOC11.Y.DEV
ASSIGN/V42=DIST13.DEV
ASSIGN/V43=DIST14.DEV
ASSIGN/V44=DIST15.DEV
ASSIGN/V1=DIST16.DEV
ASSIGN/V45=DIST17.DEV
ASSIGN/V46=DIST18.DEV
ASSIGN/V47=LOC12.X.DEV
ASSIGN/V48=LOC12.Y.DEV
ASSIGN/V49=LOC13.X.DEV
ASSIGN/V50=LOC13.Y.DEV
ASSIGN/V51=LOC14.X.DEV
ASSIGN/V52=LOC14.Y.DEV
ASSIGN/V53=LOC15.X.DEV
ASSIGN/V54=LOC15.Y.DEV
ASSIGN/V97="Date"+","+"Time"+","+"1.60 .190-32"+","+"1.60 5/16-24"+","+"1.00 Spot"+","+".8701 Spool"+","+".8701 5/16-24"
ASSIGN/V98=".8701 .452"+","+".8701 1/2-20"+","+"1.7902 Spool"+","+"1.7902 5/16-24"+","+"1.7902 .750"+","+"1.7902 7/8-14"
ASSIGN/V99=".6496 Spot"+","+"3.7780 Spot"+","+".2165 #1 x"+","+".2165 #1 y"+","+".2165 #2 x"+","+".2165 #2 y"
ASSIGN/V100=".2165 #3 x"+","+".2165 #3 y"+","+".2165 #4 x"+","+".2165 #4 y"+","+".156 #1 x"+","+".156 #1 y"
ASSIGN/V101=".156 #2 x"+","+".156 #2 y"+","+"Spot #6 x"+","+"Spot #6 y"+","+"Spot #5 x"+","+"Spot #5 y"
ASSIGN/V102="Spot #7 x"+","+"Spot #7 y"+","+".1256 x"+","+".1256 y"+","+".272 x"+","+".272 y"+","+"5/16-24 #1 x"
ASSIGN/V103="5/16-24 #1 y"+","+"TP tol (2x)"+","+".8701 7/16-20 #1"+","+".8701 7/16-20 #2"+","+"1.60 7/16-20 #1"+","+"1.60 7/16-20 #2"
ASSIGN/V104=".752 Spot Front"+","+".752 Spot Back"+","+"Spot #1 x"+","+"Spot #1 y"+","+"Spot #2 x"
ASSIGN/V105="Spot #2 y"+","+"Spot #3 x"+","+"Spot #3 y"+","+"Spot #4 x"+","+"Spot #4 y"
ASSIGN/V109=V3+","+V4+","+V5+","+V6+","+V7+","+V8+","+V9+","+V10+","+V11+","+V12+","+V13+","+V14+","+V15
ASSIGN/V110=V16+","+V17+","+V18+","+V19+","+V20+","+V21+","+V22+","+V23+","+V24+","+V25+","+V26+","+V27
ASSIGN/V111=V28+","+V29+","+V30+","+V31+","+V32+","+V33+","+V34+","+V35+","+V36+","+V37+","+V38+","+V39
ASSIGN/V112=V40+","+V41+","+V2+","+V42+","+V43+","+V44+","+V1+","+V45+","+V46+","+V47+","+V48+","+V49+","+V50+","+V51
ASSIGN/V113=V52+","+V53+","+V54

above is a portion of code.

Dim app As PCDLRN.Application
Dim cmds As Object
Dim cmd As PCDLRN.Command
Dim part As PCDLRN.PartProgram
Dim data As PCDLRN.ReportData
Dim rWin As PCDLRN.ReportWindow

Dim s As String = ""

app = GetObject("", "PCDLRN.Application.12.1")
app.Visible = True
part = app.ActivePartProgram
cmds = part.Commands

Dim nCommands As String = part.Commands.Count.ToString
Dim val As String = part.GetVariableValue("PLN1").StringValue.ToString

MessageBox.Show("Value is -- " & val & "--" & nCommands)

For Each cmd In cmds
'Dim assignName As Object = cmd.GetText(PCDLRN.ENUM_FIELD_TYPES.DEST_EXPR, 0)
'Console.WriteLine(assignName.ToString)
Console.WriteLine(cmd.TypeDescription.ToString & " " & cmd.Type & " " & cmd.GetFieldValue())
'Console.WriteLine(part.GetVariableValue(assignName).CommandValue.ToString)
Next

'rWin = part.ReportWindow
'data = rWin.Pages

'Dim dat As String = data.GetValue(PCDLRN.ENUM_FIELD_TYPES.AXIS_NOMINAL, 1107)
'MessageBox.Show(dat)

and above is the VB.NET code I am using to access CMM code. I want to get all the values inside ASSIGN/x=y commands eg: ASSIGN/V113=V52+","+V53+","+V54. Can anyone share code to get these values ? I am trying to use Command.GetFieldValue(PCDLRN ENUM FIELD TYPE, TYPE INDEX ) , I do not understand what are these two parameters inside the GetFieldValue method ? Any help will be appreciated.
Parents
  • cmd.GetText is a bad choice for determining things, as it depends on the language you're running PC-DMIS in. There are lots of helper functions on the CMD class. Here's a part of my FEATURE_EXPORT.BAS script:

    
      For ix = 1 To DmisCommands.Count
        Set DmisCommand = DmisCommands(ix)
    
        If DmisCommand.IsDimension Then
          Set DmisDimension = DmisCommand.DimensionCommand
    
          Select Case State
            Case 1 '  Normal Case
    
              If (DmisDimension.OutputMode <> DIMOUTPUT_NONE) And (DmisDimension.OutputMode <> DIMOUTPUT_REPORT) Then
                DoOutput = 1
              Else
                DoOutput = 0
              End If
    
              If (DmisDimension.Feat2 <> "") Then
                temp_STR = DmisCommand.TypeDescription
                ID = DmisDimension.ID + "=" + right(temp_STR, len(temp_STR) - instr(1, temp_STR, " ")) + " from " + _
                  DmisDimension.Feat1 + " to " + DmisDimension.Feat2
              Else
                temp_STR = DmisCommand.TypeDescription
                ID = DmisDimension.ID + "=" + right(temp_STR, len(temp_STR) - instr(1, temp_STR, " ")) + " of " + _
                  DmisDimension.Feat1
              End If
    
              If (DmisCommand.Type = DIMENSION_TRUE_START_POSITION) Then
                State = 2
              elseif (DmisCommand.Type = DIMENSION_START_LOCATION) Then
                State = 2
              End If
    
              If (DoOutput = 1) And (State = 1) Then
                PrintLine(fNum)
                ClearRecord
                elType = DmisCommand.TypeDescription
                elName = ID
                elValueType = DmisDimension.AxisLetter
                elNom = DmisDimension.Nominal
                elAct = DmisDimension.Measured
                elDev = DmisDimension.Deviation
                elMtol = -DmisDimension.Minus
                elPtol = DmisDimension.Plus
                elOutTol = DmisDimension.OutTol
    
             ...
    
    


    By casting the DmisCommand to the right subclass (DimensionCommand), you get direct access to the internal data instead of picking out things with GetText(). Note that you first must check that the command really is a dimension command (with .IsDimension)!

    The same technique can be used for any other subclass that has a .IsXxxxx function in the main class. From the type library:

    
      ICommand = dispinterface
        property IsLoadMachine: WordBool dispid 68;
        property IsDimInfo: WordBool dispid 66;
        property IsOptMotion: WordBool dispid 44;
        property IsDCCFeature: WordBool dispid 74;
        property IsDimFormat: WordBool dispid 64;
        property IsLoadProbe: WordBool dispid 62;
        property IsFeature: WordBool dispid 15;
        property IsAlignment: WordBool dispid 14;
        property IsTraceField: WordBool dispid 58;
        property IsFileIOCommand: WordBool dispid 48;
        property IsActiveTip: WordBool dispid 60;
        property IsStatistic: WordBool dispid 56;
        property IsComment: WordBool dispid 54;
        property IsArrayIndex: WordBool dispid 46;
        property IsScan: WordBool dispid 70;
        property IsConstructedFeature: WordBool dispid 73;
        property IsHit: WordBool dispid 71;
        property IsMeasuredFeature: WordBool dispid 72;
        property IsDisplayMetaFile: WordBool dispid 52;
        property IsTempComp: WordBool dispid 50;
        property IsFCFCommand: WordBool dispid 130;
        property IsToolkitCommand: WordBool dispid 116;
        property IsAttach: WordBool dispid 36;
        property IsLeapfrog: WordBool dispid 42;
        property IsExternalCommand: WordBool dispid 38;
        property IsBasicScan: WordBool dispid 16;
        property IsOptionProbe: WordBool dispid 40;
        property IsCalibration: WordBool dispid 34;
        property IsModal: WordBool dispid 19;
        property IsMove: WordBool dispid 20;
        property IsFlowControl: WordBool dispid 18;
        property IsDimension: WordBool dispid 17;
      end;
    
    
Reply
  • cmd.GetText is a bad choice for determining things, as it depends on the language you're running PC-DMIS in. There are lots of helper functions on the CMD class. Here's a part of my FEATURE_EXPORT.BAS script:

    
      For ix = 1 To DmisCommands.Count
        Set DmisCommand = DmisCommands(ix)
    
        If DmisCommand.IsDimension Then
          Set DmisDimension = DmisCommand.DimensionCommand
    
          Select Case State
            Case 1 '  Normal Case
    
              If (DmisDimension.OutputMode <> DIMOUTPUT_NONE) And (DmisDimension.OutputMode <> DIMOUTPUT_REPORT) Then
                DoOutput = 1
              Else
                DoOutput = 0
              End If
    
              If (DmisDimension.Feat2 <> "") Then
                temp_STR = DmisCommand.TypeDescription
                ID = DmisDimension.ID + "=" + right(temp_STR, len(temp_STR) - instr(1, temp_STR, " ")) + " from " + _
                  DmisDimension.Feat1 + " to " + DmisDimension.Feat2
              Else
                temp_STR = DmisCommand.TypeDescription
                ID = DmisDimension.ID + "=" + right(temp_STR, len(temp_STR) - instr(1, temp_STR, " ")) + " of " + _
                  DmisDimension.Feat1
              End If
    
              If (DmisCommand.Type = DIMENSION_TRUE_START_POSITION) Then
                State = 2
              elseif (DmisCommand.Type = DIMENSION_START_LOCATION) Then
                State = 2
              End If
    
              If (DoOutput = 1) And (State = 1) Then
                PrintLine(fNum)
                ClearRecord
                elType = DmisCommand.TypeDescription
                elName = ID
                elValueType = DmisDimension.AxisLetter
                elNom = DmisDimension.Nominal
                elAct = DmisDimension.Measured
                elDev = DmisDimension.Deviation
                elMtol = -DmisDimension.Minus
                elPtol = DmisDimension.Plus
                elOutTol = DmisDimension.OutTol
    
             ...
    
    


    By casting the DmisCommand to the right subclass (DimensionCommand), you get direct access to the internal data instead of picking out things with GetText(). Note that you first must check that the command really is a dimension command (with .IsDimension)!

    The same technique can be used for any other subclass that has a .IsXxxxx function in the main class. From the type library:

    
      ICommand = dispinterface
        property IsLoadMachine: WordBool dispid 68;
        property IsDimInfo: WordBool dispid 66;
        property IsOptMotion: WordBool dispid 44;
        property IsDCCFeature: WordBool dispid 74;
        property IsDimFormat: WordBool dispid 64;
        property IsLoadProbe: WordBool dispid 62;
        property IsFeature: WordBool dispid 15;
        property IsAlignment: WordBool dispid 14;
        property IsTraceField: WordBool dispid 58;
        property IsFileIOCommand: WordBool dispid 48;
        property IsActiveTip: WordBool dispid 60;
        property IsStatistic: WordBool dispid 56;
        property IsComment: WordBool dispid 54;
        property IsArrayIndex: WordBool dispid 46;
        property IsScan: WordBool dispid 70;
        property IsConstructedFeature: WordBool dispid 73;
        property IsHit: WordBool dispid 71;
        property IsMeasuredFeature: WordBool dispid 72;
        property IsDisplayMetaFile: WordBool dispid 52;
        property IsTempComp: WordBool dispid 50;
        property IsFCFCommand: WordBool dispid 130;
        property IsToolkitCommand: WordBool dispid 116;
        property IsAttach: WordBool dispid 36;
        property IsLeapfrog: WordBool dispid 42;
        property IsExternalCommand: WordBool dispid 38;
        property IsBasicScan: WordBool dispid 16;
        property IsOptionProbe: WordBool dispid 40;
        property IsCalibration: WordBool dispid 34;
        property IsModal: WordBool dispid 19;
        property IsMove: WordBool dispid 20;
        property IsFlowControl: WordBool dispid 18;
        property IsDimension: WordBool dispid 17;
      end;
    
    
Children
No Data