- UID
- 22595
- 积分
- 118
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-12-29
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我把论坛上rave版主帖子里面的一个函数加入Hello.cpp的里面,想尝试调用,编译器说函数selectEntityInLayer的参数不对,那位兄台帮我看看,告诉我该怎样填写这个参数!
// 测试.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include <aced.h>
#include <rxregsvc.h>
#include <migrtion.h>
#include <dbsymtb.h>
#include <dbapserv.h>
#include <string.h>
#include <dbmain.h>
#include <cstringt.h>
#include <atlstr.h>
#include <dbidar.h>
#include <crtdbg.h>
//#include <acedxref.h>
//定义两个函数
void initApp();
void unloadApp();
void helloWorld();
//遍历容器
Acad::ErrorStatus selectEntityInLayer(
CString nLayerName,
AcDbObjectIdArray& nIDs,
bool nModelSpace
);
void initApp()
{
//register a command with the AutoCAD command mechanism
acedRegCmds->addCommand(ACRX_T("HELLOWORLD_COMMANDS"),
ACRX_T("Hello"),
ACRX_T("Bonjour"),
ACRX_CMD_TRANSPARENT,
//helloWorld);
selectEntityInLayer("0",AcDbObjectIdArray& nIDs,bool nModelSpace));
}
void helloWorld()
{
acutPrintf(ACRX_T("\nHello World!"));
}
//************************************************************************
//函数名称:selectEntityInLayer
//函数类型:Acad::ErrorStatus
//返回值:
//功能描述:选择指定层上的实体,得到其对象属性标识符!
//函数作者:Darcy
//创建日期:200X-XX-XX
//参数列表:
//变量名:nLayerName 变量类型:CString 变量说明:
//变量名:nIDs 变量类型:AcDbObjectIdArray& 变量说明:
//变量名:nModelSpace 变量类型:bool 变量说明:
//************************************************************************
Acad::ErrorStatus selectEntityInLayer(
CString nLayerName,
AcDbObjectIdArray& nIDs,
bool nModelSpace
)
{
Acad::ErrorStatus es=Acad::eOk;
AcDbBlockTable* pBlockTable=NULL;
AcDbBlockTableRecord* pSpaceRecord=NULL;
if (acdbHostApplicationServices()->workingDatabase()==NULL)
return Acad::eNoDatabase;
if ((es = acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead))==Acad::eOk)
{
char entryName[13];
if (nModelSpace)
strcpy(entryName,(const char*)ACDB_MODEL_SPACE);
else
strcpy(entryName,(const char*)ACDB_PAPER_SPACE);
//Get the Model or Paper Space record and open it for read:
if ((es = pBlockTable->getAt((const wchar_t* )entryName, pSpaceRecord, AcDb::kForRead))==Acad::eOk)
{
AcDbBlockTableRecordIterator* pIter;
if (pSpaceRecord->newIterator(pIter)==Acad::eOk)
{
for (pIter->start();!pIter->done();pIter->step())
{
char *name=NULL;
AcDbEntity* pEntity;
if (pIter->getEntity(pEntity,AcDb::kForRead)==Acad::eOk)
{
name=(char*)pEntity->layer();
if (nLayerName.CompareNoCase(name)==0)
nIDs.append(pEntity->objectId());
pEntity->close();
acutDelString(name);
}
}
delete pIter;
}
pSpaceRecord->close();
}
pBlockTable->close();
}
return es;
}
void unloadApp()
{
acedRegCmds->removeGroup(ACRX_T("HELLOWORLD_COMMANDS"));
}
extern "C"
AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
//void acrxEntryPoint(void* pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxRegisterAppMDIAware(pkt);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
default:
break;
}
return AcRx::kRetOK;
}
|
|