• 创建直线


    ObjectArx中创建直线函数

    AcDbLine(const AcGePoint3d& start, const AcGePoint3d& end)    //起始点与结束点

    如何创建直线

     1 AcDbObjectId CCreateEnt::CreateLine()
     2 {
     3     AcGePoint3d ptStart(0,0,0);     //创建初始点ptStart
     4     AcGePoint3d ptEnd(100,100,0);    //创建结束点ptEnd
     5     AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);    //根据ptStart与ptEnd构建直线
     6 
     7     AcDbBlockTable *pBlockTable;    //声明块表指针pBlockTable
     8     acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);     //以只读获取当前数据库的块表,并赋给pBlockTable
     9 
    10     AcDbBlockTableRecord *pBlockTableRecord;    //声明块表记录指针pBlockTableRecord
    11     pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);    //以写的方式获取当前模型空间
    12 
    13     AcDbObjectId lineId;    //声明直线的ObjectId
    14     pBlockTableRecord->appendAcDbEntity(lineId,pLine);    //添加该直线到模型空间
    15 
    16     pBlockTable->close();   //关闭块表
    17     pBlockTableRecord->close();    //关闭模型空间块记录
    18     pLine->close();   //关闭直线
    19 
    20     return lineId;
    21 
    22 }

    步骤:

    (1) 创建直线。

    (2) 只读方式获取当前数据库的块表。

    (3) 根据块表,以写方式获取代表模型空间的块记录。

    (4) 添加直线到到块记录。

    (5) 关闭块表,关闭块记录,关闭直线

    说明:

    (1) getBlockTable,getAt,AppendDbEntity函数返回操作的结果,如果成功会返回Acad::eOk。

    (2) 打开方式有3种,AcDb::kForRead以读方式打开,AcDb::kForWrite以写的方式打开,AcDb::kForNotify以通知的方式打开。

    (3) 宏ACDB_MODEL_SPACE代表模型空间,ACDB_PAPER_SPACE代表图纸空间。

    (4) 操作完毕后,需要关闭对象,不要使用delete。

  • 相关阅读:
    学期总结
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    作业02
    c语言 学习笔记之二 选择题2
  • 原文地址:https://www.cnblogs.com/estival/p/3106510.html
Copyright © 2020-2023  润新知