用Bricscad推翻样品
只是一个用Bricscad和Drx 3.05(后来改名为Tx)快速否决样本。display cords图层上的点被否决以显示它们的坐标。
请参阅代码、图片和附件
appload DrxOverrule.tx以运行
bool OverRuleSample::onFilteredLayer(const OdDbPoint *point) const
{
if(point)
{
OdDbLayerTableRecordPtr pLayer = point->layerId().safeOpenObject();
return _tcsicmp(pLayer->getName(),_T("DisplayCords")) == 0;
}
return false;
}
double OverRuleSample::getTextHeight(const OdDbPoint *point) const
{
if(point)
{
const OdDbDatabase * pDatabase = point->database();
OdDbTextStyleTableRecordPtr pStyle = pDatabase->getTextStyleStandardId().safeOpenObject();
return pStyle->textSize();
}
return 0.0;
}
bool OverRuleSample::worldDraw( const OdGiDrawable *drawable, OdGiWorldDraw *wd )
{
OdDbPoint *point = OdDbPoint::cast(drawable);
if(point && onFilteredLayer(point))
{
const double tsize = getTextHeight(point);
const OdGePoint3d pnt = point->position();
m_text.format(_T("X=%f Y=%f Z=%f"),pnt.x,pnt.y,pnt.z);
wd->geometry().text(pnt,point->normal(),point->normal().perpVector(),tsize,tsize*m_text.getLength(),0.0,m_text);
}
return OdGiDrawableOverrule::worldDraw(drawable,wd);
}
bool OverRuleSample::isApplicable( const OdRxObject* pOverruledSubject ) const
{
return true;
}
**** Hidden Message ***** 酷!看起来对我来说几乎很容易理解。你玩过这些覆盖吗,足以知道是否有很大的性能提升?
我真的不明白isApplication...我必须玩它,看看我是否能弄清楚。
谢谢丹尼尔... 嗨,Greg,
我没有做过任何基准测试,但我敢打赌否决本身真的很快。我的示例可能不会太快,因为我打开了几个记录来获取图层和文本高度。这些当然可以被缓存。丹 好的
页:
[1]