hexagon logo

my solution to .CSV output

Since it has come up a few times I thought I would share my solution to outputting data to a .csv file. I originally wrote this in VB express but I have converted it and tested it in 3.7's basic script editor and it works.

The output will be formatted as such: Dimension name, feature name, measured axis, nominal, + tolerance, - tolerance, measurement.

LOC1,LIN1,Y,-0.415,0.5,0.5,-0.40984622932167

Any other work that I need to do with the data I do in Excel after I import the file.

The data will output to the c:\ in a file named PCD Output.csv but with a little tweaking you can change this as you like.

I have done a lot more with this in VBE, but as far as the basics go it get's the job done.


There is a function call in the program but that makes it too long for a single post so you will need to get that from the next post.
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Sub main[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      'Delare variable for file name to write to[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim strFileName As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      'connect to PCD program[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim ObjApp As Object[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim ObjPP As Object[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim ObjCmds As Object[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim ObjCmd As Object[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim ObjPart As Object[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim lngNumCmds As Long[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Set ObjApp = CreateObject("PCDLRN.Application")[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Set ObjPart = ObjApp.ActivePartProgram[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Set ObjCmds = ObjPart.Commands[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      set lngNumCmds = ObjCmds.Count[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      'Declare variables used for gather output info[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimID As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimFeature As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimType As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimNominal As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimUTol As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimLTol As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrDimMeasure As String[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      'Declare variable for creating CSV text like[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Dim StrOutputLine As String[/COLOR][/SIZE]
 
[SIZE=2][COLOR=#0000ff]              'Build and assign file name[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      strFileName = "C:\PCD output.txt"[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Open strFileName For Output As #1[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      For Each ObjCmd In ObjCmds[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]          If ObjCmd.IsDimension Then[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              If Not (ObjCmd.DimensionCommand.IsLocationAxis Or ObjCmd.DimensionCommand.IsTruePosAxis) Then[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  StrDimID = ObjCmd.DimensionCommand.ID[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  StrDimFeature = ObjCmd.DimensionCommand.Feat1[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              End If[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              StrDimType = FncCmdType(ObjCmd.Type)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              StrDimNominal = CStr(ObjCmd.DimensionCommand.Nominal)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              StrDimUTol = CStr(ObjCmd.DimensionCommand.Plus)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              StrDimLTol = CStr(ObjCmd.DimensionCommand.Minus)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              If StrDimType <> "TPDM" Then[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  StrDimMeasure = CStr(ObjCmd.DimensionCommand.Measured)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              Else[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  StrDimMeasure = CStr(ObjCmd.DimensionCommand.Deviation)[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              End If[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              If Not (StrDimType = "Start_Loc" Or StrDimType = "Start_TP") Then[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  StrOutputLine = StrDimID + "," + StrDimFeature + "," + StrDimType + "," + StrDimNominal + "," + StrDimUTol + "," + StrDimLTol + "," + StrDimMeasure[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]                  print #1, StrOutputLine[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]              End If[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]          End If[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Next[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      Close #1[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]      MsgBox("File save complete")[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]End Sub[/COLOR][/SIZE]
[/COLOR][/SIZE]
Parents
  • Brian, I tried your suggestion and this is what happened.

    DIM LOC1= TRUE POSITION OF CIRCLE CIR1 UNITS=MM ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=REPORT FIT TO DATUMS=ON DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
    AX MEAS NOMINAL +TOL -TOL BONUS DEV OUTTOL
    X 203.0589 203.0000 0.0589
    Y 25.3906 25.4000 -0.0094
    DF 25.4062 25.4000 0.0100 0.0100 0.0038 0.0062 0.0000
    TP MMC 0.0500 0.0038 0.1194 0.0656
    END OF DIMENSION LOC1

    DIM LOC2= TRUE POSITION OF CIRCLE CIR2 UNITS=MM ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=REPORT FIT TO DATUMS=ON DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
    AX MEAS NOMINAL +TOL -TOL BONUS DEV OUTTOL
    X 266.5421 266.5000 0.0421
    Y 76.1238 76.2000 -0.0762
    DF 19.0557 19.0500 0.0100 0.0100 0.0043 0.0057 0.0000
    TP MMC 0.0500 0.0043 0.1742 0.1198
    END OF DIMENSION LOC2

    LOC1 AX:X, 203.000000, 0.000000, 0.000000, 0.000000, 203.058945, 0.058945, 0.000000, 0.000000
    LOC1 AX:Y, 25.400000, 0.000000, 0.000000, 0.000000, 25.390598, -0.009402, 0.000000, 0.000000
    LOC1 AXSmileyF, 25.400000, 0.010000, 0.010000, 0.000000, 25.406205, 0.006205, 0.000000, 0.000000
    LOC1 AX:TP MOD: RFS-RFS, 0.000000, 0.050000, 0.000000, 0.000000, 0.000000, 0.119380, -9.062978, 0.065585

    LOC2 AX:X, 266.500000, 0.000000, 0.000000, 0.000000, 266.542070, 0.042070, 0.000000, 0.000000
    LOC2 AX:Y, 76.200000, 0.000000, 0.000000, 0.000000, 76.123756, -0.076244, 0.000000, 0.000000
    LOC2 AXSmileyF, 19.050000, 0.010000, 0.010000, 0.000000, 19.055651, 0.005651, 0.000000, 0.000000
    LOC2 AX:TP MOD: RFS-RFS, 0.000000, 0.050000, 0.000000, 0.000000, 0.000000, 0.174161, -61.110821, 0.119812

    Please explain what the red area means.

    Thank you in advance.
Reply
  • Brian, I tried your suggestion and this is what happened.

    DIM LOC1= TRUE POSITION OF CIRCLE CIR1 UNITS=MM ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=REPORT FIT TO DATUMS=ON DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
    AX MEAS NOMINAL +TOL -TOL BONUS DEV OUTTOL
    X 203.0589 203.0000 0.0589
    Y 25.3906 25.4000 -0.0094
    DF 25.4062 25.4000 0.0100 0.0100 0.0038 0.0062 0.0000
    TP MMC 0.0500 0.0038 0.1194 0.0656
    END OF DIMENSION LOC1

    DIM LOC2= TRUE POSITION OF CIRCLE CIR2 UNITS=MM ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=REPORT FIT TO DATUMS=ON DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
    AX MEAS NOMINAL +TOL -TOL BONUS DEV OUTTOL
    X 266.5421 266.5000 0.0421
    Y 76.1238 76.2000 -0.0762
    DF 19.0557 19.0500 0.0100 0.0100 0.0043 0.0057 0.0000
    TP MMC 0.0500 0.0043 0.1742 0.1198
    END OF DIMENSION LOC2

    LOC1 AX:X, 203.000000, 0.000000, 0.000000, 0.000000, 203.058945, 0.058945, 0.000000, 0.000000
    LOC1 AX:Y, 25.400000, 0.000000, 0.000000, 0.000000, 25.390598, -0.009402, 0.000000, 0.000000
    LOC1 AXSmileyF, 25.400000, 0.010000, 0.010000, 0.000000, 25.406205, 0.006205, 0.000000, 0.000000
    LOC1 AX:TP MOD: RFS-RFS, 0.000000, 0.050000, 0.000000, 0.000000, 0.000000, 0.119380, -9.062978, 0.065585

    LOC2 AX:X, 266.500000, 0.000000, 0.000000, 0.000000, 266.542070, 0.042070, 0.000000, 0.000000
    LOC2 AX:Y, 76.200000, 0.000000, 0.000000, 0.000000, 76.123756, -0.076244, 0.000000, 0.000000
    LOC2 AXSmileyF, 19.050000, 0.010000, 0.010000, 0.000000, 19.055651, 0.005651, 0.000000, 0.000000
    LOC2 AX:TP MOD: RFS-RFS, 0.000000, 0.050000, 0.000000, 0.000000, 0.000000, 0.174161, -61.110821, 0.119812

    Please explain what the red area means.

    Thank you in advance.
Children
No Data