内容发布更新时间 : 2024/12/22 15:24:25星期一 下面是文章的全部内容请认真阅读。
实体的插入
1. 在AuToCAD上点一点,加载一个.dwg文件到块参照中。
ads_point pt;
if(acedGetPoint(0, _T(“\\n请输入插入点<退出ESC>:”), pt) == RTNORM) {
MmCreateBlockReference(_T(“c:\\\\gypdxt.dwg”), asPnt3d(pt)); }
2. 在AuToCAD上点一个点,加载一个.dwg文件到块定义中,返回该块的ID
AcDbObjectID idRecd = MmLoadBlock(_T(“c:\\\\gypdxt.dwg”)); If(idRecd.isValid) { }
3. 将块定义、图形添加到块参照中,返回该对象的ID AddToCurrentSpace(指针对象)
AcDbObjectId id = AddToCurrentSpace(指针对象) 4. 同类对象之间的赋值,函数-clone()
AcDbBlockReference*pRef=(AcDbBlockReference*)Jig.GetBlkRef()->clone();
实体的获取
1. 在AuToCAD上点击一个实体,获取该实体的ID Ads_point
adspt;
Ads_name entname; AcDbObjectId entId;
If(acedEntSel(_T(“\\n请选择实体或<退出ESC>:”), entname, adspt) != RTNORM)
Return;
acdbGetObjectId(entId, entname); 2. 实体的指针与实体的ID之间的相互转换 AcDbLine* ptLine = new AcDbLine(); AcDbObjectId ptId;
ptId = AddToCurrentSpace(ptLine); //通过指针获取ID
AcDbObjectPointer<实体类> pt(实体ID, AcDb::kForWrite); If(pt.openStatus() == Acad::eOk) { }
3. AcDbObjectPointer
对实体数据的修改(set….) 用AcDb::kForWrite; 对实体数据的获取(get….) 用AcDb::kForRead; Pt.实体类函数
//通过ID获取指针
4. 封装的MmAdsEnt MmAdsEnt
entName;
rbBlk = acutBuildList(RTDXFO, _T(“INSERT”),0);
MmAdsRBList
If(MmSelectEntity(_T(“请选择图块<退出>:”),entName,rbBlk) ==RTNORM)
实体的删除
1. 通过实体的ID删除实体
1) AcDbObjectPointer
AcDbEntity* pE;
acdbOpenObject(pE ,实体ID, AcDb::kForWrite, false);
Pt->erase();
实体属性的修改
1. 通过实体的ID获取实体的数据库类 AcDbEntity*
pEn;
acdbOpenObject(pEn, 实体ID, AcDb::读写属性,false); pEn->实体属性函数; 指针用完记得关闭