如何用ARX实现直线的offset偏移功能?
<p>想实现直线的偏移,然后利用AcDbCurve::getOffsetCurves函数来实现,可是调试的时候,没有出现偏移出来的直线阿??程序又没有报错,这是怎么回事啊?</p><p>哪位高手指点阿!!!</p><p>程序如下:(lineId是已经创建好了的直线的ID)</p><p> AcDbLine * Pline;</p><p>double wide; //偏移量</p><p> acdbOpenObject(Pline, lineId, AcDb::kForRead);<br/> AcDbVoidPtrArray offsetCurves;<br/> Pline->getOffsetCurves(wide , offsetCurves);<br/> AcDbObjectId ofsID;<br/> enty.AppendEntityToBlockTable((AcDbEntity*)offsetCurves, ofsID); //把实体添加到块表记录中<br/> Pline->close();</p><p></p> <p>咋没有大侠来回呢?</p><p>俺自己换了个方法,改用acedCommand命令了,虽然没啥技术性可言,可只要能实现功能就好~</p> <p>用acedCommand命令还是遇到问题了。。。</p><p>acedCommand(RTSTR, "OFFSET", RTREAL, wide, RTLB , RTENAME , lineName1 , RTPOINT , pt1 , RTLE , RT3DPOINT, OffsetPoint, RTSTR, "", 0);</p><p>调试会出错,为什么呢?</p><p>请高人指点啊~~<br/></p> <p>你改成这样试试</p><p>acedCommand(RTSTR, _T("OFFSET"), RTREAL, wide, RTLB , RTENAME , lineName1 , RTPOINT , pt1 , RTLE , RT3DPOINT, OffsetPoint, RTSTR, _T(""), 0);</p><p></p> <p>将你的程序作如下修改;将OK</p><p>AcDbLine * Pline;<br/>double wide; //偏移量<br/> acdbOpenObject(Pline, lineId, AcDb::kForRead);<br/> AcDbVoidPtrArray offsetCurves;<br/>wide=3;//例如<br/> Pline->getOffsetCurves(wide , offsetCurves);<br/> AcDbObjectId ofsID;<br/>for(int i=0;i<offsetCurves.length();i++)<br/> enty.AppendEntityToBlockTable((AcDbEntity*)offsetCurves, ofsID); //把实体添加到块表记录中<br/> Pline->close();</p> <p>你可以程序中增加这个子函数</p><p>Acad::ErrorStatus<br/>addToModelSpace(AcDbObjectId &objId, AcDbEntity* pEntity)<br/>{<br/> AcDbBlockTable *pBlockTable;<br/> AcDbBlockTableRecord *pSpaceRecord;</p><p> acdbHostApplicationServices()->workingDatabase()<br/> ->getSymbolTable(pBlockTable, AcDb::kForRead);<br/> pBlockTable->getAt(ACDB_MODEL_SPACE, pSpaceRecord,<br/> AcDb::kForWrite);</p><p> pSpaceRecord->appendAcDbEntity(objId, pEntity);</p><p> pBlockTable->close();<br/> pEntity->close();<br/> pSpaceRecord->close();</p><p> return Acad::eOk;<br/>}</p><p>然后用这个函数把你偏移后的对象添加到图纸空间中去</p><p>Pline->getOffsetCurves(wide , offsetCurves);<br/>AcDbObjectId ofsID;<br/>addToModelSpace(ofsID, (AcDbEntity*)offsetCurves);<br/></p> gymic 发表于 2007-8-5 21:41 static/image/common/back.gif你可以程序中增加这个子函数Acad::ErrorStatusaddToModelSpace(AcDbObjectId &objId, AcDbEntity* pEntit ...
在进行偏移时需要指定偏移的方向,该怎么实现,请给予指点一下…… 学习了。。。。。。。。。。。。。 Fred0612 发表于 2011-11-18 21:12 static/image/common/back.gif
在进行偏移时需要指定偏移的方向,该怎么实现,请给予指点一下……
同问?麻烦指点下,呵呵 Fred0612 发表于 2011-11-18 21:12 static/image/common/back.gif
在进行偏移时需要指定偏移的方向,该怎么实现,请给予指点一下……
已知一个点pt ,和曲线curve,获得pt在曲线的getclosestpointto(最近点),获得此处的firstDeriv,由此得到切线方向,然后根据切线方向和点,用右手法则,判断方向(或者符号的正负)。
页:
[1]
2