- UID
- 359752
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-12-2
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
小弟初学arx, 用AcDBtext的构造函数
AcDbText(position,text,style,height,rotation)
生成的文本(仅限于角度为90度的,水平文本没有问题)为什么用acad的mirror命令对称后会改变(非mirrtext),如附图中的DN25,
而DN50是我在ACAD中用text命令生成的,就不会改变,请各位大侠指点。
AcDbObjectId CreateText( const AcGePoint3d& position,
const char* text,AcDbObjectId style = AcDbObjectId::kNull,
double height=0,double rotation=0, const char * layer="0wdoc")
{
AcDbText * PipeDiameter=new AcDbText(position,text,AcDbObjectId::kNull,height,90/*rotation*/);
// 获得当前图形数据库的符号表
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable,
AcDb::kForRead);
// 获得符号表中的模型空间块表记录指针,用于添加对象
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
pBlockTable->close();
// 将文本添加到模型空间块表记录中
AcDbObjectId TextId;
PipeDiameter->setLayer(layer,AcDb::kTextLeft); // 设置文本所在图层
PipeDiameter->setWidthFactor(0.7); // 设置文本宽度因子
PipeDiameter->setHorizontalMode(AcDb::kTextCenter); // 设置文本横向模式
PipeDiameter->setVerticalMode(AcDb::kTextBottom); // 设置文本竖向模式
//AcGePoint3d Aposition(position[0]+100,position[1],position[2]);
PipeDiameter->setAlignmentPoint(position);
AcGeVector3d normal(0, 0, 1);
PipeDiameter->setNormal(normal);
//PipeDiameter->setTextStyle("back");
PipeDiameter->setAlignmentPoint(position); // 恢复文本位置(设置文本横向模式,改动到了0,0点
pBlockTableRecord->appendAcDbEntity(TextId,PipeDiameter);
// 关闭块表记录指针和文本指针
pBlockTableRecord->close();
PipeDiameter->close();
// 返回文本ID号
return TextId;
} |
|