码迷,mamicode.com
首页 > 其他好文 > 详细

创建一个块定义,并添加实体插入到指定位置

时间:2015-10-27 11:02:44      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:

这里实现的是在当前图纸中创建一个新的块定义,并且向该块定义中添加实体,将实体插入到当前图纸中,例子如下:

    CString blockName = _T("adf");//这里为要创建的块定义名称
    AcDbBlockTable *pBlkTab;
    acdbHostApplicationServices()->workingDatabase()
        ->getBlockTable(pBlkTab, ZcDb::kForWrite);
    if (pBlkTab->has(blockName))//判断该块定义是否已经存在
    {
        AfxMessageBox(_T("该块定义已经存在!已创建一个新的块定义,名称为:") + blockName + m_sAntennaSys);
        blockName += m_sAntennaSys;
    }
    AcDbBlockTableRecord *pBlkTabRcd;
    pBlkTabRcd = new AcDbBlockTableRecord();
    pBlkTabRcd->setName(blockName);
    AcDbObjectId blockId;
    pBlkTab->add(blockId, pBlkTabRcd);
    pBlkTab->close(); 
    //插入点的选取
    AcGePoint3d ptInsert;
    GetPoint(ptInsert, _T("输入adf插入点。"));
       //向该块定义中添加实体
       AcDbBlockReference *pBlkRef = new AcDbBlockReference(pInsert, idJiantou);//前一个参数为插入点,后一个为实体id
    pBlkRef->setRotation(dAngle);//设置偏转角
    CBlockUtil::SetScaleFactor(pBlkRef, dScale);
    pBlkTabRcd->appendZcDbEntity(pBlkRef);
    pBlkRef->close();
    //将该块插入带当前图纸中
    AcDbBlockReference *pBlkTabRef = new AcDbBlockReference(ptInsert, blockId);//blockId为该块定义的id
    CDwgDatabaseUtil::PostToModelSpace(pBlkTabRef);//该函数为插入实体到当前模型空间中的一般函数,这里不给出
    pBlkTabRcd->close();
    pBlkTabRef->close();

上面的列子完成的就是新建块定义,并添加实体,插入块定义的基本操作,具体操作还需要依据具体的需求。

创建一个块定义,并添加实体插入到指定位置

标签:

原文地址:http://www.cnblogs.com/pengjun-shanghai/p/4913299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!