• 【CAD】创建多行文本


    下面为OBJECT-ARX创建多行文本的代码,记录

    McDbMText* Mx::AddMText(IN McDbBlockTableRecord* pBlkRec,
    IN LPCTSTR pszContents,
    IN McGePoint3d pos,
    IN double width,
    IN double textHeight,
    IN double rotation /*= 0.0*/,
    IN McGeVector3d direction /*= McGeVector3d::kXAxis*/,
    IN int attachment /*= McDbMText::kTopLeft*/,
    IN int flowDirection /*= McDbMText::kLtoR*/,
    IN double dFactor /*= 1.0*/,
    IN McDb::LineSpacingStyle style /* = McDb::kAtLeast*/
    )
    {
    McDbObjectId retId;
    McDbMText* pMText = new McDbMText;
    pMText->setContents(pszContents);
    pMText->setLocation(pos);
    pMText->setWidth(width);
    pMText->setTextHeight(textHeight);
    pMText->setRotation(rotation);
    pMText->setDirection(direction);
    pMText->setAttachment(McDbMText::AttachmentPoint(attachment) );
    pMText->setFlowDirection(McDbMText::FlowDirection(flowDirection) );
    pMText->setLineSpacingFactor(dFactor);
    pMText->setLineSpacingFactor(style);
    pBlkRec->appendAcDbEntity(retId,pMText);
    return pMText;
    }

    实例:
    前期准备
    Acad::ErrorStatus es;
    AcDbDatabase * pDatabase;
    AcDbBlockTable *pBlockTable;
    McDbBlockTableRecord * pBTableRec1;
    pDatabase = MxDraw::GetDatabase(MxDraw::GetCurOcxHandle());
    es = pDatabase->getBlockTable(pBlockTable,McDb::kForRead);
    if(es != Acad::eOk){
    AfxMessageBox(_T("获得块表失败"));
    }
    es = pBlockTable->getAt(MCDB_MODEL_SPACE, pBTableRec1,McDb::kForWrite);
    if(es != Acad::eOk){
    AfxMessageBox(_T("获得块记录失败"));
    }
    McGePoint3d pos(0,0,0);
    AcDbObjectId textStyleId=CadDiyFunc::CreateTextStyle(_T("wzbzTextStyle"), _T("宋体"), 1);

    方法一
    McDbMText* mText = Mx::AddMText(pBTableRec1,_T("登鹳雀楼\P白日依山尽\P \P黄河入海流\P欲穷千里目\P更上一层楼"),pos,100,300,0,McGeVector3d::kXAxis,McDbMText::kTopCenter,McDbMText::kLtoR,1.0,McDb::kAtLeast);
    mText->setTextStyle(textStyleId);
    mText->close();

    方法二
    McDbObjectId retId;
    McDbMText* pMText = new McDbMText;
    pMText->setContents(_T("登鹳雀楼\P白日依山尽\P黄河入海流\P欲穷千里目\P更上一层楼"));
    pMText->setLocation(pos);
    pMText->setWidth(100);
    pMText->setTextHeight(30);
    pMText->setRotation(0);
    pMText->setAttachment(McDbMText::AttachmentPoint(McDbMText::kTopCenter) );
    pMText->setTextStyle(textStyleId);
    pBTableRec1->appendAcDbEntity(retId,pMText);
    pMText->close();

    善后
    pBTableRec1->close();
    pBlockTable->close();

    注:\P为换行 \P空格\P 换两行

  • 相关阅读:
    二分多重匹配(HDU5093)
    2-sat(and,or,xor)poj3678
    某个点到其他点的曼哈顿距离之和最小(HDU4311)
    第k最短路A*启发式搜索
    求树的直径和中心(ZOJ3820)
    并查集hdu4424
    map容器结构体离散化
    二维坐标系极角排序的应用(POJ1696)
    【进阶3-3期】深度广度解析 call 和 apply 原理、使用场景及实现(转)
    判断js数据类型的四种方法,以及各自的优缺点(转)
  • 原文地址:https://www.cnblogs.com/go2anywhere/p/4288215.html
Copyright © 2020-2023  润新知