pkohut 发表于 2010-2-24 23:38:50

原生包装

仍然有很多事情要做,但我已经到了可以炫耀的地步
static void RxlRxLib_doit(void)
{
    CPromptStringOptions promptStringOptions(_T("\nGet String"));
    promptStringOptions.UseDefaultValue = true;
    promptStringOptions.DefaultValue = _T("default");
    CPromptResult promptStringResult;
    CEditor::GetString( promptStringResult,promptStringOptions);
    if(promptStringResult.Status == Acad::eNormal)
    {
      acutPrintf(promptStringResult.StringResult);
    }
    else
    {
      acutPrintf(_T("\nError: %s"),
      CRxTrace::PromptSatusText(promptStringResult.Status));
    }
}

tatic void RxlRxLib_doit(void)
{
    CPromptDoubleOptions promptDoubleOptions(_T("\nEnter number"));
    promptDoubleOptions.UseDefaultValue = true;
    promptDoubleOptions.DefaultValue = 8.345;
    promptDoubleOptions.AllowArbitraryInput = false;
    promptDoubleOptions.AllowZero = false;
    promptDoubleOptions.UseRange = true;
    promptDoubleOptions.setRange(0.5,10.0);
    promptDoubleOptions.Keywords.AddKeyWord(_T("Dan"));
    promptDoubleOptions.Keywords.AddKeyWord(_T("Is"));
    promptDoubleOptions.Keywords.AddKeyWord(_T("Cool"));
    promptDoubleOptions.Keywords.AddKeyWord(_T("Right"));
    CPromptDoubleResult promptDoubleResult;
    CEditor::GetDouble(promptDoubleResult,promptDoubleOptions);
    if(promptDoubleResult.Status == Acad::eNormal)
    {
      acutPrintf(_T("\nResult Number %g"),promptDoubleResult.Double);
    }
    else if(promptDoubleResult.Status == Acad::eKeyword)
    {
      acutPrintf(_T("\nResult String %s"),promptDoubleResult.StringResult);
    }
    else
    {
      acutPrintf(_T("\nError: %s"),
      CRxTrace::PromptSatusText(promptDoubleResult.Status));
    }
}





**** Hidden Message *****

Kerry 发表于 2010-2-24 23:49:26


我不介意我再也不用将ads_name转换为objectid
static void RxlRxLib_getEnt(void)
{
    CPromptEntityResult result;
    CEditor::GetEntity(result, _T("\nSelect Entity: "));
    if(result.Status != Acad::eNormal)
    {
      CRxTrace::PrintStatus(result.Status, _T("Select Failed"));
      return;
    }
    AcDbEntityPointer pEnt(result.ObjectId,AcDb::kForRead);
    if(pEnt.openStatus() != Acad::eOk)
    {
      CRxTrace::PrintStatus(pEnt.openStatus(), _T("Select Failed"));
      return;
    }
    acutPrintf(_T("\nLayer is %s") ,pEnt->layer());
}

Kerry 发表于 2010-2-24 23:54:09

Acad::PromptStatus<br>今天学到了一些新东西

Kerry 发表于 2010-2-25 03:19:40


嘿嘿,很高兴我能帮助
我总是喜欢.NET API将所有acedxxx函数包装成易于使用的格式的方式,像acedNEntSelP这样的函数可能是一个真正的痛苦,必须将所有ads_xxx项转换为它们的Arx等效项。我开始包装一些旧功能,使它们更加用户友好......当,瞧瞧。我发现它已经在ArcDbg中完成了,我只是在改变一些事情。

Kerry 发表于 2010-2-25 03:36:18


那将是ArxDbg,是吗?

Kerry 发表于 2010-2-25 03:38:36


那就是ArxDbg,是吗

是的,谢谢
页: [1]
查看完整版本: 原生包装