|
- #pragma once
- #include <vector>
- class TextStyle
- {
- public:
- TextStyle();
- ~TextStyle();
- // 创建字体样式:字体样式名、字体文件名、大字体文件名(亚洲国家用)
- static AcDbObjectId Add(const ACHAR *name,
- const ACHAR *fontFileName,
- const ACHAR *bigfontFile);
- // 获取字体样式表记录id:字体样式名称
- static AcDbObjectId GetStyleId(const ACHAR *styleName);
- };
- #include "stdafx.h"
- #include "TextStylel.h"
- TextStyle::TextStyle(){}
- TextStyle::~TextStyle(){}
- // 创建字体样式:字体样式名、字体文件名、大字体文件名(亚洲国家用)
- AcDbObjectId TextStyle::Add(const ACHAR *name,
- const ACHAR *fontFileName,
- const ACHAR *bigfontFile)
- { // 获得字体样式表
- AcDbTextStyleTable *pTextStyle = NULL;
- acdbHostApplicationServices()->workingDatabase()->
- getTextStyleTable(pTextStyle, AcDb::kForWrite);
- // 创建字体样式表记录
- AcDbTextStyleTableRecord *pTextStyleRcd = new AcDbTextStyleTableRecord();
- // 字体样式表记录添加:名称、字体文件名、比例、
- pTextStyleRcd->setName(name);
- pTextStyleRcd->setBigFontFileName(bigfontFile);
- pTextStyleRcd->setFileName(fontFileName);
- pTextStyleRcd->setXScale(1.0);
- // 字体样式记录添加进字体样式表中
- pTextStyle->add(pTextStyleRcd);
- // 返回字体样式表记录id
- AcDbObjectId styleId = pTextStyleRcd->objectId();
- pTextStyleRcd->close();
- pTextStyle->close();
- return styleId;
- }
- // 获取字体样式表记录id:字体样式名称
- AcDbObjectId TextStyle::GetStyleId(const ACHAR *styleName)
- {
- AcDbObjectId textStyleId = AcDbObjectId::kNull;
- // 如果字体样式名非空
- if (采用tcslen(styleName) > 0)
- {
- AcDbTextStyleTable *pTextStyle = NULL;
- // 获得字体样式表指针
- acdbHostApplicationServices()->workingDatabase()->
- getTextStyleTable(pTextStyle, AcDb::kForRead);
- // 获得字体样式记录id 并赋值textStyleId
- pTextStyle->getAt(styleName, textStyleId);
- pTextStyle->close();
- }
- // 若字体样式名为空,返回kNull
- return textStyleId;
- }
- #include "StdAfx.h"
- void AddCommands();
- void CreateTextStyle();
- #include "StdAfx.h"
- #include "Commands.h"
- #include "Editor.h"
- #include "TextStylel.h"
- void AddCommands()
- { // 新建字体样式
- Editor::AddCommand(L"Add", ACRX采用CMD采用MODAL, CreateTextStyle);
- }
- void CreateTextStyle()
- {
- CString textStyleName = 采用T("TESTSTYLE");
- // 获取TESTSTYLE字体样式id
- AcDbObjectId txtstyleId = TextStyle::GetStyleId(textStyleName);
- // 若为空,则创建
- if (txtstyleId.isNull())
- { // 字体样式文件为CAD的fonts文件夹中的文件
- TextStyle::Add(textStyleName, 采用T("txt.shx"), 采用T("hztxt.shx"));
- }
- }
复制代码 |
|