CAD中的字体乱码问题?>
<P>void addtext(char textString)<BR>{<BR> <BR> AcDbBlockTable *pBlockTablew;<BR> acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTablew, AcDb::kForRead);<BR> AcDbBlockTableRecord *pBlockTableRecordw;<BR> pBlockTablew->getAt(ACDB_MODEL_SPACE, pBlockTableRecordw, AcDb::kForWrite);<BR> pBlockTablew->close();</P><P><BR> AcGePoint3d textPosition(10.0, 10.0, 0.0);<BR> AcGePoint3d atextPosition(20.0, 10.0, 0.0);<BR> //char textString = "建设项目选址意见书 号红线附图";<BR> double textHeight = 5.5296;<BR> double textWidthFactor = 0.8000;<BR> double textRotation = 0.0;<BR> <BR> AcDbText *pText=new AcDbText(<FONT color=#1111ee>textPosition, textString, AcDbObjectId::kNull, textHeight, textRotation</FONT>);<BR> pText->setHorizontalMode(AcDb::kTextMid);<BR> pText->setAlignmentPoint(atextPosition); <BR><FONT color=#e61a94> //???? pText->setTextStyle(1);//=HZTXT;</FONT></P>
<P> AcDbObjectId textId;<BR> pBlockTableRecordw->appendAcDbEntity(textId, pText); <BR> pBlockTableRecordw->close();<BR> pText->close();<BR>}</P>
<P>如上 我在执行文字标注时 用到这个函数</P>
<P>AcDbText *pText=new AcDbText(textPosition, textString, AcDbObjectId::kNull, textHeight, textRotation);</P>
<P>结果文字是乱码,请问是不是AcDbObjectId::kNull这个变量需要改一下,我想字体设置成:HZTXT,怎么改?</P> 我帮你顶 <P>共享一段mm给我的代码 一起研究!</P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 50%"><FONT face=宋体> </P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase ();<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> AcDbBlockTable *pBT;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> AcDbBlockTableRecord *pBTR;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> Acad::ErrorStatus es; //打开数据库->块表->块表记录 <o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%">es = pDb->getBlockTable (pBT,AcDb::kForRead );<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"> // ERROR HANDLE<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"> es = pBT->getAt (ACDB_MODEL_SPACE,pBTR,AcDb::kForWrite );<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"><o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%">//get the standard text style<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"> AcDbTextStyleTable *pTST;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"> AcDbTextStyleTableRecord *pTSTR;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%"> es = pDb->getTextStyleTable (pTST,AcDb::kForRead );<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; LINE-HEIGHT: 150%">//文字样式表-〉文字样式表记录-〉打开记录读取<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%">AcDbObjectId idTextStyle;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> es = pTST->getAt("Standard",idTextStyle);<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> es = pTST->getAt("Standard",pTSTR,AcDb::kForWrite );<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pTSTR->setFileName("iso");//<o:p>****</o:p>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"><o:p></o:p></P> if(es != Acad::eOk){<o:p></o:p>
<P></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> acutPrintf("fail to get the standard text style\n");<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> }<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"><o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> //es = acdbOpenObject(pEnt,idTextStyle,AcDb::kForRead );<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"><o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> AcDbMText *pText = new AcDbMText();<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->setLocation (AcGePoint3d(10,10,0));<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->setTextStyle (idTextStyle);<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->setRotation (0.5);<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->setContents ("\\T1.2;this is only simple char");<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->setColorIndex (1);<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> AcDbObjectId idTxt = AcDbObjectId::kNull ;<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pBTR->appendAcDbEntity(idTxt,pText);<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"><o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%"> pText->close();//文本对象<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%">pBTR->close();//块表记录<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%">pBT->close();//块表 <o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%">pTST->close();//文字样式表<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt; LINE-HEIGHT: 150%">pTSTR->close();//文字样式表记录<o:p></o:p></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 50%"></FONT></P> <P>首先应该看看有没有缺少字体文件,然后考虑文字样式的设置问题</P> 本帖最后由 作者 于 2005-9-8 14:39:36 编辑 <br /><br /> <P>楼上说的对 我的问题解决了,按照上个程序,设置字体如下:</P>
<P>es = pTST->getAt("Standard",pTSTR,AcDb::kForWrite ); <BR> pTSTR->setFileName("HZTXT");</P>
<P>然后在CAD中输入:style</P>
<P>新建一个字体样式:HZTXT</P>
<P>选中大字体,然后选中txt.shx,后面选中:hztxt </P>
<P>运行一下,一切OK!!!(附上字体文件)</P>
页:
[1]