ObjectARX 发表于 2005-5-9 13:22:00

如何显示文字



请问,在程序里如何写,才能让一段文字显示在下面图片的那个小框里面呢?或者是在CAD下弹出个对话框,输入一段文本后,我怎么把问题提取到图片中的那个小框中呢?请给点方面的事例,十分感谢.

lonelyhero 发表于 2005-5-9 16:25:00

拾取两个角点,求出中心点,然后添加文字,用中心对齐方式。

ObjectARX 发表于 2005-5-9 17:12:00

那用程序怎么才能把文字写到CAD上呢?能不能给点参考啊?

azx 发表于 2005-5-11 20:15:00

AcDbText

zhengjie 发表于 2005-5-17 15:30:00

我也有这个问题。不知道怎么用AcDbText ();

83694222 发表于 2005-5-25 17:09:00

那位大虾能赐教AcDbText ()的使用问题,
谢谢!!

silent 发表于 2005-5-28 13:45:00

源码没头文件,及入口函数,这些自己定义吧,
       
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();
}

freejustin 发表于 2005-6-20 18:46:00

没头文件及入口函数,自己定义。         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"中的文字能够正确设置?一打开文件,文字现在仍然是左对齐,只不过有中间对齐点,并且属性框中也这么显示。搞不定了,恳请大家帮帮。

freejustin 发表于 2005-6-22 11:43:00


谢谢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;       
请问各位大侠,如何可以动态确定文字长度?因为希望可以把超出范围的文字,通过设置大小,或者比例因子来缩放回去。

willcan 发表于 2005-8-25 08:41:00

我用了9楼的代码,我想9楼的代码的作用应该是在一个打开的DWG文件中,在设定的位置加上文字"Auto Create Drawing".最后是保存到"测试文件.dwg"这个文件中吧.
我运行的结果是:原来的那个DWG文件没有加上"Auto Create Drawing",而"文件名.dwg"这个文件中只显示"Auto Create Drawing",却没有其他任何图形或者文字.所以不知道问题出在哪里?
页: [1]
查看完整版本: 如何显示文字