zoukankan      html  css  js  c++  java
  • CAD中用户选择实体

    在CAD的很多操作中都会有需要用户选择实体的时候,这里将我最近项目中用到的方法分享一下,程序原意是希望用户选择一个单行文本或者多行文本,并返回所选文本的内容,直接上代码:

    CString CPaintBar::GetEncyrptCode()
    {
        CString sNull = _T("");
        //选择单文本或者多文本
        ads_name ent;
        ads_point pt;
        int nRs = acedEntSel(_T("
    请选择加入的内容:"), ent, pt);
        if (RTNORM != nRs)
        {
            AfxMessageBox(_T("获取失败!"));
            acedSSFree(ent);
            return sNull;
        }
    
        //获得所选实体Id
        AcDbObjectId entId;
        Acad::ErrorStatus es = acdbGetObjectId(entId, ent);
        if (Acad::eOk != es)
        {
            AfxMessageBox(_T("获取id失败!"));
            acedSSFree(ent);
            return sNull;
        }
        acedSSFree(ent);
    
        //判断所选实体是否是单文本或者多文本
        AcDbEntity *pEnt = NULL;
        es = acdbOpenObject(pEnt, entId, AcDb::kForRead);
        if (Acad::eOk != es)
        {
            AfxMessageBox(_T("获取实体失败!"));
            return sNull;
        }
        CString str;
        if (pEnt->isKindOf(AcDbText::desc()))
        {
            AcDbText *pText = NULL;
            pText = AcDbText::cast(pEnt);
            str = pText->textString();
            pText->close();
        }
        else if (pEnt->isKindOf(AcDbMText::desc()))
        {
            AcDbMText *pmText = NULL;
            pmText = AcDbMText::cast(pEnt);
            str = pmText->contents();
            pmText->close();
        }
        else
        {
            AfxMessageBox(_T("获取实体不是文本类型!"));
            pEnt->close();
            return sNull;
        }
        pEnt->close();
        return str;
    }
  • 相关阅读:
    项目需求分析
    对软件开发的感想
    趣拼图最后完成及总结
    UML用例图
    数据流图和数据流程图
    第三代迭代目标
    Scrum的三种角色划分及小组成员分工
    WBS Model
    团队开发—百科全书软件项目
    开发流程
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/5360089.html
Copyright © 2011-2022 走看看