111111 发表于 2004-3-30 17:42:00

求教用ARX实现CAD屏幕上文本文字的输出

各位大哥:


               谁能告诉我如何用ARX实现CAD屏幕上文本文字的输出,就象调用CAD命令mtext一样的


效果,是用acedTextBox()方法吗?能举个例子吗?


       小弟这里先谢谢了!!!!

111111 发表于 2004-3-31 09:29:00

求求各位指点一下吧!!!!

fayifu 发表于 2004-4-5 08:37:00

AcDbTextStyleTable *pTextTbl;<BR>                                                acdbHostApplicationServices()-&gt;workingDatabase()-&gt;getSymbolTable(pTextTbl, AcDb::kForWrite);<BR>                                                AcDbObjectId recId;<BR>                                                pTextTbl-&gt;getAt("仿宋_GB2312",recId);        <BR>                                                pTextTbl-&gt;close();<BR>                                                pText-&gt;setTextStyle(recId);<BR>                                                /////////////////////////////////////////////////////////////                <BR>                                                pText-&gt;setHeight(3.0);<BR>                                                pText-&gt;setWidthFactor(0.7);<BR>                                                pText-&gt;setPosition(pt);<BR>                                                //pText-&gt;setHorizontalMode(AcDb::kTextMid);//设置文本对齐方式<BR>                                                pText-&gt;setTextString(GetWeather(sName));<BR>                                                AcDbObjectId textId;<BR>                                                addToModelSpace(textId,pText);//写应力数


Acad::ErrorStatus addToModelSpace(AcDbObjectId &amp;objId, AcDbEntity* pEntity)<BR>{<BR>                       Acad::ErrorStatus                               es = Acad::eOk;<BR>                       AcDbBlockTable                                                       *pBlockTable;<BR>                       AcDbBlockTableRecord       *pSpaceRecord;


                       acdbHostApplicationServices()-&gt;workingDatabase()<BR>                                                       -&gt;getSymbolTable(pBlockTable, AcDb::kForRead);


                       pBlockTable-&gt;getAt(ACDB_MODEL_SPACE, pSpaceRecord,<BR>                                                       AcDb::kForWrite);


                       pSpaceRecord-&gt;appendAcDbEntity(objId, pEntity);


                       pBlockTable-&gt;close();<BR>                       pEntity-&gt;close();<BR>                       pSpaceRecord-&gt;close();<BR>                       return es;<BR>}

111111 发表于 2004-4-5 08:42:00

小弟这里先谢谢了!!!!!

111111 发表于 2004-4-5 16:17:00

按照楼上的指点,写出如下的代码,可屏幕输出却是??????!,我觉得可能还是没有


没有应用中文字体,那么应该如何改呢,错误在哪?请继续指点!!!!


void settextstyle(AcDbText *pText)                       //参数为AcDbText *&amp;pText也一样<BR>{<BR>               AcGePoint3d startpoint(500,500,0);<BR>               AcDbTextStyleTable *pTextTbl;<BR>                                       acdbHostApplicationServices()-&gt;workingDatabase()-&gt;getSymbolTable(pTextTbl, AcDb::kForWrite);<BR>                                       AcDbObjectId recId;<BR>                                       pTextTbl-&gt;getAt("仿宋_GB2312",recId); <BR>                                       pTextTbl-&gt;close();<BR>                                       pText-&gt;setTextStyle(recId);<BR>                                       pText-&gt;setHeight(3.0);<BR>                                       pText-&gt;setWidthFactor(0.7);<BR>                                       pText-&gt;setPosition(startpoint);<BR>                                       pText-&gt;setHorizontalMode(AcDb::kTextMid);//设置文本对齐方式<BR>                                       pText-&gt;setTextString("这是一个测试!");<BR>}


void drawtext()<BR>{       <BR>               AcDbText*       ptextout=new AcDbText();<BR>               settextstyle(ptextout);<BR>               AcDbBlockTable *pblocktable;<BR>               acdbHostApplicationServices()-&gt;workingDatabase()-&gt;getSymbolTable(pblocktable,AcDb::kForWrite);<BR>               AcDbBlockTableRecord *pblockrecord;<BR>               pblocktable-&gt;getAt(ACDB_MODEL_SPACE,pblockrecord,AcDb::kForWrite);<BR>               pblocktable-&gt;close();<BR>               AcDbObjectId id;<BR>               pblockrecord-&gt;appendAcDbEntity(id,ptextout);<BR>               pblockrecord-&gt;close();<BR>               ptextout-&gt;close();<BR>}
页: [1]
查看完整版本: 求教用ARX实现CAD屏幕上文本文字的输出