hexagon logo

VB Script, Using PutText to enter an expression

I want to write a script that can modify the THEO and TARG values of a feature to be an expression, such as "1+0" or "2*VX+4". So far I can change the values to other values but if I give it an expression it always seems to evaluate it first and insert the result rather than the expression itself.

Not sure if what I want to do is possible but after scouring the forum for any examples I am sure that if it is possible someone on here will know how to do it.
Parents
  • You can use the code below to extract data from a command using the alignment you desire. It's .net, so you'll need to modify it for basic.


    Here it is in BASIC

    Sub MAIN()
    ' Post: http://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/411735-vb-script-using-puttext-To-enter-an-expression
    
    Dim PCDApp As Object
    Dim PCDPartPrograms As Object
    Dim PCDPartProgram As Object
    Dim PCDCommands As Object
    Dim cmd As Object
    Dim editWin As Object
    Dim oTHEO As Object
    
    Set PCDApp = CreateObject("PCDLRN.Application")
    Set PCDPartPrograms = PCDApp.PartPrograms
    Set PCDPartProgram = PCDApp.ActivePartProgram
    Set PCDCommands = PCDPartProgram.Commands
    Set editWin = PCDPartProgram.EditWindow
    
    Dim fcntr As Integer
    Dim FeatureList$(99999)
    Dim TX, TY, TZ, NewTX, NewTY, NewTZ, txtBlock, alignID, txtBlockTmp, MSG As String
    Dim lastChr, findTHEO, findChr, firstComma, secondComma As Integer
    
    fcntr = 0
    
    For Each cmd In PCDCommands
    If cmd.IsAlignment And cmd.ID <> "" Then
        alignID = cmd.ID
    End If
        If cmd.IsDCCFeature Or cmd.IsMeasuredFeature Then
            If cmd.Marked Then
    
                FeatureList(fcntr) = cmd.ID
    
                TX = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).X)
                TY = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).Y)
                TZ = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).Z)
    
                NewTX = TX & "+0"
                NewTY = TY & "+0"
                NewTZ = TZ & "+0"
    
                MSG = MSG & Chr(10) & Chr(10) & cmd.ID
                MSG = MSG & Chr(10) & Chr(10) & alignID
                MSG = MSG & Chr(10) & Chr(10) & "XTheo = " & TX
                MSG = MSG & Chr(10) & Chr(10) & "YTheo = " & TY
                MSG = MSG & Chr(10) & Chr(10) & "ZTheo = " & TZ
                MSG = MSG & Chr(10) & Chr(10) & "NewXTheo = " & NewTX
                MSG = MSG & Chr(10) & Chr(10) & "NewYTheo = " & NewTY
                MSG = MSG & Chr(10) & Chr(10) & "NewZTheo = " & NewTZ
    
    
                MsgBox MSG
                MSG = ""
            End If
        End If
    Next cmd
    
    Set PCDApp = Nothing
    Set PCDPartPrograms = Nothing
    Set PCDPartProgram = Nothing
    
    End Sub
Reply
  • You can use the code below to extract data from a command using the alignment you desire. It's .net, so you'll need to modify it for basic.


    Here it is in BASIC

    Sub MAIN()
    ' Post: http://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-code-samples/411735-vb-script-using-puttext-To-enter-an-expression
    
    Dim PCDApp As Object
    Dim PCDPartPrograms As Object
    Dim PCDPartProgram As Object
    Dim PCDCommands As Object
    Dim cmd As Object
    Dim editWin As Object
    Dim oTHEO As Object
    
    Set PCDApp = CreateObject("PCDLRN.Application")
    Set PCDPartPrograms = PCDApp.PartPrograms
    Set PCDPartProgram = PCDApp.ActivePartProgram
    Set PCDCommands = PCDPartProgram.Commands
    Set editWin = PCDPartProgram.EditWindow
    
    Dim fcntr As Integer
    Dim FeatureList$(99999)
    Dim TX, TY, TZ, NewTX, NewTY, NewTZ, txtBlock, alignID, txtBlockTmp, MSG As String
    Dim lastChr, findTHEO, findChr, firstComma, secondComma As Integer
    
    fcntr = 0
    
    For Each cmd In PCDCommands
    If cmd.IsAlignment And cmd.ID <> "" Then
        alignID = cmd.ID
    End If
        If cmd.IsDCCFeature Or cmd.IsMeasuredFeature Then
            If cmd.Marked Then
    
                FeatureList(fcntr) = cmd.ID
    
                TX = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).X)
                TY = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).Y)
                TZ = CStr(cmd.FeatureCommand.GetHit(1, FHITDATA_CENTROID, FDATA_TARG, FDATA_PART, alignID, PLANE_TOP).Z)
    
                NewTX = TX & "+0"
                NewTY = TY & "+0"
                NewTZ = TZ & "+0"
    
                MSG = MSG & Chr(10) & Chr(10) & cmd.ID
                MSG = MSG & Chr(10) & Chr(10) & alignID
                MSG = MSG & Chr(10) & Chr(10) & "XTheo = " & TX
                MSG = MSG & Chr(10) & Chr(10) & "YTheo = " & TY
                MSG = MSG & Chr(10) & Chr(10) & "ZTheo = " & TZ
                MSG = MSG & Chr(10) & Chr(10) & "NewXTheo = " & NewTX
                MSG = MSG & Chr(10) & Chr(10) & "NewYTheo = " & NewTY
                MSG = MSG & Chr(10) & Chr(10) & "NewZTheo = " & NewTZ
    
    
                MsgBox MSG
                MSG = ""
            End If
        End If
    Next cmd
    
    Set PCDApp = Nothing
    Set PCDPartPrograms = Nothing
    Set PCDPartProgram = Nothing
    
    End Sub
Children
No Data