hexagon logo

Getting the original name of items in a set

A little snippet to extract the actual name of feature number X in a set...

Call:

ARG1 = string, the name of the set containing the features
ARG2 = integer, the number of the feature you want to know the name of
ARG3 = string, the name of the variable that should get the result

SCN1       =FEAT/SET,CARTESIAN
            THEO/<157.311,48.099,-3.143>,<0,0,1>
            ACTL/<157.311,48.099,-3.143>,<0,0,1>
            CONSTR/SET,BASIC,PNT2,PNT3,PNT4,PNT5,PNT6,PNT7,PNT8,,

            ASSIGN/V1="empty string"

CS1        =SCRIPT/FILENAME= F:\PUBLIC\DOCUMENTS\PC-DMIS\BASIC\SETNAMES.BAS
            FUNCTION/Main,SHOW=YES,ARG1="SCN1",ARG2=3,ARG3="V1",,
            STARTSCRIPT/
            ENDSCRIPT/

            COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
            V1


Script:



Option Explicit


Sub Main(Scan1ID As String, FeatNo As Integer, ResultVarName As String)


Dim app As Object

Dim part As Object

Dim cmds As Object

Dim cmd1 As Object

Dim Scan1Hits As Object

Dim ResultVar As Object

Dim FeatName As String


Set app = CreateObject("PCDLRN.Application")

Set part = app.ActivePartProgram

Set cmds = part.Commands

Set cmd1 = cmds.Item(Scan1ID)

Set Scan1Hits = cmd1.FeatureCommand


FeatName= Scan1Hits.GetInputID(FeatNo)


Set ResultVar = part.GetVariableValue(ResultVarName)

ResultVar.StringValue = FeatName

part.SetVariableValue ResultVarName, ResultVar


End Sub


[/CODE]


Result:

V1 will have the value "PNT4" (which is the third feature in the set)
  • And to get the indices of MAX and MIN out of a FCF profile you use the following:

    FCFPROF1 =SURFACE PROFILE : SCN1
                FEATCTRLFRAME/SHOWPARAMS=YES,SHOWEXPANDED=YES
                CADGRAPH=OFF,REPORTGRAPH=OFF,TEXT=FORM,MULT=10.00,ARROWDENSITY=100,OUTPUT=BOTH,UNITS=MM
                COMPOSITE=NO,
                VECTOR_MIN_MAX,ITERATEANDREPIERCECAD=NO
                STANDARDTYPE=ASME_Y14_5
                  PRIMARY DIMENSION/PROFILE OF SURFACE,0.05,<UZ>,<UTol>,<dat>,<dat>,<dat>
                  NOTE/FCFPROF1
                FEATURES/SCN1,,
    
                ASSIGN/V_MAX=GETTEXT("INDEX_END", 0, {FCFPROF1})+1
                ASSIGN/V_MIN=GETTEXT("INDEX_START", 0, {FCFPROF1})+1
    
                ASSIGN/V_MAXNAME=""
    CS1        =SCRIPT/FILENAME= F:\PUBLIC\DOCUMENTS\PC-DMIS\BASIC\SETNAMES.BAS
                FUNCTION/Main,SHOW=YES,ARG1="SCN1",ARG2=V_MAX,ARG3="V_MAXNAME",,
                STARTSCRIPT/
                ENDSCRIPT/
    
                ASSIGN/V_MINNAME=""
    CS1        =SCRIPT/FILENAME= F:\PUBLIC\DOCUMENTS\PC-DMIS\BASIC\SETNAMES.BAS
                FUNCTION/Main,SHOW=YES,ARG1="SCN1",ARG2=V_MIN,ARG3="V_MINNAME",,
                STARTSCRIPT/
                ENDSCRIPT/
    
                COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                "Max at " + V_MAXNAME
                "Min at " + V_MINNAME
    


    Result:





    and with slightly different values in PNT2 - PNT8:

  • Or using get command & gettext

    
    PNTA       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<0.07,0,2.48>,<1,0,0>
                ACTL/<0.07,0,2.48>,<1,0,0>
                TARG/<0.07,0,2.48>,<1,0,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=50.8
                SHOW HITS=NO
    PNTB       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<0.07,0,2.48>,<1,0,0>
                ACTL/<0.07,0,2.48>,<1,0,0>
                TARG/<0.07,0,2.48>,<1,0,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=50.8
                SHOW HITS=NO
    PNTC       =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<0.07,0,2.48>,<1,0,0>
                ACTL/<0.07,0,2.48>,<1,0,0>
                TARG/<0.07,0,2.48>,<1,0,0>
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=NO,DISTANCE=50.8
                SHOW HITS=NO
    SCN1       =FEAT/SET,CARTESIAN
                THEO/<0.07,0,2.48>,<0,-1,0>
                ACTL/<0.07,0,2.48>,<0,0,1>
                CONSTR/SET,BASIC,PNTA,PNTB,PNTC,,
    
                ASSIGN/V1=GETCOMMAND("Constructed Set","UP",1)
    
                ASSIGN/REQUIRED_ITEM_INDEX=2
    
                ASSIGN/ANSWER=GETTEXT("Reference ID",REQUIRED_ITEM_INDEX,V1)
    
                COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
                ANSWER
    
    
  • Nice! Who could have guessed that "Reference ID" were the 'hit' names...
  • No guessing involved - right click in edit window and 'Change pop up display' to 'Data Type Information'.

    Then hover the mouse pointer over a field to reveal what it is.
  • Doh! How could I not think of that? I'll blame it on my search for MAX and MIN in the Report textual analysis, I don't think there's a way to find those (INDEX_START, INDEX_END) with the popup?