乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 22|回复: 1

自定义实体制作中出现 的问题

[复制链接]

6

主题

15

帖子

3

银币

初来乍到

Rank: 1

铜币
39
发表于 2006-6-24 09:48:00 | 显示全部楼层 |阅读模式
我从AcDbEntity派生了一个子类AzhtEntity,然后又从AzhtEntity派生AzhtBreaker,如下:一些必须的重载函数还有些返回值都已省略,
AzhtEntity中:
class AzhtEntity:public AcDbEntity
{
public:
ACRX_DECLARE_MEMBERS(AzhtEntity);
AzhtEntity();
virtual ~AzhtEntity();
.....................................
.....................................
..................moveGripPointsAt()..........
..................getGripPoints()................
..................transformBy()..................
.........................................................
........................................................
private:
AcGePoint3d m_insertPt; //插入点
};
AzhtEntity::getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const
{
assertReadEnabled();
gripPoints.append(m_insertPt);
return Acad::eOk;
}
AzhtEntity::moveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset)
{
assertWriteEnabled();
return Acad::eOk;
}
AzhtEntity::transformBy(const AcGeMatrix3d& xform)
{
assertWriteEnabled();
return Acad::eOk;
}
AzhtBreaker中:
class AzhtBreaker:public AzhtEntity
{
public:
ACRX_DECLARE_MEMBERS(AzhtBreaker);
AzhtBreaker();
virtual ~AzhtBreaker();
.....................................
.....................................
..................moveGripPointsAt()..........
..................getGripPoints()................
..................transformBy()..................
.........................................................
........................................................
private:
AcGePoint3d m_otherPt; //插入点
};
AzhtBreaker::getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const
{
assertReadEnabled();
int iDirection = ((AzhtEntity*)this)->getDirection();
AcGePoint3d insertPt = ((AzhtEntity*)this)->getInsertPt();
gripPoints.append(m_otherPt);
AzhtEntity::getGripPoints(gripPoints, osnapModes, geomIds);
return Acad::eOk;
}
AzhtBreaker::moveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset)
{
assertWriteEnabled();
//若没有选中点或偏移为0
if(indices.length()==0 || offset.isZeroLength())
return Acad::eOk;
return transformBy(AcGeMatrix3d::translation(offset));
}
AzhtBreaker::transformBy(const AcGeMatrix3d& xform)
{
assertWriteEnabled();
AcGePoint3d insertPt = getInsertPt();
insertPt.transformBy(xform);
m_otherPt.transformBy(xform);
return Acad::eOk;
}
我这样做之后,能够得到夹点,但在移动的时候出现问题,说什么内存不足!请高手指教一下,谢谢!!!!!!
在下想知道,在重载这些函数的时候需要有些什么原则和注意的地方吗?
回复

使用道具 举报

14

主题

202

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
258
发表于 2006-6-26 17:37:00 | 显示全部楼层
看你的worlddraw,估计是那的问题
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 18:56 , Processed in 0.170365 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表