[求助]加入AcdbTEXT实体后怎么改变它的坐标呢?
<p> 如题,我现在构造了一个AcdbText实体并加进了图纸中,我现在要编程移动它的位置,但好像不行。</p><p>利用AcdbText::setpositon()并不能移动它的位置,这是什么原因呢,难道ObjectARX对AcdbText实体不能移动位置吗? Autodesk公司没有提供这个功能的函数吗?</p> <p>是否可以把你修改Text位置的代码传上来看看。</p>
<p>setPosition函数应该没有问题。</p> <p><font face="Verdana">AcDbText* pText=new AcDbText;<br/>pText->setTextStyle(0);<br/>pText->setTextString(datestr);<br/>pText->setPosition(AcGePoint3d(500,100,0));//这里设置位置之后就不能修改了,如果我想修改这个位置怎么办?</font></p>
<p><font face="Verdana">pText->setHorizontalMode(AcDb::kTextRight);<br/>pText->setVerticalMode(AcDb::kTextBottom);<br/>pText->setAlignmentPoint(AcGePoint3d(500,100,0));<br/>pText->adjustAlignment(acdbCurDwg());<br/>addToModelSpace(pText->id(), pText);</font></p> <p><font face="Verdana">我已经写了一个段程序,你试试吧。这段代码我测试过了,没问题。</font></p>
<p><font face="Verdana">{<br/> //声明变量<br/> ads_name ssname;<br/> ads_point pt;<br/> int result = acedEntSel(_T("\n请选择一个Text实体:"),ssname,pt);<br/> if(result!=RTNORM) return;<br/> //将ads_name转为AcDbObjectId<br/> AcDbObjectId objId = AcDbObjectId::kNull;<br/> Acad::ErrorStatus es = acdbGetObjectId(objId,ssname);<br/> if (es!=Acad::eOk) return;<br/> //写方式打开要编辑的实体<br/> AcDbEntity* pEntity = NULL;<br/> es = acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);<br/> if (es!=Acad::eOk) return;<br/> //强制转换为AcDbText<br/> AcDbText* pText = AcDbText::cast(pEntity);<br/> if (pText!=NULL)<br/> {<br/> //修改坐标到原点(你可以根据你的需求修改坐标点)<br/> es = pText->setPosition(AcGePoint3d(0,0,0));<br/> //切记要关闭实体,因为是写打开的<br/> pText->close();<br/> }<br/> else<br/> pEntity->close();<br/> }</font></p> <p>lz设定setPosition后,不能设定对齐模式,一旦设了对齐模式,AcDbText的位置就不能由setPosition来确定,而是使用setAlignmentPoint,这个在帮助文档有说明</p>
<p> </p>
<p>另外,pText->id(),这个是错误的,pText还没发送到modalspace,是没有Id的,而且你那函数addto...的第一个参数传入的id对象引用,是要修改的,因此不能使用pText->id()</p> 对,5楼说的很正确。 放进数据库。要移动旋转,transformBy
lz设定setPosition后,不能设定对齐模式,一旦设了对齐模式,AcDbText的位置就不能由setPosition来确定,而是使用setAlignmentPoint,这个在帮助文档有说明
另外,pText->id(),这个是错误的,pText还没发送到modalspace,是没有Id的,而且你那函数addto...的第一个参数传入的id对象引用,是要修改的,因此不能使用pText->id()
楼上的朋友,我也遇到这种问题,我设置了对齐点,但为什么绘制的文本都在原点(0,0,0)处,怎么回事啊?
页:
[1]