明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3136|回复: 7

[求助]加入AcdbTEXT实体后怎么改变它的坐标呢?

[复制链接]
发表于 2010-9-8 11:15:00 | 显示全部楼层 |阅读模式

     如题,我现在构造了一个AcdbText实体并加进了图纸中,我现在要编程移动它的位置,但好像不行。

利用AcdbText::setpositon()并不能移动它的位置,这是什么原因呢,难道ObjectARX对AcdbText实体不能移动位置吗? Autodesk公司没有提供这个功能的函数吗?

发表于 2010-9-8 13:15:00 | 显示全部楼层

是否可以把你修改Text位置的代码传上来看看。

setPosition函数应该没有问题。

 楼主| 发表于 2010-9-8 19:06:00 | 显示全部楼层

AcDbText* pText=new AcDbText;
pText->setTextStyle(0);
pText->setTextString(datestr);
pText->setPosition(AcGePoint3d(500,100,0));//这里设置位置之后就不能修改了,如果我想修改这个位置怎么办?

pText->setHorizontalMode(AcDb::kTextRight);
pText->setVerticalMode(AcDb::kTextBottom);
pText->setAlignmentPoint(AcGePoint3d(500,100,0));
pText->adjustAlignment(acdbCurDwg());
addToModelSpace(pText->id(), pText);

发表于 2010-9-9 09:08:00 | 显示全部楼层

我已经写了一个段程序,你试试吧。这段代码我测试过了,没问题。

{
  //声明变量
  ads_name ssname;
  ads_point pt;
  int result = acedEntSel(_T("\n请选择一个Text实体:"),ssname,pt);
  if(result!=RTNORM) return;
  //将ads_name转为AcDbObjectId
  AcDbObjectId objId = AcDbObjectId::kNull;
  Acad::ErrorStatus es = acdbGetObjectId(objId,ssname);
  if (es!=Acad::eOk) return;
  //写方式打开要编辑的实体
  AcDbEntity* pEntity = NULL;
  es = acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);
  if (es!=Acad::eOk) return;
  //强制转换为AcDbText
  AcDbText* pText = AcDbText::cast(pEntity);
  if (pText!=NULL)
  {
   //修改坐标到原点(你可以根据你的需求修改坐标点)
   es = pText->setPosition(AcGePoint3d(0,0,0));
   //切记要关闭实体,因为是写打开的
   pText->close();
  }
  else
   pEntity->close();
 }

发表于 2010-9-10 10:18:00 | 显示全部楼层

lz设定setPosition后,不能设定对齐模式,一旦设了对齐模式,AcDbText的位置就不能由setPosition来确定,而是使用setAlignmentPoint,这个在帮助文档有说明

 

另外,pText->id(),这个是错误的,pText还没发送到modalspace,是没有Id的,而且你那函数addto...的第一个参数传入的id对象引用,是要修改的,因此不能使用pText->id()

发表于 2011-5-16 11:34:32 | 显示全部楼层
对,5楼说的很正确。
发表于 2011-5-16 20:37:53 | 显示全部楼层
放进数据库。要移动旋转,transformBy
发表于 2012-3-8 19:10:47 | 显示全部楼层

lz设定setPosition后,不能设定对齐模式,一旦设了对齐模式,AcDbText的位置就不能由setPosition来确定,而是使用setAlignmentPoint,这个在帮助文档有说明

另外,pText->id(),这个是错误的,pText还没发送到modalspace,是没有Id的,而且你那函数addto...的第一个参数传入的id对象引用,是要修改的,因此不能使用pText->id()



楼上的朋友,我也遇到这种问题,我设置了对齐点,但为什么绘制的文本都在原点(0,0,0)处,怎么回事啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 08:18 , Processed in 0.141734 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表