请教大虾们(Objectarx)程序错误应该如何解决?
<p><strong>请教大虾们(Objectarx)程序错误应该如何解决?</strong></p><p><strong>程序如下:</strong></p><p>#include<iostream.h><br/>#include "StdAfx.h"<br/>#include "StdArx.h"<br/>#include "dbpl.h"<br/>#include "acedads.h"<br/>#include "dbents.h" <br/>#include "dbsymtb.h"<br/>#include <string.h> </p><p></p><p>// This is command 'ADDPOLYDYNAMIC'<br/>void ZffCHAP5AddPolyDynamic()<br/>{<br/> <br/> // TODO: Implement the command<br/> ads_real GetWidth() <br/> { <br/> ads_real width = 0; <br/> if (acedGetReal("\n输入线宽:", &width) == RTNORM) <br/> { <br/> return width; <br/> } <br/> else <br/> {<br/> return 0; <br/> } <br/> }</p><p> int GetColorIndex() <br/> { <br/> int colorIndex = 0; <br/> if (acedGetInt("\n输入颜色索引值(0~256):", &colorIndex) !=RTNORM) <br/> return 0; <br/> <br/> // 处理颜色索引值无效的情况 <br/> while (colorIndex < 0 || colorIndex > 256) <br/> { <br/> acedPrompt("\n输入了无效的颜色索引."); <br/> if (acedGetInt("\n输入颜色索引值(0~256):", &colorIndex) !=RTNORM) <br/> return 0; <br/> } <br/> return colorIndex; <br/> } </p><p><br/>}<br/>// This is command 'ADDPOLY'<br/>void ZffCHAP5AddPoly()<br/>{<br/> // TODO: Implement the command<br/> int colorIndex = 0; // 颜色索引值 <br/> ads_real width = 0; // 多段线的线宽 <br/> <br/> int index = 2; // 当前输入点的次数 <br/> ads_point ptStart; // 起点 <br/> <br/> // 提示用户输入起点 <br/> if (acedGetPoint(NULL, "\n输入第一点:", ptStart) != RTNORM) <br/> return; <br/> <br/> ads_point ptPrevious, ptCurrent; <br/> acdbPointSet(ptStart, ptPrevious); <br/> AcDbObjectId polyId; // 多段线的ID <br/> <br/> // 输入第二点 <br/> acedInitGet(NULL, "W C O"); <br/> int rc = acedGetPoint(ptPrevious,"\n输入下一点 [宽度(W)/颜色(C)]<完成(O)>:", ptCurrent); <br/> while (rc == RTNORM || rc == RTKWORD) <br/> { <br/> if (rc == RTKWORD) // 如果用户输入了关键字 <br/> { <br/> char kword; <br/> if (acedGetInput(kword) != RTNORM) <br/> return; <br/> if (strcmp(kword, "W") == 0)<br/> { <br/> width=GetWidth(); <br/> } <br/> else if (strcmp(kword, "C") == 0) <br/> { <br/> colorIndex=GetColorIndex(); <br/> } <br/> else if (strcmp(kword, "O") == 0) <br/> { <br/> return; <br/> } <br/> else <br/> { <br/> acutPrintf("\n无效的关键字."); <br/> } <br/> } <br/> else if (rc == RTNORM) // 用户输入了点 <br/> { <br/> if (index == 2) <br/> { <br/> // 创建多段线 <br/> AcDbPolyline *pPoly=new AcDbPolyline(2); <br/> AcGePoint2d ptGe1, ptGe2; // 两个节点 <br/> ptGe1=ptPrevious; <br/> ptGe1=ptPrevious; <br/> ptGe2=ptCurrent; <br/> ptGe2=ptCurrent; <br/> pPoly->addVertexAt(0, ptGe1); <br/> pPoly->addVertexAt(1, ptGe2); <br/> <br/> // 修改多段线的颜色和线宽 <br/> pPoly->setConstantWidth(width); <br/> pPoly->setColorIndex(colorIndex); <br/> <br/> // 添加到模型空间 <br/> polyId=PostToModelSpace(pPoly);<br/> } </p><p> else if (index > 2) <br/> { <br/> // 修改多段线,添加最后一个顶点 <br/> AcDbPolyline *pPoly; <br/> acdbOpenObject(pPoly, polyId, AcDb::kForWrite); <br/> <br/> AcGePoint2d ptGe; // 增加的节点 <br/> ptGe = ptCurrent; <br/> ptGe = ptCurrent; <br/> pPoly->addVertexAt(index - 1, ptGe); <br/> <br/> // 修改多段线的颜色和线宽 <br/> pPoly->setConstantWidth(width); <br/> pPoly->setColorIndex(colorIndex); <br/> pPoly->close(); <br/> } <br/> index++; <br/> acdbPointSet(ptCurrent, ptPrevious); <br/> } <br/> // 提示用户输入新的节点 <br/> acedInitGet(NULL,"W C O"); <br/> rc=acedGetPoint(ptPrevious,"\n输入下一点 [宽度(W)/颜色(C)]<完成(O)>:",ptCurrent); <br/> } <br/>}</p><p>错误如下:</p><p>--------------------Configuration: AddPolyDynamic - Win32 Debug--------------------<br/>Compiling...<br/>AddPolyDynamicCommands.cpp<br/> Compiling STL header files in release mode.<br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(20) : error C2601: 'GetWidth' : local function definitions are illegal<br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(33) : error C2601: 'GetColorIndex' : local function definitions are illegal<br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(80) : error C2065: 'GetWidth' : undeclared identifier<br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(84) : error C2065: 'GetColorIndex' : undeclared identifier<br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(114) : error C2065: 'PostToModelSpace' : undeclared identifier<br/>执行 cl.exe 时出错.</p><p>ZffAddPolyDynamic.arx - 1 error(s), 0 warning(s)<br/></p><p></p><p></p><p></p> <p>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(20) : error C2601: 'GetWidth' : local function definitions are illegal</p><p>本地函数定义非法</p><p><br/>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(33) : error C2601: 'GetColorIndex' : local function definitions are illegal<br/>本地函数定义非法</p><p>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(80) : error C2065: 'GetWidth' : undeclared identifier<br/>未定义的识别符,(因为函数原型非法)</p><p>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(84) : error C2065: 'GetColorIndex' : undeclared identifier<br/>同上</p><p>D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(114) : error C2065: 'PostToModelSpace' : undeclared identifier<br/>同上</p><p>lz不仅对arx不理解,连vc++的编译环境也不了解,对C++也不懂,如此仓促上阵,是要遇到许多问题的,楼主还是先看看vc++的编译,弄几个教程,再来搞arx吧~~</p> 谢谢,小弟受教!
页:
[1]