覆盖 dropCallback() 方法
管理多个删除对象所需的大部分代码都在该方法的实现中提供。此实现处理剪贴板数据中的对象,并为找到的每个实体调用方法。方法应检查实体的类型,并决定是否接受删除。如果接受已删除的图元,则只需将工具的内部属性变量设置为从已删除的图元中获取的值即可。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-3-31 12:44
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.