如何显示文字
请问,在程序里如何写,才能让一段文字显示在下面图片的那个小框里面呢?或者是在CAD下弹出个对话框,输入一段文本后,我怎么把问题提取到图片中的那个小框中呢?请给点方面的事例,十分感谢. 拾取两个角点,求出中心点,然后添加文字,用中心对齐方式。 那用程序怎么才能把文字写到CAD上呢?能不能给点参考啊? AcDbText 我也有这个问题。不知道怎么用AcDbText (); 那位大虾能赐教AcDbText ()的使用问题,
谢谢!! 源码没头文件,及入口函数,这些自己定义吧,
void text()
{
AcDbBlockTable* pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pBlockTable,AcDb::kForRead);
AcDbBlockTableRecord* pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,
AcDb::kForWrite);
pBlockTable->close();
double ptt=
{
{0,0,0},
{420,0,0},
{420,297,0},
{0,297,0},
};
AcGePoint3d pt(ptt+100,ptt+100,ptt);
AcDbText* pText=new AcDbText;
pText->setHorizontalMode(AcDb::kTextRight);
pText->setAlignmentPoint(pt);
pText->setTextString("100");
pText->setTextStyle(AcDbObjectId::kNull);
pText->setHeight(30);
pText->setRotation(0);
AcDbObjectId pTextId;
pBlockTableRecord->appendAcDbEntity(pTextId,pText);
pBlockTableRecord->close();
pText->close();
} 没头文件及入口函数,自己定义。 AcDbDatabase *pDb = new AcDbDatabase;
AcDbBlockTable *pBlockTable;
pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close();
AcGePoint3d textPosition(120.0, 80.0, 0.0);
AcGePoint3d atextPosition(130.0, 80.0, 0.0);
char textString = "Auto Create Drawing";
double textHeight = 5.5296;
double textWidthFactor = 0.8000;
double textThickness = 0.0;
double textRotation = 0.0;
AcDbText *pText=new AcDbText(textPosition, textString, AcDbObjectId::kNull, textHeight, textRotation);
pText->setHorizontalMode(AcDb::kTextMid);//
pText->setAlignmentPoint(atextPosition); //
AcDbObjectId textId;
pBlockTableRecord->appendAcDbEntity(textId, pText);
pBlockTableRecord->close();
pText->close();
pDb->saveAs("测试文件.dwg");
delete pDb;
请问大家如何才能使"测试文件.dwg"中的文字能够正确设置?一打开文件,文字现在仍然是左对齐,只不过有中间对齐点,并且属性框中也这么显示。搞不定了,恳请大家帮帮。
谢谢XD空间的binbin和王咣生版主,问题搞定了。
(没头文件及入口函数,自己定义。)
功能:实现在后台数据库中正确添加文字,并且设置文字属性。关键是把后台数据库设置当前,最后设置回去。
AcDbDatabase *pOldDb = acdbHostApplicationServices()->workingDatabase();
AcDbDatabase *pDb = new AcDbDatabase;
acdbHostApplicationServices()->setWorkingDatabase(pDb);
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close();
AcGePoint3d textPosition(120.0, 80.0, 0.0);
AcGePoint3d atextPosition(130.0, 80.0, 0.0);
char textString = "Auto Create Drawing";
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); //
AcDbObjectId textId;
pBlockTableRecord->appendAcDbEntity(textId, pText);
pBlockTableRecord->close();
pText->close();
pDb->saveAs("测试文件.dwg");
acdbHostApplicationServices()->setWorkingDatabase(pOldDb);
delete pDb;
请问各位大侠,如何可以动态确定文字长度?因为希望可以把超出范围的文字,通过设置大小,或者比例因子来缩放回去。 我用了9楼的代码,我想9楼的代码的作用应该是在一个打开的DWG文件中,在设定的位置加上文字"Auto Create Drawing".最后是保存到"测试文件.dwg"这个文件中吧.
我运行的结果是:原来的那个DWG文件没有加上"Auto Create Drawing",而"文件名.dwg"这个文件中只显示"Auto Create Drawing",却没有其他任何图形或者文字.所以不知道问题出在哪里?
页:
[1]