天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 164|回复: 1

ObjectArx字体样式操作封装

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-5-4 19:25:32 | 显示全部楼层 |阅读模式
    1. #pragma once
    2. #include <vector>
    3. class TextStyle
    4. {
    5. public:
    6.         TextStyle();
    7.         ~TextStyle();
    8.         // 创建字体样式:字体样式名、字体文件名、大字体文件名(亚洲国家用)
    9.         static AcDbObjectId Add(const ACHAR *name,
    10.                                                                   const ACHAR *fontFileName,
    11.                                                                   const ACHAR *bigfontFile);
    12.         // 获取字体样式表记录id:字体样式名称
    13.         static AcDbObjectId GetStyleId(const ACHAR *styleName);
    14. };
    15. #include "stdafx.h"
    16. #include "TextStylel.h"
    17. TextStyle::TextStyle(){}
    18. TextStyle::~TextStyle(){}
    19. // 创建字体样式:字体样式名、字体文件名、大字体文件名(亚洲国家用)
    20. AcDbObjectId TextStyle::Add(const ACHAR *name,
    21.                                                         const ACHAR *fontFileName,
    22.                                                         const ACHAR *bigfontFile)
    23. {        // 获得字体样式表
    24.         AcDbTextStyleTable *pTextStyle = NULL;
    25.         acdbHostApplicationServices()->workingDatabase()->
    26.                                 getTextStyleTable(pTextStyle, AcDb::kForWrite);
    27.         // 创建字体样式表记录
    28.         AcDbTextStyleTableRecord *pTextStyleRcd = new AcDbTextStyleTableRecord();
    29.         // 字体样式表记录添加:名称、字体文件名、比例、
    30.         pTextStyleRcd->setName(name);
    31.         pTextStyleRcd->setBigFontFileName(bigfontFile);
    32.         pTextStyleRcd->setFileName(fontFileName);
    33.         pTextStyleRcd->setXScale(1.0);
    34.         // 字体样式记录添加进字体样式表中
    35.         pTextStyle->add(pTextStyleRcd);
    36.         // 返回字体样式表记录id
    37.         AcDbObjectId styleId = pTextStyleRcd->objectId();
    38.         pTextStyleRcd->close();
    39.         pTextStyle->close();
    40.         return styleId;
    41. }
    42. // 获取字体样式表记录id:字体样式名称
    43. AcDbObjectId TextStyle::GetStyleId(const ACHAR *styleName)
    44. {
    45.         AcDbObjectId textStyleId = AcDbObjectId::kNull;
    46.         // 如果字体样式名非空
    47.         if (采用tcslen(styleName) > 0)
    48.         {       
    49.                 AcDbTextStyleTable *pTextStyle = NULL;
    50.                 // 获得字体样式表指针
    51.                 acdbHostApplicationServices()->workingDatabase()->
    52.                                         getTextStyleTable(pTextStyle, AcDb::kForRead);
    53.                 // 获得字体样式记录id 并赋值textStyleId
    54.                 pTextStyle->getAt(styleName, textStyleId);
    55.                 pTextStyle->close();
    56.         }
    57.         // 若字体样式名为空,返回kNull
    58.         return textStyleId;
    59. }
    60. #include "StdAfx.h"
    61. void AddCommands();
    62. void CreateTextStyle();
    63. #include "StdAfx.h"
    64. #include "Commands.h"
    65. #include "Editor.h"
    66. #include "TextStylel.h"
    67. void AddCommands()
    68. {        // 新建字体样式
    69.         Editor::AddCommand(L"Add", ACRX采用CMD采用MODAL, CreateTextStyle);
    70. }
    71. void CreateTextStyle()
    72. {
    73.         CString textStyleName = 采用T("TESTSTYLE");
    74.         // 获取TESTSTYLE字体样式id
    75.         AcDbObjectId txtstyleId = TextStyle::GetStyleId(textStyleName);
    76.         // 若为空,则创建
    77.         if (txtstyleId.isNull())
    78.         {        // 字体样式文件为CAD的fonts文件夹中的文件
    79.                 TextStyle::Add(textStyleName, 采用T("txt.shx"), 采用T("hztxt.shx"));
    80.         }
    81. }
    复制代码

     

     

     

     

    ObjectArx字体样式操作封装
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
     楼主| 发表于 2024-5-4 19:29:18 | 显示全部楼层
    1. objectARX获取当前图层所有文字样式
    2. void GetAllTextStyle(std::vector<CString> &textStyle)
    3. {
    4.     textStyle.clear();
    5.     AcDbTextStyleTable *pTextStyleTbl = NULL;
    6.     acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pTextStyleTbl, AcDb::kForRead);
    7.     AcDbTextStyleTableIterator *pIt = NULL;
    8.     pTextStyleTbl->newIterator(pIt);
    9.     for (;!pIt->done();pIt->step())
    10.     {
    11.         AcDbTextStyleTableRecord *pRcd = NULL;
    12.         if (pIt->getRecord(pRcd, AcDb::kForRead) == Acad::eOk)
    13.         {
    14.             TCHAR *szName = NULL;
    15.             pRcd->getName(szName);
    16.             if (采用tcslen(szName)>0)
    17.             {
    18.                 textStyle.push采用back(szName);
    19.             }
    20.             acutDelString(szName);
    21.             pRcd->close();
    22.         }
    23.     }
    24.     delete pIt;
    25.     pTextStyleTbl->close();
    26. }
    复制代码

     

     

     

     

    ObjectArx字体样式操作封装
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 08:01 , Processed in 0.174497 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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