明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2024|回复: 4

CAD中的字体乱码问题?>

[复制链接]
发表于 2005-9-7 16:59:00 | 显示全部楼层 |阅读模式

void addtext(char textString[512])
{
 
 AcDbBlockTable *pBlockTablew;
 acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTablew, AcDb::kForRead);
 AcDbBlockTableRecord *pBlockTableRecordw;
 pBlockTablew->getAt(ACDB_MODEL_SPACE, pBlockTableRecordw, AcDb::kForWrite);
 pBlockTablew->close();


 AcGePoint3d textPosition(10.0, 10.0, 0.0);
 AcGePoint3d atextPosition(20.0, 10.0, 0.0);
 //char textString[512] = "建设项目选址意见书[2005字]    号红线附图";
 double textHeight = 5.5296;
 double textWidthFactor = 0.8000;
 double textRotation = 0.0;
   
 AcDbText *pText=new AcDbText(textPosition, textString, AcDbObjectId::kNull, textHeight, textRotation);
 pText->setHorizontalMode(AcDb::kTextMid);
 pText->setAlignmentPoint(atextPosition);
   //???? pText->setTextStyle(1);//=HZTXT;

 AcDbObjectId textId;
 pBlockTableRecordw->appendAcDbEntity(textId, pText);
 pBlockTableRecordw->close();
 pText->close();
}

如上   我在执行文字标注时 用到这个函数

AcDbText *pText=new AcDbText(textPosition, textString, AcDbObjectId::kNull, textHeight, textRotation);

结果文字是乱码,请问是不是AcDbObjectId::kNull这个变量需要改一下,我想字体设置成:HZTXT,怎么改?

发表于 2005-9-8 08:52:00 | 显示全部楼层
我帮你顶
 楼主| 发表于 2005-9-8 10:49:00 | 显示全部楼层

共享一段mm给我的代码    一起研究!

 

  AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase ();

      AcDbBlockTable *pBT;

      AcDbBlockTableRecord *pBTR;

      Acad::ErrorStatus  es; //打开数据库->块表->块表记录

es = pDb->getBlockTable (pBT,AcDb::kForRead );

      // ERROR HANDLE

      es = pBT->getAt (ACDB_MODEL_SPACE,pBTR,AcDb::kForWrite );

//get the standard text style

      AcDbTextStyleTable *pTST;

      AcDbTextStyleTableRecord *pTSTR;

      es = pDb->getTextStyleTable (pTST,AcDb::kForRead );

//文字样式表-〉文字样式表记录-〉打开记录读取

AcDbObjectId idTextStyle;

      es = pTST->getAt("Standard",idTextStyle);

      es = pTST->getAt("Standard",pTSTR,AcDb::kForWrite );

      pTSTR->setFileName("iso");//****

      if(es != Acad::eOk){

          acutPrintf("fail to get the standard text style\n");

          }

      //es = acdbOpenObject(pEnt,idTextStyle,AcDb::kForRead );

      AcDbMText *pText = new AcDbMText();

      pText->setLocation (AcGePoint3d(10,10,0));

      pText->setTextStyle (idTextStyle);

      pText->setRotation (0.5);

      pText->setContents ("\\T1.2;this is only simple char");

      pText->setColorIndex (1);

      AcDbObjectId idTxt = AcDbObjectId::kNull ;

      pBTR->appendAcDbEntity(idTxt,pText);

      pText->close();//文本对象

pBTR->close();//块表记录

pBT->close();//块表     

pTST->close();//文字样式表

pTSTR->close();//文字样式表记录

发表于 2005-9-8 10:58:00 | 显示全部楼层

首先应该看看有没有缺少字体文件,然后考虑文字样式的设置问题

 楼主| 发表于 2005-9-8 14:19:00 | 显示全部楼层
本帖最后由 作者 于 2005-9-8 14:39:36 编辑

楼上说的对  我的问题解决了,按照上个程序,设置字体如下:

es = pTST->getAt("Standard",pTSTR,AcDb::kForWrite );     
  pTSTR->setFileName("HZTXT");

然后在CAD中输入:style

新建一个字体样式:HZTXT

选中大字体,然后选中txt.shx,后面选中:hztxt

运行一下,一切OK!!!(附上字体文件)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 03:54 , Processed in 0.184903 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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