1. 说明

        本篇举例块定义中包含两条直线和一个圆。
2. 思路
        所有的实体都保存在块表记录中,而块表记录则存储在块表中。实际上,用户在
AutoCAD 中定义块相当于增加了一个块表记录,块表记录的名称就是块定义的名称。
        创建块定义的一般步骤(仿照在图形数据库中创建实体的步骤)
                (1)获得当前图形数据库的块表,向其中添加一条新的块表记录。
                (2)创建组成块定义的实体,将其添加到新的块表记录中。
                (3)关闭块表、块表记录和新创建的实体。

3. 步骤

(1)用户输入块定义的名称,使用 acedGetString 函数来获得用户输入的字符串,

acedGetString 函数函数定义为:

//acedGetString 函数函数定义为
//使用 acedGetString 函数来获得用户输入的字符串
int acedGetString( int cronly,            //cronly 指定用户输入的字符串中是否可以包含空格,可以输入 Adesk::kTrue 或者 Adesk::kFalseconst char * prompt,   //prompt 指定了在命令行提示用户输入的文本char * result);        //result 则保存了用户输入的结果

(2)在CCreateEnt中添加函数AddBlk()

    //添加块static void AddBlk(); //添加块
//添加块
void CCreateEnt::AddBlk()
{ // 获得当前图形数据库的块表AcDbBlockTable *pBlkTbl;acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForWrite);// 创建新的块表记录AcDbBlockTableRecord *pBlkTblRcd;pBlkTblRcd = new AcDbBlockTableRecord();// 根据用户的输入设置块表记录的名称TCHAR blkName[40];if (acedGetString(Adesk::kFalse, _T("\n输入图块的名称:"), blkName) != RTNORM){pBlkTbl->close();delete pBlkTblRcd;return;}pBlkTblRcd->setName(blkName);// 将块表记录添加到块表中AcDbObjectId blkDefId;pBlkTbl->add(blkDefId, pBlkTblRcd);pBlkTbl->close();// 向块表记录中添加实体AcGePoint3d ptStart(-10, 0, 0), ptEnd(10, 0, 0);AcDbLine *pLine1 = new AcDbLine(ptStart, ptEnd); // 创建一条直线ptStart.set(0, -10, 0);ptEnd.set(0, 10, 0);AcDbLine *pLine2 = new AcDbLine(ptStart, ptEnd); // 创建一条直线AcGeVector3d vecNormal(0, 0, 1);AcDbCircle *pCircle = new AcDbCircle(AcGePoint3d::kOrigin, vecNormal, 6); AcDbObjectId entId;pBlkTblRcd->appendAcDbEntity(entId, pLine1);pBlkTblRcd->appendAcDbEntity(entId, pLine2);pBlkTblRcd->appendAcDbEntity(entId, pCircle);// 关闭实体和块表记录pLine1->close();pLine2->close();pCircle->close();pBlkTblRcd->close();
}

(3)在acrxEntryPoint.cpp中

ACED_ARXCOMMAND_ENTRY_AUTO(CArxConfigApp, MidasMyGroup, MyAddBlk, MyAddBlk, ACRX_CMD_MODAL, NULL) //创建块
    //当前项目中注册一个命令 AddBlkstatic void MidasMyGroupMyAddBlk(){//添加长方体CCreateEnt::AddBlk();}

效果展示:

(17)ObjectARX2015 + vs2012创建块定义相关推荐

  1. (15)ObjectARX2015 + vs2012创建三维实体

    1. 说明         ObjectARX 中提供了三类创建三维实体的方法:                 (1)创建标准形状的实体                 (2)拉伸面域创建实体    ...

  2. (7)ObjectARX2015 + vs2012创建多段线以及实体的旋转移动放缩

    提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...

  3. (9)ObjectARX2015 + vs2012创建面域

    提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...

  4. (14)ObjectARX2015 + vs2012创建和编辑对象时的动态拖动技术

    提示:看之前的博客(1)(4)和(12),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线 ...

  5. (6)ObjectARX2015 + vs2012创建圆弧

    提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...

  6. (12)ObjectARX2015 + vs2012创建尺寸标注

    提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...

  7. (18)ObjectARX2015 + vs2012插入块参照

    1. 说明         本例允许用户输入一个块参照的名称,指定块参照的插入点等参数,然后将块参照插 入到模型空间. 2. 思路         AutoCAD 有块定义和块参照两个概念.这两个概念 ...

  8. (24)ObjectARX2015 + vs2012创建字体样式

    1. 说明         AutoCAD 中可以使用 STYLE 命令创建新的字体样式,包括                 设置样式名.                 选择字体文件.       ...

  9. cad二次开发-C#-VS-镜像-判断用户当前是否已选择实体-将实体对象添加到模型空间-添加实体到块表记录-将块定义插入到模型空间

    创建新图层 public static void CreateLayer(string LayerName){Document acDoc = Application.DocumentManager. ...

最新文章

  1. ios转向前端进阶之:html标签类型
  2. Jetty开发指导:框架
  3. Python3算法基础练习:编程100例( 31 ~ 35 )
  4. 攻防世界-web-bug-从0到1的解题历程writeup
  5. 阿里云微服务引擎MSE网关功能,开启微服务“大门”云化时代
  6. EOJ_1081_朋友圈
  7. 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
  8. Android之使用IDA Pro静态分析so文件
  9. python创建一个包,如何从python包创建一个osx应用程序/ dmg?
  10. BugkuCTF-WEB题cookie欺骗
  11. Java ByteArrayOutputStream size()方法与示例
  12. 用计算机将复数转换成角度,卡西欧FX-991ES计算器能计算电路里的复数加减乘除然后换算成角度吗?...
  13. “茴”字有几种写法?
  14. 计算机学院毕业礼物,史上最全毕业礼物攻略,绝对不能错过!
  15. 流程图(flowchart)语法
  16. 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署
  17. 品牌营销策略:适合初创公司的5种营销方式
  18. 如何恢复移动硬盘数据?
  19. 机器学习和深度学习资料
  20. 如何根据选股条件选择基本面量化股票池?

热门文章

  1. php 在线发邮件,PHPMailer+php完美实现在线发送邮件
  2. python自带数据的模型合集
  3. QT for Android环境搭建
  4. 降薪求职,愚蠢还是明智?
  5. 三项技术可以让自动驾驶更安全
  6. 超级实用的javascript经典大全 js大全
  7. 网页中滚动条的设置和修改
  8. 在tomcat8.0.x和tomcat9.0.x之间么突然冒出个tomcat 8.5
  9. 区块链协议新方向-图灵奖得主Macali开发Algorand
  10. 小说电影里面的“冥想”只是玄学中来修炼的吗?