返回介绍

函数说明

发布于 2023-08-09 23:10:33 字数 14110 浏览 0 评论 0 收藏 0

函数名:ACRX_DECLARE_MEMBERS 宏

作用:使用MCRX_DECLARE_MEMBERS宏定义类的类型信息函数,宏的第一个参数是类的类名。

参数

名称说明
第一个参数宏的第一个参数是类的类名

参考例程

ACRX_DECLARE_MEMBERS(MyCustomEntity);

ACRX_DXF_DEFINE_MEMBERS宏

作用:定义类的类型信息。

定义

#define ACRX_DXF_DEFINE_MEMBERS MCRX_DXF_DEFINE_MEMBERS_EX

#define MCRX_DXF_DEFINE_MEMBERS_EX(CLASS_NAME,PARENT_CLASS,DWG_VERSION,

MAINTENANCE_VERSION,PROXY_FLAGS,DXF_NAME,APP)\

MCRX_DEFINE_MEMBERS(CLASS_NAME); \

参数

名称说明
CLASS_NAME自定义实体的类名
PARENT_CLASS自定义实体的基类
DWG_VERSION当前文件版本
MAINTENANCE_VERSION当前控件版本
PROXY_FLAGS代理实体处理标志
DXF_NAMEDfx0组码对应值
APP类说明

参考例程:

ACRX_DXF_DEFINE_MEMBERS(
MyCustomEntity, //自定义实体的类名
McDbEntity,//自定义实体的基类
AcDb::kDHL_CURRENT,//当前文件版本
AcDb::kMReleaseCurrent,//当前控件版本
AcDbProxyEntity::kAllAllowedBits,//代理实体处理标志
MyCustomEntity,//Dfx0组码对应值
MxDrawObj Test Custom Entity//类说明
);

函数名:worldDraw function

作用:绘制自定义实体的显示效果。

接口

Adesk::Boolean worldDraw(AcGiWorldDraw * wd);

参数

名称说明
wd显示绘制的上下文对象

参考例程

Adesk::Boolean MyCustomEntity::worldDraw(AcGiWorldDraw * wd)
{
assertReadEnabled();
AcDbVoidPtrArray entitySet;
explode(entitySet);
for (int i = 0; i < entitySet.length(); i++)
{
McDbEntity* pEnt = (McDbEntity*)entitySet[i];
wd->subEntityTraits().setLineWeight(pEnt->lineWeight());
wd->subEntityTraits().setColor(pEnt->colorIndex());
wd->subEntityTraits().setAlwaysShowLineWidth(TRUE);
pEnt->worldDraw(wd);
delete pEnt;
}
 
return Mdesk::kTrue;
}

函数名:getGripPoints function

作用:返回自定义的编辑夹点。

接口

virtual Acad::ErrorStatus getGripPoints AcGePoint3dArray & gripPoints, AcGeIntArray & osnapModes, AcGeIntArray & geomIds

)const;

参数

名称说明
gripPoints返回夹点
osnapModes暂没有使用
geomIds暂没有使用

参考例程

Acad::ErrorStatus MyCustomEntity::getGripPoints(AcGePoint3dArray & gripPoints, 
AcGeIntArray & osnapModes, AcGeIntArray & geomIds) const
{
assertReadEnabled();
gripPoints.append(m_vCenterPt);
return Acad::eOk;
}

函数名:moveGripPointsAt function

作用:处理夹点编辑结果。

接口

Acad::ErrorStatus moveGripPointsAt( const AcGeIntArray & indices, const AcGeVector3d & offset

);

参数

名称说明
indicesindices [0]参数是传入被编辑的夹点索引, 其它数组元素暂没有使用
Offset夹点编辑的偏移量

参考例程

Acad::ErrorStatus MyCustomEntity::moveGripPointsAt(const AcGeIntArray & indices, const 
AcGeVector3d & offset)
{
assertWriteEnabled();
int iIndex = indices[0];
switch (iIndex)
{
case 0:
m_vCenterPt += offset;
break;
}
return Mcad::eOk;
}

函数名:getGeomExtents function

作用:返回自定义实体的外包矩形框。

接口

Acad::ErrorStatus getGeomExtents(

AcDbExtents & extents

) const;


参数

名称说明
extents返回自定义实体外包矩形框

参考例程

Acad::ErrorStatus MyCustomEntity::getGeomExtents(AcDbExtents & extents) const
{
assertReadEnabled();
 
auto vPos = GetFPS();
McGePoint3d vLeftBottom;
McGePoint3d vRightTob;
vLeftBottom = vPos[0];
vRightTob = vPos[0];
 
for (size_t i(1); i < vPos.size(); i++)
{
if (vLeftBottom.x > vPos[i].x)
vLeftBottom.x = vPos[i].x;
if (vLeftBottom.y > vPos[i].y)
vLeftBottom.y = vPos[i].y;
if (vRightTob.x < vPos[i].x)
vRightTob.x = vPos[i].x;
if (vRightTob.y < vPos[i].y)
vRightTob.y = vPos[i].y;
}
 
extents.set(vLeftBottom, vRightTob);
 
return Acad::eOk;
}

函数名:getOsnapPoints function

作用:返回自定义实体的捕捉点。

接口

Acad::ErrorStatus getOsnapPoints(

AcDb::OsnapMode osnapMode,

int gsSelectionMark,

const AcGePoint3d & pickPoint,

const AcGePoint3d & lastPoint,

const AcGeMatrix3d & viewXform,

AcGePoint3dArray & snapPoints,

AcDbIntArray & geomIds

) const;

参数

名称说明
osnapMode捕捉点类型,通过该变量可以确定需要返回什么类型的捕捉点
GsSelectionMark暂没有使用
pickPoint当前输入点
LastPoint上一次的输入点
ViewXform暂没有使用
SnapPoints返回捕捉点
GeomIds暂没有使用

参考例程

Acad::ErrorStatus MyCustomEntity::getOsnapPoints(AcDb::OsnapMode osnapMode, int
 gsSelectionMark, const AcGePoint3d & pickPoint, const AcGePoint3d & lastPoint, const
  AcGeMatrix3d & viewXform, AcGePoint3dArray & snapPoints, AcDbIntArray & geomIds) const
{
assertReadEnabled();
if (osnapMode == McDb::kOsModeEnd)
{
// 返回端点。
auto vPos = GetFPS();
for each (auto it in vPos)
snapPoints.append(it);
}
else if (osnapMode == McDb::kOsModeMid)
{
// 返回的是中点。
snapPoints.append(m_vCenterPt);
}
return Mcad::eOk;
}

函数名:Explode function

作用:重载该虚函数,返回自定义实体打碎后的实体,在控件中,自定义实体保存在到dwg图中时,使用是块引用来保存,控件使用该函数得到自定义实体在块引用中的实体数据。

接口

Acad::ErrorStatus explode(

AcDbVoidPtrArray & entitySet

) const;

参数

名称说明
entitySet返回打碎后的基本实体。实体指针内存控件释放

参考例程

Acad::ErrorStatus MyCustomEntity::explode(AcDbVoidPtrArray & entitySet) const
{
assertReadEnabled();
 
auto vPos = GetFPS();
for (size_t i(0); i < vPos.size(); i++)
{
McDbLine* pLine = new McDbLine(vPos[i], vPos[(i + 2) % 5]);
pLine->setLineWeight(McDb::kLnWt025); //设置一些属性
McCmColor mColor;
mColor.setColor(RGB(0, 255, 0));
pLine->setColor(mColor);
pLine->setAlwaysShowLineWeight(TRUE);
entitySet.append(pLine);
}
 
return Acad::eOk;
}

函数名:dwgInFields function

作用:重载该虚函数,响应控件系统,读取自定义实体数据,在从文件读取实体,复制实体等地方都会调用该函数。

接口

Acad::ErrorStatus dwgInFields(

AcDbDwgFiler * pFiler

);

参数

名称说明
pFiler数据归档对象,在这个函数,使用该对象写入数据

参考例程

Acad::ErrorStatus MyCustomEntity::dwgInFields(AcDbDwgFiler * pFiler)
{
assertWriteEnabled();
 
int lVar = 1;
 
pFiler->readInt(&lVar);
pFiler->readDouble(&m_iLength);
pFiler->readPoint3d(&m_vCenterPt);
 
return Mcad::eOk;
}

函数名:dwgOutFields function

作用:重载该虚函数,响应控件系统,读取自定义实体数据,在从文件读取实体,复制实体等地方都会调用该函数。

接口

Acad::ErrorStatus dwgOutFields( AcDbDwgFiler * pFiler

) const;

参数

名称说明
pFiler数据归档对象,在这个函数,使用该对象读取数据

参考例程

Acad::ErrorStatus MyCustomEntity::dwgOutFields(AcDbDwgFiler * pFiler) const
{
assertReadEnabled();
 
pFiler->writeInt(MYCUSTOMENTITY_VERSION);
pFiler->writeDouble(m_iLength);
pFiler->writePoint3d(m_vCenterPt);
 
return Mcad::eOk;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文