最近看了中望CAD上的鎖定解鎖圖紙,發現其實是通過多重插入塊來實作的,其設定的密碼也毫無意義,對通過ARX代碼來解鎖毫無影響。下面是個人寫的通過多重插入塊鎖定解鎖的代碼。注:使用了ArxDbg代碼,ArxDbg見objectArx 安裝目錄下,例如:C:ObjectARX\samples\database\ARXDBG
void CLockDwg::doLockDwg()
{
auto state = m_selset.userSelect(L"請選擇需要鎖定的對象:", L"請選擇需要移除的對象:");
if (state != ArxDbgSelSet::kSelected)
{
return;
}
AcDbBlockTableRecord *pBlkTblRec = ArxDbgUtils::openCurrentSpaceBlock(AcDb::kForRead, acdbCurDwg());
AcDbExtents extents;
extents.addBlockExt(pBlkTblRec);
pBlkTblRec->close();
m_basePt = AcGePoint3d(extents.minPoint().x, extents.maxPoint().y, 0);
AcDbObjectId blkdefId;
AcDbBlockTableRecord *pNewBlkTblRec;
//建立匿名塊
ArxDbgUtils::defineNewAnonymousBlock(pNewBlkTblRec, blkdefId, acdbCurDwg());
pNewBlkTblRec->setOrigin(m_basePt);
pNewBlkTblRec->close();
AcDbObjectIdArray selectIds;
m_selset.asArray(selectIds);
ArxDbgUtils::clon