天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 69|回复: 0

ObjectARX 得到快参照名称、插入图块

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
ObjectARX 得到快参照名称、插入图块

//功能:得到快参照名称
CString GetBlkName(AcDbEntity* pEnt);

CString CZzzBlock::GetBlkName(AcDbEntity* pEnt)
{
        CString strBlkName;
        AcDbBlockReference* pBlock = AcDbBlockReference::cast(pEnt);
        AcDbObjectId idBlkDef = pBlock->blockTableRecord();

        AcDbBlockTableRecordPointer pBlkTblRcd(idBlkDef, AcDb::kForRead);
        if (Acad::eOk != pBlkTblRcd.openStatus())
                return strBlkName;
        TCHAR* szName = NULL;
        pBlkTblRcd->getName(szName);
        strBlkName = szName;

        return strBlkName;
}


//功能: 插入图块
AcDbObjectId InsertBlock(LPCTSTR blockName, AcGePoint3d ptInsert, bool bExpolor = false);

AcDbObjectId CZzzBlock::InsertBlock(LPCTSTR blockName, AcGePoint3d ptInsert, bool bExpolor /*= false*/)
{
        AcDbDatabase* pDb = acdbCurDwg();
        AcDbBlockTable* pBlkTable;
        AcDbObjectId blockId;
        pDb->getBlockTable(pBlkTable, AcDb::kForRead);
        if (pBlkTable->has(blockName))
        {
                pBlkTable->getAt(blockName, blockId);
                //ads_point pt;
                //int rc = acedGetPoint(NULL, _T("\n请选择插入点"),pt);
                AcDbBlockReference* pBlkRef = new AcDbBlockReference(ptInsert, blockId);

                //获得模型空间块表记录
                AcDbBlockTable* pBlockTable;
                acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead);
                AcDbBlockTableRecord* pBlockTableRecord;
                pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
                pBlockTable->close();
                pBlockTableRecord->appendAcDbEntity(blockId, pBlkRef);
                pBlockTableRecord->close();

                if (bExpolor)
                {
                        pBlkRef->explodeToOwnerSpace();//插入图块时分解块。(必须在添加模型空间块表记录并关闭后再执行)
                }
                pBlkRef->close();
        }
        pBlkTable->close();
        return blockId;
}

 

 

 

 

ObjectARX 得到快参照名称、插入图块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 12:43 , Processed in 0.130601 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表