管理多个丢弃对象所需的大部分代码都是在方法的实现中提供的。此实现处理剪贴板数据中的对象,并为找到的每个实体调用 yourmethod。您的方法应检查实体的类型并决定是否接受删除。如果接受放置的实体,则只需将工具的内部属性变量设置为从放置的实体获取的值即可。AcadToolImplIAcadToolDropTarget::Drop()dropCallback()dropCallback() 通常,应用程序接受自己的自定义实体类型。您创建的工具通过假定放置对象的属性设置来专门化您的常用工具之一。当用户单击新工具时,您将创建与放置对象的特征匹配的自定义实体的新实例。不应打开或关闭传递给函数的对象。在调用函数之前打开对象以供读取,并在函数返回时关闭它们。dropCallback()AcadToolImpl 下面的清单显示了一个示例实现:AcadToolImpl::dropCallback() STDMETHODIMP CBoltTool::dropCallback(AcDbEntity *pDropEntity)
{
// Cast the pointer first, and make sure it is successful.
asdkBolt *pBolt=(asdkBolt*)asdkBolt::cast(pDropEntity);
if(pBolt)
{
m_Color.setColor(pBolt->color().color());
m_Color.setNames(pBolt->color().colorName(),
pBolt->color().bookName());
_tcscpy(m_szLayer,CA2T(pBolt->layer()));
_tcscpy(m_MaterialName,CA2T(pBolt->materialName));
_tcscpy(m_PartNumber,CA2T(pBolt->partNumber));
m_HeadSides=pBolt->getHeadSides();
m_HeadHeight=pBolt->getHeadHeight();
m_ShaftLength=pBolt->getShaftLength();
m_ShaftDiameter=pBolt->getShaftDiameter();
m_ThreadLength=pBolt->getThreadLength();
m_ThreadWidth=pBolt->getThreadWidth();
m_HeadDiameter=pBolt->getHeadDiameter();
return S_OK;
}
return E_FAIL;
// You don't need to worry about closing the object passed in.
}
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-11-14 14:18
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.