ahlzl 发表于 2008-5-19 08:44:45

DRX指挥班

这是DRX中命令类的一个示例。一个巧妙的特性是执行方法获取一个工作数据库的实例,它还传递一个IO类的实例,因此您可以随时访问GetXXX()、Prompt方法等。几乎所有东西都使用智能指针,因此您不必担心清理。
一旦您设置了命令类,只需在您的切入点类中定义它
**** Hidden Message *****

ahlzl 发表于 2008-6-1 12:17:46

命令类的另一个示例,并使用OdDbUserIO类获取选择集。
//++-- class CommandLAYCUR -----------------------------------------------
class CommandLaycur : public OdStaticRxObject
{
public:
const OdString localName() const { return globalName(); }
const OdString groupName() const { return DD_T("DRXLayerIso"); }
const OdString globalName() const { return OdString("LAYCUR"); }
//++--
void execute(OdEdCommandContext* pCmdCtx)
{
    OdDbCommandContextPtr pDbCmdCtx(pCmdCtx);
    OdDbUserIOPtr pDbIO = pDbCmdCtx->dbUserIO();
    OdDbDatabasePtr pDb = pDbCmdCtx->database();
    OdDbObjectId clayerId = pDb->getCLAYER();
    //++-- Get the selection set using the OdDbUserIO class
    //++-- you can iterate through the seletion set or
    //++-- use the objectIdArray() method
    //++-- note: the ids in the array are guaranteed to be valid
    OdString message = "\nSelect object(s) to be changed to the current layer: ";
    OdDbSelectionSetPtr pSelectionSet = pDbIO->select(message);
    OdDbObjectIdArray objectIdArray = pSelectionSet->objectIdArray();
    for (unsigned int i = 0 ; i setLayer(clayerId);
    }
    pDbIO->putString(_T("\nDone!"));
}
};

ahlzl 发表于 2008-6-5 23:22:30

伟大的丹尼尔!
我下载了DrxSDK_2.04,但没有找到DrxWizards.msi,我如何运行您的样本?我必须再次设置VC2005吗?
谢谢!!!
我很蠢
VC2005+ARX2009+DrxSDK_2.04+CAD2009

ahlzl 发表于 2008-6-5 23:27:02


我用的是VS2005,DRXSDK_20.5,一直在Bricscad上运行应用程序8.2.XXX
我觉得欧特克产品目前还不支持DRX

ahlzl 发表于 2008-6-5 23:36:31

这是一个模板项目的开始,如果你想看看
$(DRXINC)// drx包括文件夹
$(DRXLIB)// drx VC8 lib folder
$(BRISDS) // Bricscad /API/SDS文件夹

ahlzl 发表于 2008-6-6 00:23:25

丹尼尔,非常感谢!
页: [1]
查看完整版本: DRX指挥班