| 请教大虾们(Objectarx)程序错误应该如何解决? 程序如下: #include<iostream.h>#include "StdAfx.h"
 #include "StdArx.h"
 #include "dbpl.h"
 #include "acedads.h"
 #include "dbents.h"
 #include "dbsymtb.h"
 #include  <string.h>
 // This is command 'ADDPOLYDYNAMIC'void ZffCHAP5AddPolyDynamic()
 {
 
 // TODO: Implement the command
 ads_real GetWidth()
 {
 ads_real width = 0;
 if (acedGetReal("\n输入线宽:", &width) == RTNORM)
 {
 return width;
 }
 else
 {
 return 0;
 }
 }
  int GetColorIndex() {
 int colorIndex = 0;
 if (acedGetInt("\n输入颜色索引值(0~256):", &colorIndex) !=RTNORM)
 return 0;
 
 // 处理颜色索引值无效的情况
 while (colorIndex < 0 || colorIndex > 256)
 {
 acedPrompt("\n输入了无效的颜色索引.");
 if (acedGetInt("\n输入颜色索引值(0~256):", &colorIndex) !=RTNORM)
 return 0;
 }
 return colorIndex;
 }
 }
 // This is command 'ADDPOLY'
 void ZffCHAP5AddPoly()
 {
 // TODO: Implement the command
 int colorIndex = 0;      // 颜色索引值
 ads_real width = 0;      // 多段线的线宽
 
 int index = 2;        // 当前输入点的次数
 ads_point ptStart;   // 起点
 
 // 提示用户输入起点
 if (acedGetPoint(NULL, "\n输入第一点:", ptStart) != RTNORM)
 return;
 
 ads_point ptPrevious, ptCurrent;
 acdbPointSet(ptStart, ptPrevious);
 AcDbObjectId polyId;    // 多段线的ID
 
 // 输入第二点
 acedInitGet(NULL, "W C O");
 int rc = acedGetPoint(ptPrevious,"\n输入下一点 [宽度(W)/颜色(C)]<完成(O)>:", ptCurrent);
 while (rc == RTNORM || rc == RTKWORD)
 {
 if (rc == RTKWORD)    // 如果用户输入了关键字
 {
 char kword[20];
 if (acedGetInput(kword) != RTNORM)
 return;
 if (strcmp(kword, "W") == 0)
 {
 width=GetWidth();
 }
 else if (strcmp(kword, "C") == 0)
 {
 colorIndex=GetColorIndex();
 }
 else if (strcmp(kword, "O") == 0)
 {
 return;
 }
 else
 {
 acutPrintf("\n无效的关键字.");
 }
 }
 else if (rc == RTNORM)  // 用户输入了点
 {
 if (index == 2)
 {
 // 创建多段线
 AcDbPolyline *pPoly=new AcDbPolyline(2);
 AcGePoint2d ptGe1, ptGe2; // 两个节点
 ptGe1[X]=ptPrevious[X];
 ptGe1[Y]=ptPrevious[Y];
 ptGe2[X]=ptCurrent[X];
 ptGe2[Y]=ptCurrent[Y];
 pPoly->addVertexAt(0, ptGe1);
 pPoly->addVertexAt(1, ptGe2);
 
 // 修改多段线的颜色和线宽
 pPoly->setConstantWidth(width);
 pPoly->setColorIndex(colorIndex);
 
 // 添加到模型空间
 polyId=PostToModelSpace(pPoly);
 }
     else if (index > 2) {
 // 修改多段线,添加最后一个顶点
 AcDbPolyline *pPoly;
 acdbOpenObject(pPoly, polyId, AcDb::kForWrite);
 
 AcGePoint2d ptGe;   // 增加的节点
 ptGe[X] = ptCurrent[X];
 ptGe[Y] = ptCurrent[Y];
 pPoly->addVertexAt(index - 1, ptGe);
 
 // 修改多段线的颜色和线宽
 pPoly->setConstantWidth(width);
 pPoly->setColorIndex(colorIndex);
 pPoly->close();
 }
 index++;
 acdbPointSet(ptCurrent, ptPrevious);
 }
 // 提示用户输入新的节点
 acedInitGet(NULL,"W C O");
 rc=acedGetPoint(ptPrevious,"\n输入下一点 [宽度(W)/颜色(C)]<完成(O)>:",ptCurrent);
 }
 }
 错误如下: --------------------Configuration: AddPolyDynamic - Win32 Debug--------------------Compiling...
 AddPolyDynamicCommands.cpp
 Compiling STL header files in release mode.
 D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(20) : error C2601: 'GetWidth' : local function definitions are illegal
 D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(33) : error C2601: 'GetColorIndex' : local function definitions are illegal
 D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(80) : error C2065: 'GetWidth' : undeclared identifier
 D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(84) : error C2065: 'GetColorIndex' : undeclared identifier
 D:\TEST\AddPolyDynamic\AddPolyDynamicCommands.cpp(114) : error C2065: 'PostToModelSpace' : undeclared identifier
 执行 cl.exe 时出错.
 ZffAddPolyDynamic.arx - 1 error(s), 0 warning(s)
 |