![]() |
【转帖】[arx]c++编译无错 cad非正常退出(附图)
[arx]c++编译无错 cad非正常退出(附图)
[arx]c++编译无错 cad非正常退出(附图) 我的程序如下: ads_point pt; int nodenumcount; //定义节点数,即最大的节点编号数值 acedgetint("请输入多边形顶点数:",&nodenumcount); if(acedgetpoint(null,"\n请选择起始点:",pt)==rtnorm) { xpt[0].format("%g",pt[x]); ypt[0].format("%g",pt[y]); acutprintf("\n起始点坐标为:%s,%s",xpt[0],ypt[0]); } xco[0]=atof(xpt[0]); yco[0]=atof(ypt[0]); for(int i=0;i<nodenumcount;i++) { if(acedgetpoint(null,"\n拾取下一点:",pt)==rtnorm) { xpt[i+1].format("%g",pt[x]); ypt[i+1].format("%g",pt[y]); acutprintf("\n该点坐标为:%s,%s",xpt[i+1],ypt[i+1]); } xco[i+1]=atof(xpt[i+1]); yco[i+1]=atof(ypt[i+1]); //pick点,连续画直线 acdbblocktablerecord *pblktablercd =new acdbblocktablerecord();//创建块表记录 //以写方式得到当前块表的指针 acdbblocktable *pblktable=null; acdbhostapplicationservices()->workingdatabase() ->getsymboltable(pblktable, acdb::kforwrite); //将新的块表记录加入块表中,并获得块表记录的id acdbobjectid id; pblktable->add(id, pblktablercd); pblktable->close(); //生成直线 acgepoint3d startpt(xco[i],yco[i],0.0);//定义直线起点 acgepoint3d endpt(xco[i+1],yco[i+1],0.0);//定义直线终点 acdbline *pline=new acdbline(startpt,endpt); acdbblocktable *pblktable2=null; acdbhostapplicationservices()->workingdatabase() ->getsymboltable(pblktable2, acdb::kforread); pblktable2->getat(acdb_model_space, pblktablercd, acdb::kforwrite); pblktable2->close(); acdbobjectid lineid; pblktablercd->appendacdbentity(lineid, pline); // pline->setlayer("layer_frame");//设置创建轮廓线的层为"layer_frame" pblktablercd->close(); pline->close(); } 如上是随点画n边形的一段代码,能画n边形,但是退出时会连续弹出两个对话框, 如下:(肯定是上面这段代码的问题,之前也有朋友问过类似的问题,望高手指教) 现在应该搞定了吧^_^ |
所有的时间均为北京时间。 现在的时间是 05:28 PM. |