王咣生 发表于 2004-6-21 10:10:00

AcDbLine和AcDb2dPolyline怎么转换为AcDbPolyline?

AcDbLine和AcDb2dPolyline怎么转换为AcDbPolyline?


谢谢!

liabcd 发表于 2004-7-25 22:19:00

//我所编写的一部分,<b>AcDb2dPolyline转换重要的是BULG</b>


<b>//AcDbLine很简单,只是取两端点坐标,从略</b>


if (pobj-&gt;isKindOf(AcDb2dPolyline::desc()))<BR>        {<BR>                AcDb2dPolyline *pLy2d;<BR>                AcDbObjectIterator *pVertIter;<BR>                pLy2d=AcDb2dPolyline::cast(pobj);<BR>                pVertIter=pLy2d-&gt;vertexIterator();<BR>                AcDb2dVertex *pVertex;<BR>                for(vertnum=0;!pVertIter-&gt;done();vertnum++,pVertIter-&gt;step())<BR>                {<BR>                        vertId=pVertIter-&gt;objectId();<BR>                        acdbOpenObject(pVertex,vertId,AcDb::kForRead);<BR>                        pt=pVertex-&gt;position();<BR>                        if (vertnum==0) <BR>                        {<BR>                                linewidth=pVertex-&gt;endWidth();<BR>                        }<BR>                        mypt.append(pt);<BR>                        pVertex-&gt;close();<BR>                }<BR>                pLy2d-&gt;upgradeOpen();<BR>                pLy2d-&gt;erase(Adesk::kTrue);<BR>                pLy2d-&gt;close();<BR>                delete pVertIter;<BR>        }


        for(i=0;i&lt;vertnum;i++)<BR>        {<BR>                curpt=mypt.at(i);<BR>                pkpt.x=curpt.x;<BR>                pkpt.y=curpt.y;<BR>                bg=0;<BR>                if (i&gt;0 &amp;&amp; i&lt;vertnum-1)<BR>                {<BR>//bgstart bgend--BULG求法从略


                        }<BR>                pPoly-&gt;addVertexAt(i,pkpt,bg);<BR>        }<BR>        if (vertnum&gt;2)<BR>        {<BR>                pkpt.x=startpt.x;<BR>                pkpt.y=startpt.y;<BR>                pPoly-&gt;addVertexAt(0,pkpt);<BR>                pPoly-&gt;setBulgeAt(1,bgstart);<BR>        }<BR>

easypower 发表于 2004-7-26 11:25:00

<FONT color=#ff0000>2dPolyline-&gt;Polyline</FONT>


Acad::ErrorStatus CDbGeCurve::Poly2dToLWPoly(AcDb2dPolyline *pPoly,AcDbPolyline *&amp; pLwpoly)<BR>{<BR>        if (!pPoly)<BR>                return Acad::eInvalidInput;





        Acad::ErrorStatus ret;


        AcDb::Poly2dType type;<BR>        type=pPoly-&gt;polyType();<BR>        if ((type==AcDb::k2dSimplePoly)||(type==AcDb::k2dFitCurvePoly)){<BR>                pLwpoly=new AcDbPolyline;<BR>                ret=pLwpoly-&gt;convertFrom((AcDbEntity *&amp;)pPoly,Adesk::kFalse);<BR>                if (ret!=Acad::eOk){<BR>                        delete pLwpoly;<BR>                        pLwpoly=NULL;<BR>                        return Acad::eNotImplementedYet;<BR>                }<BR>        }<BR>        else{<BR>                return Acad::eNotImplementedYet;<BR>        }<BR>        return Acad::eOk;<BR>}

shmily1023 发表于 2015-5-4 23:26:01

谢谢受用
页: [1]
查看完整版本: AcDbLine和AcDb2dPolyline怎么转换为AcDbPolyline?