[求助]Vc6.0+AutoCAD2002的错误
<P>看看这个错误是怎么回事?在AutoCAD运行该命令时出现,第一次不出现,等创建新文件,再次运行这个命令时出现,或者删除当前绘图,再次运行这个命令时出现,可能是什么原因呢?请大家指教,谢谢。</P> <P>情况太多了,请你把代码贴上来</P> 文件有点大,3M多,传不上来。 <P>double x=0,y=0,z=0,pI=0,pJ=0,R=0;<BR> int indexx=0,indexy=0,indexz=0,indexC={0,0,0,0,0};<BR> int lightx=0,lighty=0,lightz=0,lightC={0,0,0,0,0};<BR> CString m_data; <BR> m_data=(CString)Path+"/"+m_filetitle+"_data.dat";<BR> ifstream FileIn(m_str, ios::in);<BR>// ofstream FileOut(m_data, ios::out);</P><P> while(!FileIn.eof())<BR> { <BR> FileIn.getline(line,256,'\n'); // 读出文件的一行数据<BR> for(int i=0;i<=strlen(line);i++)// 如果此行中有'X','Y','Z',则分别标记各自的light,并返回它们的位置index<BR> {<BR> if(line=='X')<BR> {<BR> indexx=i;<BR> lightx=1; <BR> } <BR> if(line=='Y')<BR> {<BR> indexy=i;<BR> if(indexy!=0)<BR> if((line=='P')||(line=='T'))<BR> lighty=0;<BR> else<BR> lighty=1;<BR> else<BR> lighty=1;<BR> }<BR> if(line=='Z')<BR> {<BR> indexz=i;<BR> lightz=1;<BR> }<BR> if((line=='G')&&((line=='2')||(line=='2')))<BR> {<BR> indexC=i;<BR> lightC=1;<BR> }<BR> if((line=='G')&&((line=='3')||(line=='3')))<BR> {<BR> indexC=i;<BR> lightC=1;<BR> }<BR> if(line=='I')<BR> {<BR> indexC=i;<BR> lightC=1;<BR> }<BR> if(line=='J')<BR> {<BR> indexC=i;<BR> lightC=1;<BR> }<BR> if(line=='R')<BR> {<BR> indexC=i;<BR> lightC=1;<BR> } <BR> } // 如果此行中有'X','Y','Z',则分别标记各自的light,并返回它们的位置index<BR> if(lightx==1) // 如果标记'X','Y','Z'的灯亮,则分别取出各自的数值<BR> {<BR> for(int countx=indexx+1;countx<indexx+11;countx++)<BR> {<BR> if(('0'<=line<='9')||(line=='.')||(line=='-'))<BR> tempchar=line; <BR> }<BR> x=atof(tempchar);<BR> countx=0;<BR> }<BR> if(lighty==1)<BR> {<BR> for(int county=indexy+1;county<indexy+11;county++)<BR> {<BR> if(('0'<=line<='9')||(line=='.')||(line=='-'))<BR> tempchar=line; <BR> }<BR> y=atof(tempchar);<BR> county=0;<BR> }<BR> if(lightz==1)<BR> {<BR> for(int countz=indexz+1;countz<indexz+11;countz++)<BR> {<BR> if(('0'<=line<='9')||(line=='.')||(line=='-'))<BR> tempchar=line;<BR> }<BR> z=atof(tempchar);<BR> countz=0;<BR> } // 如果标记'X','Y','Z'的灯亮,则分别取出各自的数值<BR> if(lightC==1)<BR> {<BR> for(int countI=indexC+1;countI<indexC+11;countI++)<BR> {<BR> if(('0'<=line<='9')||(line=='.')||(line=='-'))<BR> tempchar-1]=line;<BR> }<BR> pI=atof(tempchar);<BR> countI=0;<BR> }<BR> if(lightC==1)<BR> {<BR> for(int countJ=indexC+1;countJ<indexC+11;countJ++)<BR> {<BR> if(('0'<=line<='9')||(line=='.')||(line=='-'))<BR> tempchar-1]=line;<BR> }<BR> pJ=atof(tempchar);<BR> countJ=0;<BR> }<BR> if(lightC==1)<BR> {<BR> for(int countR=indexC+1;countR<indexC+11;countR++)<BR> {<BR> if(('0'<=line<='9')||(line=='.'))<BR> tempchar-1]=line;<BR> }<BR> R=atof(tempchar);<BR> countR=0;<BR> }<BR> if((lightx==1)||(lighty==1)||(lightz==1))<BR> {<BR> Cpt(pts,pte);<BR> Spt(pte,x,y,z); <BR> lightx=0;<BR> lighty=0;<BR> lightz=0;<BR> indexx=0;<BR> indexy=0;<BR> indexz=0;<BR>/* if((lightC==1)||(lightC==1))<BR> {<BR> for(int i=0;i<5;i++)<BR> {<BR> lightC=0;<BR> indexC=0;<BR> }<BR> }*/<BR> if((pte!=pts)||(pte!=pts)||(pte!=pts))<BR> {<BR> if((lightC!=1)&&(lightC!=1))<BR> {<BR> CMjtClass *ln=new CMjtClass;// 产生CMjtClass类的对象<BR> AcDbLine *pLine; // 产生直线类的对象<BR> AcGePoint3d pt1,pt2;// 产生AcGePoint3d格式的点<BR> Cpt(pt1,pts); // 赋值产生的点<BR> Cpt(pt2,pte);<BR> pLine = ln->createLine(pt1,pt2); <BR> // pLine->setColorIndex(index_color<255?index_color:index_color%255); <BR> pLine->close();<BR> delete ln;<BR> }<BR> else<BR> {<BR> CMjtClass *arc=new CMjtClass;// 产生CMjtClass类的对象<BR> AcDbArc *pArc;<BR> ads_point pta1,pta2,pta0;<BR> Cpt(pta1,pts);<BR> Cpt(pta2,pte);<BR> Spt(pta0,pta1+pI,pta1+pJ,pta1);<BR> double angles,anglee,rad;<BR> angles=acutAngle(pta0,pta1);<BR> anglee=acutAngle(pta0,pta2);<BR> rad=acutDistance(pta1,pta0);<BR> AcGePoint3d ptc(pta0,pta0,pta0);<BR> if(lightC==1)<BR> {<BR> pArc = arc->createCircle(ptc,rad,angles,anglee);<BR> }<BR> else<BR> {<BR> pArc = arc->createCircle(ptc,rad,anglee,angles);<BR> }<BR> pArc->close();<BR> delete arc;<BR> for(int i=0;i<5;i++)<BR> {<BR> lightC=0;<BR> indexC=0;<BR> }<BR> } <BR> }<BR> else<BR> acutPrintf("\n 连续相同的点被忽略!");<BR> index_color++;<BR>// acedCommand(RTSTR,"zoom",RTSTR,"extent",0);<BR>/* if(((CButton *)GetDlgItem(IDC_CHECK1))->GetCheck()) <BR> FileOut<<pts<<" "<<pts<<" "<<pts<<endl;*/<BR> }<BR> }<BR> acedCommand(RTSTR,"zoom",RTSTR,"extent",0);<BR> FileIn.close(); </P> 这是处理机床数控代码以将刀具路径在AutoCAD中绘制的程序。 <P>并不是总是出现这个错误。</P>
<P>刀轨图片:</P>
<P> </P> <P>产生的刀轨图片:</P>
<P> </P> <P>敬佩阿,好像做得很好的说,要是您多学学设计模式的话,会很有帮助,</P>
<P>试着不用CRT而用Win32API或者CFile来访问文件,能在QQ上加我吗?</P> <P>谢谢,我很久不用QQ了,我的邮箱是<A href="mailto:poxiangzi@126.com" target="_blank" >poxiangzi@126.com</A>,欢迎多多交流。</P>
<P>我是机械专业,对程序设计不太懂,遇到不会的都是上网搜,让你见笑了,能告诉我设计模式是指的什么吗?CRT是什么意思,请指教,或者帮我修改一下。</P>
页:
[1]
2