TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 昨天 15:23 |
---|
签到天数: 69 天 [LV.6]常住居民II
管理员
- 积分
- 2704
|
#include <aced.h>
#include "rxregsvc.h"
#include "acutads.h"
#include "dbapserv.h"
#include "dbsymtb.h"
#include "gepnt3d.h"
#include "dbsol3d.h"
#include "dbents.h"
#include "dbregion.h"
static Acad::ErrorStatus postToDb(AcDbEntity* ent, AcDbObjectId& objId) {
Acad::ErrorStatus es;
AcDbBlockTable* pBlockTable;
AcDbBlockTableRecord* pSpaceRecord;
if ((es = acdbHostApplicationServices()->workingDatabase()->
getSymbolTable(pBlockTable, AcDb::kForRead))
!= Acad::eOk) {
return es;
}
if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE,
pSpaceRecord,
AcDb::kForWrite)) != Acad::eOk) {
return es;
}
if ((es = pBlockTable->close()) != Acad::eOk) {
return es;
}
if ((es = pSpaceRecord->appendAcDbEntity(objId, ent)) != Acad::eOk) {
return es;
}
if ((es = pSpaceRecord->close()) != Acad::eOk) {
return es;
}
return ent->close();
}
bool LOCAL_createSweepedSolidAcad() {
AcDb2dPolyline *pPolyProf = new AcDb2dPolyline();
AcDb2dVertex *vp1 = new AcDb2dVertex( AcGePoint3d( 0, 0, 0 ) ); pPolyProf->appendVertex( vp1 );
AcDb2dVertex *vp2 = new AcDb2dVertex( AcGePoint3d( 1, 1, 0 ) ); pPolyProf->appendVertex( vp2 );
AcDb2dVertex *vp3 = new AcDb2dVertex( AcGePoint3d( 0, 5, 0 ) ); pPolyProf->appendVertex( vp3 );
AcDb2dVertex *vp4 = new AcDb2dVertex( AcGePoint3d( -1, 1, 0 ) ); pPolyProf->appendVertex( vp4 );
pPolyProf->makeClosed();
AcDb3dPolyline *pPolyPath1 = new AcDb3dPolyline();
AcDb3dPolylineVertex *v1a = new AcDb3dPolylineVertex( AcGePoint3d( 10,10,10 ) ); pPolyPath1->appendVertex( v1a );
AcDb3dPolylineVertex *v1b = new AcDb3dPolylineVertex( AcGePoint3d( 20,20,12 ) ); pPolyPath1->appendVertex( v1b );
AcDb3dPolyline *pPolyPath2 = new AcDb3dPolyline();
AcDb3dPolylineVertex *v2a = new AcDb3dPolylineVertex( AcGePoint3d( -10,-10,10 ) ); pPolyPath2->appendVertex( v2a );
AcDb3dPolylineVertex *v2b = new AcDb3dPolylineVertex( AcGePoint3d( -20,-20,12 ) ); pPolyPath2->appendVertex( v2b );
AcDbSweepOptions sweepOptions;
sweepOptions.setAlign( AcDbSweepOptions::kAlignSweepEntityToPath );
sweepOptions.setBasePoint( AcGePoint3d(0,0,0) );
AcDb3dSolid* cad3dSolid1 = new AcDb3dSolid();
Acad::ErrorStatus es1 = cad3dSolid1->createSweptSolid( pPolyProf, pPolyPath1, sweepOptions );
cad3dSolid1->setColorIndex(2);
AcDbObjectId idSolid1;
postToDb( cad3dSolid1, idSolid1 );
AcDb3dSolid* cad3dSolid2 = new AcDb3dSolid();
Acad::ErrorStatus es2 = cad3dSolid2->createSweptSolid( pPolyProf, pPolyPath2, sweepOptions );
cad3dSolid2->setColorIndex(2);
AcDbObjectId idSolid2;
postToDb( cad3dSolid2, idSolid2 );
delete pPolyPath1;
delete pPolyPath2;
delete pPolyProf;
return es1 == Acad::eOk && es2 == Acad::eOk;
}
//******************************************************************************
/// purpose: define new cad-command
void runIt()
{
acutPrintf(L"\nTest-Command");
LOCAL_createSweepedSolidAcad();
}
//******************************************************************************
/// purpose: main function
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
switch(msg) {
case AcRx::kInitAppMsg:
acrxUnlockApplication(appId);
acrxRegisterAppMDIAware(appId);
acutPrintf(L"\nExample Application Loaded");
acedRegCmds->addCommand(L"ASDK_MAKE_ENTS", L"ASDK_MKENTS", L"RUNIT", ACRX_CMD_MODAL, runIt);
break;
case AcRx::kUnloadAppMsg:
acutPrintf(L"\nExample Application Unloaded");
break;
}
return AcRx::kRetOK;
} |
|