STATUS NcEndOfCutFeedRateMove::generateDisplayList() { double travellength = sqrt( (mStartZ - Z) * (mStartZ - Z) + (mStartX - X) * (mStartX - X)); mCodeExecutionTime = (travellength / (F * mSpindleSpeed)) * 60; mTotalCycleTime = mTotalCycleTime + mCodeExecutionTime; Profile *gProfile = new Profile(); gProfile->type = CGAUX; gProfile->typeTool = CT00; mPartProfileList->push_back(gProfile); int n = MAX_LINEAR_SUBDIV; int no_pts=(n); //profile->P.resize(profile->no_pts); /*profile->allocate();*/ vector<NcVector> profile(no_pts); profile[0] = NcVector(mStartZ,mStartX,0); //profile->P[0][1] = mStartX; //profile->P[0][2] = 0; profile[n-1] = NcVector(Z,X,0); //profile->P[n-1][1] = X; //profile->P[n-1][2] = 0; double u = 0.0; double du = 1.0 / (double)(n-1); for(int i=0; i < n-1; i++, u+=du) { profile[i] = profile[0] * (1-u) + profile[n-1] * (u); } GLuint newlistindex = glGenLists(1); //profile->mAssociated2DDLIndexes->push_back(newlistindex); gProfile->addProfileDisplayListIndex(newlistindex); mCumulativeDLList.push_back(newlistindex); mListIndex++; mLocalIndex = mListIndex; glNewList(newlistindex, GL_COMPILE); glColor3d(0.0, 1.0, 0.0); glBegin(GL_LINE_STRIP); for(int i = 0; i < n; i++) glVertex3f(profile[i][0], profile[i][1], profile[i][2]); glEnd(); glEndList(); gProfile->setProfile(profile); return OK; }
STATUS G03::generateDisplayList() { Profile *gProfile = new Profile(); gProfile->type = CG03; gProfile->typeTool = CT01; mPartProfileList->push_back(gProfile); double cx, cy, x, y; double x2, y2; double st_angle = 0, end_angle = 0; double r; double theta, dtheta; double arc_pts[MAX_ANG_SUBDIV][2]; x2 = Z; y2 = X; int no_pts = MAX_ANG_SUBDIV; /* To be modified in future*/ /*profile->P.resize(MAX_ANG_SUBDIV);*/ //profile->allocate(); vector<NcVector> profile(no_pts); cx = mStartZ + K; cy = mStartX + I; r = sqrt((x2 - cx) * (x2 - cx) + (y2 - cy) * (y2 - cy)); x = mStartZ - cx; y = mStartX - cy; st_angle = cal_angle(x,y); x = x2 - cx; y = y2 - cy; end_angle = cal_angle(x, y); if(st_angle > end_angle) end_angle = end_angle + 360; dtheta = (end_angle - st_angle) / (double)(MAX_ANG_SUBDIV - 1); double arclengthcut = ((end_angle - st_angle) * (NC_PI / 180.0)) * r; double feed = F ; double sspeed = mSpindleSpeed; mCodeExecutionTime = ( arclengthcut / (F * mSpindleSpeed) ) * 60; mTotalCycleTime = mTotalCycleTime + mCodeExecutionTime; mHours = (int)(mTotalCycleTime / 3600); int min = mTotalCycleTime % 3600; mMinutes = (int)(min / 60); int sec = min % 60; mSeconds = sec; theta = st_angle; for(int i = 0; i < MAX_ANG_SUBDIV; theta = theta + dtheta, i++) { float x, y; x = cx + r * cos(theta * NC_PI / 180.0); y = cy + r * sin(theta * NC_PI / 180.0); arc_pts[i][0] = x; arc_pts[i][1] = y; profile[i] = NcVector(x,y,0); /*profile->P[i][1] = y; profile->P[i][2] = 0;*/ } GLuint newlistindex = glGenLists(1); /*profile->mAssociated2DDLIndexes->push_back(newlistindex);*/ gProfile->addProfileDisplayListIndex(newlistindex); mCumulativeDLList.push_back(newlistindex); mListIndex++; mLocalIndex = mListIndex; glNewList(newlistindex, GL_COMPILE); glColor3d(0,1,0); for(int i = 1; i < MAX_ANG_SUBDIV; i++) { glBegin(GL_LINES); glVertex3f(arc_pts[i-1][0],arc_pts[i-1][1],0); glVertex3f(arc_pts[i][0],arc_pts[i][1],0); glEnd(); } glEndList(); gProfile->setProfile(profile); return OK; }
STATUS G01::generateDisplayList() { //time in seconds taking units as turning length = mm, feedrate = mm/rev //spindle speed = rev / min double turninglength = fabs(fabs(Z) - fabs(mStartZ)); double feed = F ; double sspeed = mSpindleSpeed; mCodeExecutionTime = ( turninglength / (F * mSpindleSpeed) ) * 60; mTotalCycleTime = mTotalCycleTime + mCodeExecutionTime; mHours = (int)(mTotalCycleTime / 3600); int min = mTotalCycleTime % 3600; mMinutes = (int)(min / 60); int sec = min % 60; mSeconds = sec; Profile *gProfile = new Profile(); gProfile->type = CG01; if(mIsAuxillaryPath == true) gProfile->typeTool = CT00; else if(mIsAuxillaryPath == false) gProfile->typeTool = CT01; mPartProfileList->push_back(gProfile); int n = MAX_LINEAR_SUBDIV; vector<NcVector> profile(n); /*profile->P.resize(n); profile->no_pts = n;*/ //profile->allocate(); profile[0]= NcVector(mStartZ,mStartX,0); /*profile->P[0][1] = mStartX; profile->P[0][2] = 0;*/ profile[n-1]=NcVector(Z,X,0); /*profile->P[n-1][1] = X; profile->P[n-1][2] = 0;*/ double u = 0.0; double du = 1.0 / (double)(n-1); for(int i=0; i < n-1; i++, u+=du) { profile[i] = profile[0] * (1-u) + profile[n-1] * (u); } GLuint newlistindex = glGenLists(1); //profile->mAssociated2DDLIndexes->push_back(newlistindex); gProfile->addProfileDisplayListIndex(newlistindex); mCumulativeDLList.push_back(newlistindex); mListIndex++; mLocalIndex = mListIndex; glNewList(newlistindex, GL_COMPILE); glColor3d(0.0, 1.0, 0.0); glBegin(GL_LINE_STRIP); for(int i = 0; i < n; i++) glVertex3f(profile[i][0], profile[i][1], profile[i][2]); glEnd(); glEndList(); gProfile->setProfile(profile); return OK; }