lanwpbj 发表于 2010-8-25 13:44:00

请教extrudeAlongPath 沿路径拉伸的问题

<font face="宋体"><font color="#000000" size="5">我想画一个由圆管制成的框,我是先画一个圆,然后用</font><font color="#000000" size="5">extrudeAlongPath(const AcDbRegion* region,</font></font>
<p class="signatureInEnd"><font face="宋体"><font color="#000000" size="5">const AcDbCurve* path)</font><font color="#000000" size="5">函数进行拉伸,但是这个path要求是&nbsp;</font></font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDbLine/AcDbLine.htm"><font face="宋体" color="#000000" size="5">AcDbLine</font></a><font face="宋体" color="#000000" size="5">, </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDbArc/AcDbArc.htm"><font face="宋体" color="#000000" size="5">AcDbArc</font></a><font face="宋体" color="#000000" size="5">, </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDbCircle/AcDbCircle.htm"><font face="宋体" color="#000000" size="5">AcDbCircle</font></a><font face="宋体" color="#000000" size="5">, </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDbEllipse/AcDbEllipse.htm"><font face="宋体" color="#000000" size="5">AcDbEllipse</font></a><font face="宋体" color="#000000" size="5">, </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDbSpline/AcDbSpline.htm"><font face="宋体" color="#000000" size="5">AcDbSpline</font></a><font face="宋体" color="#000000" size="5">, </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDb2dPolyline/AcDb2dPolyline.htm"><font face="宋体" color="#000000" size="5">AcDb2dPolyline</font></a><font face="宋体" color="#000000" size="5">, or a non-spline fit </font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDb3dPolyline/AcDb3dPolyline.htm"><font face="宋体" color="#000000" size="5">AcDb3dPolyline</font></a><font face="宋体" color="#000000" size="5">&nbsp;等,但是我的path偏偏是</font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDb2dPolyline/AcDb2dPolyline.htm"><font face="宋体" color="#000000" size="5">AcDbPolyline</font></a><font size="5"><font color="#000000"><font face="宋体">。因为我的path是由直线和圆角组成的,我用的是AcDbPolyline::addVertexAt(unsigned int index,const AcGePoint2d&amp; pt,double bulge = 0.,double startWidth = -1.,double endWidth = -1)来创建这条path,而</font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDb2dPolyline/AcDb2dPolyline.htm"><font face="宋体">AcDb2dPolyline</font></a><font face="宋体">和</font><a href="mk:@MSITStore:E:\各类工具\CAD开发\ObjectARX%202002\docs\arxref.chm::/AcDb/AcDb3dPolyline/AcDb3dPolyline.htm"><font face="宋体">AcDb3dPolyline</font></a><font face="宋体">&nbsp;都没有找到能创建直线和圆角连接的方法。请高人指点,我这个path的类型如何解决。</font><font face="Verdana"></p></font></font></font>

lanwpbj 发表于 2010-8-25 15:33:00

<p>经过尝试,发现<font face="Verdana">AcDbPolyline</font>形的也是可以作为路径的。看了张帆的教程才知道我原来错误原因,教材中有这么一句话:“在执行extrudeAlongPath函数时,region 和path都必须是模型空间中的实体”。所以要来个迂回操作,先把东西入库,然后再取出来,真NND脱裤子放屁。 先用<font face="Verdana">&nbsp;PostToModelSpace将<font face="Verdana">AcDbPolyline</font>创建的指针存起来,得到一个ID,再用<font face="Verdana">acdbOpenObject将这个ID的指针读回来,然后用<font face="Verdana">extrudeAlongPath</font>就正常了,奇怪的是,我对region 并没有进行这种入库出库的操作,郁闷。</font></font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>

lanwpbj 发表于 2010-8-26 11:50:00

<p>另外有一点值得注意的,就是拉伸的起点,你生成一个面域,想使它沿路径拉伸,那么这个面域的位置就要在路径的起点。我开始的时候一看是环形路径,以为只要在路径上随便某点都可以,结果形状是出来了,但位置老是不对,琢磨半天才明白过来,后来又试了下把面域画在与路径不相交的其它位置,发现路径随着移到面域的位置去了。一点收获与各位共享。</p>
页: [1]
查看完整版本: 请教extrudeAlongPath 沿路径拉伸的问题