CAM 模拟器






4.95/5 (12投票s)
2002 年 2 月 20 日

180005

8068
该程序展示了 CN 机器的工作原理。
引言
经过 6 个月的努力,我的第一个 MFC 程序终于发布了。这个程序是一个 CAM 模拟器。我不是软件工程师,请原谅我的错误。如果您有任何问题,请告诉我。我相信您会发现它们。一开始,读取数据文件对我来说是个大问题,所以这里是实现方法。我需要读取 CNC 机器生成的 *.txt 文件。例如:M X25 Y23 Z25 SPEED1500。这是用于设置机器的一个数据块。这是机器用来在工作空间内的坐标上移动的一种语言。因此,在此实现中,您可以读取整个文档,将数据块拆分为必要的 X、Y、Z 和 SPEED 值。这是我的第一次上传,关于这个程序我还有很多话要说,我会尽快改进这个简短的评论。
void CProgramaDoc::OnFileOpen() { CString fichero="archivo de Código G",temp; CFileDialog archivos(true,NULL,fichero,OFN_ALLOWMULTISELECT, "Codigo G (*.tap)|*.tap|Codigo G (*.act)|*.act||",NULL); if (archivos.DoModal() == FALSE) return; fichero=archivos.GetPathName(); CFile cfFile (fichero, CFile::modeNoTruncate | CFile::modeRead); CArchive ar (&cfFile, CArchive::load); if(!ar.ReadString(temp)) return; nl=0; do { if(temp.GetLength() == 0) continue; strcpy(linea[nl],temp); nl++; }while(ar.ReadString(temp)); // SEPARANDO COORDENADAS int i,j,k,d,sp; char aux[30]; for ( i=0; i<5000; i++) { x[i] = y[i] = z[i] = 0; } kn=0; for (i=0;i<nl;i++) { if (linea[i][0]=='S'); { Inicio=1; } if (linea[i][0]=='M'); { sp = 0; k = 0; d = strlen(linea[i]); for (j=0;j<d;j++) { if ((linea[i][j]=='-')|(isdigit(linea[i][j]))| (linea[i][j]=='.')) { aux[k] = linea[i][j]; k++; continue; } if (linea[i][j]==' ') { sp++; if (sp==1) continue; aux[k]=0; if (sp==2) if ((aux[0]=='-')|(isdigit(aux[0]))|(aux[0]=='.')) x[kn] = atof(aux); else x[kn] = x[kn-1]; if (sp==3) if ((aux[0]=='-')|(isdigit(aux[0]))|(aux[0]=='.')) y[kn] = atof(aux); else y[kn] = y[kn-1]; if (sp==4) if ((aux[0]=='-')|(isdigit(aux[0]))|(aux[0]=='.')) z[kn] = atof(aux); else z[kn] = z[kn-1]; k = 0; continue; } } kn++; j = d; } } presentar = 1; // VERIFICANDO TORNO O FRESA sumz = 0; for (i=0; i<nl; i++) { sumz += abs(z[i]); } if (sumz == 0) torno = 1; else fresa = 1; UpdateAllViews(NULL); }