天气与日历 切换到窄版

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

ObjectArx字体样式操作封装

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 82 天

    [LV.6]常住居民II

    1591

    主题

    204

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
    发表于 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的每日心情
    开心
    3 天前
  • 签到天数: 82 天

    [LV.6]常住居民II

    1591

    主题

    204

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
     楼主| 发表于 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|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-19 05:52 , Processed in 0.060492 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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