zoukankan      html  css  js  c++  java
  • 创建直线

    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。

  • 相关阅读:
    猴面包树果 baobab tree
    关于 韩国 申明 豆浆 和 端午 是其国家创造或历史的 看法
    初中英语课本里隐藏着的惊人秘密(转载)
    如果不出意外,我每周都会去工大打球
    新开始做wpf,随便写点经验
    当你老了 叶芝
    继承Form中的DevExpress控件不能打开编辑器Designer
    骑 自行车 从公司 到家
    LJP Little John PalmOS 1.0 Release 最新版 (RC9后的正式版)
    我的语文备忘
  • 原文地址:https://www.cnblogs.com/estival/p/3106510.html
Copyright © 2011-2022 走看看