Your Products have been synced, click here to refresh
Don't forget to share your code/sources as it WILL help others.
'************************************************************ ' Author: Kp61dude! ' Date: 6/21/2017 ' Desc: Using PCD template "TEMPLATE-AUTOMATED_A_20170613.PRG", pulling measured data to CSV. Using VB.NET '************************************************************ Public Class Form1 Private Sub CSV_Out_Click(sender As Object, e As EventArgs) Dim app As PCDLRN.Application 'PCDLRN.Application Dim cmds As Object 'PCDLRN.Commands Dim cmd As PCDLRN.Command 'PCDLRN.Command Dim part As PCDLRN.PartProgram 'PCDLRN.PartProgram Dim s As String = "" 'string to hold dimensions ID Dim r As Integer = 1 'row app = GetObject("", "PCDLRN.Application.10.1") 'Using PCD version 2015.1, change to yours or if one PCD version installed use "PCDLRN.Application" app.Visible = True part = app.ActivePartProgram cmds = part.Commands 'Set up the progress bar Dim nCommands As String = part.Commands.Count.ToString ProgressBar1.Minimum = 0 If nCommands <> "" Then Dim result As Boolean = Int32.TryParse(nCommands, nCommands) If result Then ProgressBar1.Maximum = nCommands Else ProgressBar1.Maximum = 100 End If End If 'Pulled PCD variables. For Header build. Dim serNum, woNum, pNumber, pRev, pcdDate, pcdTime, inCSV As String Dim pcdFilepath As String = part.GetVariableValue("FILEPATH").StringValue 'If for whatever reason variable is empty save elsewhere. If pcdFilepath Is "" Then pcdFilepath = "C:\Users\Public\Documents\WAI\PC-DMIS\2015.1\Output2CSV.CSV" End If 'CSV starage location Dim dotPosition As Integer = pcdFilepath.LastIndexOf(".") Dim csvFile As String = pcdFilepath.Substring(0, dotPosition) & ".CSV" 'Open CSV for writing Dim outFile As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(csvFile, False) 'Loop counter Dim c As Integer = 0 'Scan thru all variables in PCD program and write to CVS file. For Each cmd In cmds If cmd.TypeDescription = "Assignment" Then Dim assignName As Object = cmd.GetText(PCDLRN.ENUM_FIELD_TYPES.DEST_EXPR, 0) Select Case assignName Case "SERIAL" serNum = part.GetVariableValue(assignName).StringValue serNum = serNum.Substring(serNum.LastIndexOf("-") + 1) If serNum <> "" Then serNum = Convert.ToDouble(serNum) End If outFile.WriteLine("Serial Number:," & serNum) Case "WO" woNum = part.GetVariableValue(assignName).StringValue outFile.WriteLine("Work Order:," & woNum) Case "PART" pNumber = part.GetVariableValue(assignName).StringValue outFile.WriteLine("Part Number:," & pNumber) Case "REV" If c = 36 Then 'pull second instance of "REV" pRev = part.GetVariableValue(assignName).StringValue outFile.WriteLine("Part Revision:," & pRev) End If Case "SYSTEM_DATE" pcdDate = part.GetVariableValue(assignName).StringValue outFile.WriteLine("Date:," & pcdDate) Case "SYSTEM_TIME" pcdTime = part.GetVariableValue(assignName).StringValue outFile.WriteLine("Time:," & pcdTime) Case "CSV_FILEPATH" inCSV = part.GetVariableValue(assignName).StringValue End Select End If If pcdDate <> "" Then outFile.WriteLine(",") outFile.WriteLine(",") outFile.WriteLine(",") outFile.WriteLine("Dimension, Feature, Axis, Segment, Nom, Meas, UTOL, LTOL") End If pcdDate = "" 'Pull dimension data from PCD program. If cmd.ID <> "" Then s = cmd.ID 'capture the name of the dimension If cmd.IsDimension Then ' if the command is a dimension If cmd.DimensionCommand.AxisLetter <> "" Then 'if there is an axis letter Dim aXL As String = cmd.DimensionCommand.AxisLetter Dim Nom As Double = Math.Round(cmd.DimensionCommand.NOMINAL, 4) Dim Meas As Double = Math.Round(cmd.DimensionCommand.Measured, 5) Dim UTOL As Double = Math.Round(cmd.DimensionCommand.Plus, 5) Dim LTOL As Double = Math.Round(cmd.DimensionCommand.Minus, 5) outFile.WriteLine(s & ",," & aXL & ",," & Nom & "," & Meas & "," & UTOL & "," & LTOL) End If 'if cmd.DimensionCommand.Axisletter End If 'if cmd.IsDimenion c = c + 1 ProgressBar1.Increment(1) Next cmd outFile.Close() Console.WriteLine(My.Computer.FileSystem.ReadAllText(csvFile)) releaseObject(app) releaseObject(cmds) releaseObject(part) 'Move file to PCD variable value. If Dir("Filename Here") <> "" Then 'if file exists on network If inCSV <> "" Then Dim destNetFile As String = inCSV & csvFile.Substring(csvFile.LastIndexOf("\") + 1) My.Computer.FileSystem.MoveFile(csvFile, destNetFile, overwrite:=True) End If End If ProgressBar1.Value = nCommands - 1 End Sub Private Sub releaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Visible = True CSV_Out_Click(Nothing, Nothing) Me.Close() End Sub End Class
You're missing all FCF dimensions, as they are not .IsDimension (obviously!), but maybe you knew that already?
Edit: And probably missing the new SIZE, too.
© 2024 Hexagon AB and/or its subsidiaries. | Privacy Policy | Cloud Services Agreement |