在ObjectARX中添加“块”

acDocManager->lockDocument(curDoc());
    // 获得当前图形数据库的块表
    AcDbBlockTable *pBlkTbl;
    acdbHostApplicationServices()->workingDatabase()
        ->getBlockTable(pBlkTbl, AcDb::kForWrite);
    // 创建新的块表记录
    AcDbBlockTableRecord *pBlkTblRcd;
    pBlkTblRcd = new AcDbBlockTableRecord();
    // 设置块表记录的名称
    CString blkName = "DiagramTail";
    pBlkTblRcd->setName(blkName);
    // 将块表记录添加到块表中
    AcDbObjectId blkDefId;
    pBlkTbl->add(blkDefId, pBlkTblRcd);
    pBlkTbl->close();

    // 向块表记录中添加线段
    AcGePoint3d RectLD(0,0,0), RectLU(0,18,0), RectRD(390,0,0), RectRU(390,18,0);
    drawLine(RectLD, RectLU, pBlkTblRcd);
    drawLine(RectLD, RectRD, pBlkTblRcd);
    drawLine(RectRU, RectLU, pBlkTblRcd);
    drawLine(RectRU, RectRD, pBlkTblRcd);

    //下面添加文字
    RectLU.y = RectRU.y = 2.5;
    AcGePoint3d ptInsertText(10,3,0);
    CString tempText = "制 图";
    drawText(ptInsertText,tempText, pBlkTblRcd);

    pBlkTblRcd->close();

    // 查找用户指定的块定义是否存在
    if (!pBlkTbl->has(blkName.AllocSysString()))
    {
        acutPrintf(_T("\n当前图形中未包含指定名称的块定义!"));
        pBlkTbl->close();
        return;
    }
    AcGePoint3d ptInsert(25,5,0);
    // 获得用户指定的块表记录
    pBlkTbl->getAt(blkName.AllocSysString(), blkDefId);
    AcDbBlockReference *pBlkRef = new AcDbBlockReference(ptInsert,blkDefId);
    pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForWrite);
    AcDbObjectId entId;
    pBlkTblRcd->appendAcDbEntity(entId, pBlkRef);
    // 关闭数据库的对象
    pBlkRef->close();
    pBlkTblRcd->close();
    pBlkTbl->close();

    acDocManager->unlockDocument(curDoc());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值