zoukankan      html  css  js  c++  java
  • 【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 换两行

  • 相关阅读:
    asp.net控件开发基础(转)
    如何在C#中直接操作C++结构体(转)
    如何打造自己的代码段
    WeifenLuo.WinFormsUI.Docking.dll 源码分析(一)
    软件竞标流程与要点【转】
    C#进制转换
    使用 DpaToolkit 对 C#类库进行反向建模
    算法的时间复杂度(计算实例)
    C#操作SQLServer的Image字段
    不同进制之间的转换
  • 原文地址:https://www.cnblogs.com/go2anywhere/p/4288215.html
Copyright © 2011-2022 走看看