【VisionPro脚本】将结果数据保存到Excel 摘要检测需求将特征点检测结果数据保存到CSV文件的功能。检测逻辑首先检查文件是否存在不存在则创建并写入表头。然后获取当前时间、将这些3D数据拼接成CSV格式的行数据最后追加写入到指定路径的文件中。数据包含输入输出坐标、结果状态和匹配分数等信息便于后续追溯分析//数据保存地址stringfileD:\DataLog\2.FuZhouZheng.csv;if(!File.Exists(file)){stringheader时间,输入X,输入Y,输入Z,输入RX,输入RY,输入RZ,输出X,输出Y,输出Z,输出RX,输出RY,输出RZ,输出Result,输出PMA_Score;File.WriteAllText(file,headerEnvironment.NewLine);}//输出到文件夹stringcurrentTimeDateTime.Now.ToString(yyyy-MM-dd HH:mm:ss);//输入机械手坐标doubleinput_dXthis.Inputs.dX;doubleinput_dYthis.Inputs.dY;doubleinput_dZthis.Inputs.dZ;doubleinput_dRxthis.Inputs.dRx;doubleinput_dRythis.Inputs.dRy;doubleinput_dRzthis.Inputs.dRz;//输出3D坐标doubleoutput_Xthis.Outputs.X;doubleoutput_Ythis.Outputs.Y;doubleoutput_Zthis.Outputs.Z;doubleoutput_RXthis.Outputs.RX;doubleoutput_RYthis.Outputs.RY;doubleoutput_RZthis.Outputs.RZ;doubleoutput_Resultthis.Outputs.Result;doubleoutput_PMA_Scorethis.Tools.Cog3DPatMaxTool1.Results[0].Score;stringlinecurrentTime,input_dX,input_dY,input_dZ,input_dRx,input_dRy,input_dRz,output_X,output_Y,output_Z,output_RX,output_RY,output_RZ,output_Result,output_PMA_Score;using(StreamWriterswnewStreamWriter(file,true)){sw.WriteLine(line);}生成函数并以日期为文件名/// summary/// 保存检测数据到CSV文件自动按当天日期生成csv文件名/// /summary/// param namepixData像素坐标/像素测量值字符串类型/param/// param namephysicalData物理尺寸/实际测量值字符串类型/param/// param nameresult产品检测结果true合格false不合格/parampublicvoidsaveData(stringpixData,stringphysicalData,boolresult){//以日期为文件名称stringfolderD:\VisionNow\DataFile;//文件夹stringcurrentDayDateTime.Now.ToString(yyyy-MM-dd);//文件名stringfileNamePath.Combine(folder,currentDay.csv);//判断文件不存在新建文件写入表头列名//如果电脑没有 D:\VisionNow\DataFile 文件夹代码直接报错不会自动创建文件夹if(!File.Exists(fileName)){stringheader时间,像素数据,物理数据结果;File.WriteAllText(fileName,headerEnvironment.NewLine);}//当前时间stringcurrentTimeDateTime.Now.ToString(yyyy-MM-dd HH:mm:ss);//每次追加一行的数据stringlinecurrentTime,pixData,physicalData,result;//追加写入 csv 文件using(StreamWriterswnewStreamWriter(fileName,true))//StreamWriter(file, true)true 追加模式不会覆盖原有数据; using自动关闭文件防止文件占用{sw.WriteLine(line);//写入一行并换行}}调用函数//保存数据saveData(ca.Results[0].PositionX.ToString(f1),realValue.ToString(f1),Convert.ToBoolean(mToolBlock.Outputs[FlowResult].Value));