天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 6|回复: 0

沿三维路径扫掠轮廓(闭合的样条线)

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    #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;
    }

     

     

     

     

    沿三维路径扫掠轮廓(闭合的样条线)
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:56 , Processed in 0.068531 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表