Object学习总结 下载本文

内容发布更新时间 : 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 pt(实体ID, AcDb::kForWrite);

对实体数据的修改(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 pt(实体ID, AcDb::kForWrite); If(pt.openStatus() == Acad::eOk) { } 2)

AcDbEntity* pE;

acdbOpenObject(pE ,实体ID, AcDb::kForWrite, false);

Pt->erase();

实体属性的修改

1. 通过实体的ID获取实体的数据库类 AcDbEntity*

pEn;

acdbOpenObject(pEn, 实体ID, AcDb::读写属性,false); pEn->实体属性函数; 指针用完记得关闭