找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 240|回复: 0

[每日一码] 创建文字样式,写文字,修改样式的代码

[复制链接]

1

主题

0

回帖

43

积分

管理员

积分
43
发表于 2024-3-14 20:16:48 | 显示全部楼层 |阅读模式
  1. static void ChangeStyle() {
  2.         AcDbObjectId styleId;
  3.         // Create a text style
  4.         {
  5.                 AcDbObjectPointer<AcDbTextStyleTable>
  6.                         pTextStyleTable(acdbCurDwg()->textStyleTableId(), AcDb::kForWrite);
  7.                 AcDbObjectPointer<AcDbTextStyleTableRecord> pStyle;
  8.                 pStyle.create();
  9.                 pStyle->setName(L"MyStyle");
  10.                 pStyle->setFileName(L"romans.shx");
  11.                 if (pTextStyleTable->add(styleId, pStyle.object()) != Acad::eOk)
  12.                 {
  13.                         pTextStyleTable->getAt(L"MyStyle", styleId);
  14.                 }
  15.         }
  16.         acedAlert(L"created text style");
  17.         AcDbObjectId idtext;
  18.         // Create some text
  19.         {
  20.                 AcDbObjectPointer<AcDbText> pText;
  21.                 pText.create();
  22.                 pText->setDatabaseDefaults();
  23.                 pText->setTextStyle(styleId);
  24.                 pText->setTextString(L"Some text");
  25.                 pText->setHeight(10);
  26.                 AcDbObjectPointer<AcDbBlockTableRecord>
  27.                         pSpace(acdbCurDwg()->currentSpaceId(), AcDb::kForWrite);
  28.                 pSpace->appendAcDbEntity(idtext, pText);
  29.         }
  30.         acTransactionManagerPtr()->flushGraphics();
  31.         acedUpdateDisplay();
  32.         acedAlert(L"created text");
  33.         {
  34.                 // Change the font file for the text style
  35.                 AcDbObjectPointer<AcDbTextStyleTableRecord>
  36.                         pStyle(styleId, AcDb::kForWrite);
  37.                 pStyle->setFileName(L"romand.shx");
  38.         }
  39.         {
  40.                 AcDbObjectPointer<AcDbBlockTableRecord>
  41.                         pSpace(acdbCurDwg()->currentSpaceId(), AcDb::kForRead);
  42.                 AcDbBlockTableRecordIterator *pIter = NULL;
  43.                 pSpace->newIterator(pIter);
  44.                 AcDbObjectId id;
  45.                 for (; !pIter->done(); pIter->step())
  46.                 {
  47.                         id.setNull();
  48.                         pIter->getEntityId(id);
  49.                         if (id.objectClass()->isDerivedFrom(AcDbText::desc()) ||
  50.                                 id.objectClass()->isDerivedFrom(AcDbMText::desc()) ||
  51.                                 id.objectClass()->isDerivedFrom(AcDbDimension::desc()) ||
  52.                                 id.objectClass()->isDerivedFrom(AcDbBlockReference::desc()))
  53.                         {
  54.                                 AcDbEntityPointer pEnt(id, AcDb::kForWrite);
  55.                                 if (pEnt.openStatus() == Acad::eOk)
  56.                                         pEnt->recordGraphicsModified();
  57.                         }
  58.                 }
  59.                 delete pIter;
  60.         }
  61.         acTransactionManagerPtr()->flushGraphics();
  62.         acedUpdateDisplay();
  63.         acedAlert(L"Custom Regen Current Space");
  64. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-11 00:46 , Processed in 0.111154 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表