傻哥哥 发表于 2004-11-2 18:43:00

求教:怎么获得多段线的长度????

我一直没有找到相关的函数,各位帮帮我

王咣生 发表于 2004-11-2 22:10:00

回复

参考:


static void GetCurveLength_Len(void)<BR>        {<BR>                // Add your code for command GetCurveLength._Len here<BR>                ads_name en;<BR>                ads_point pt;<BR>                int rc;<BR>                rc = acedEntSel("\nSelect an entity: ", en, pt);<BR>                if (rc == RTNORM)<BR>                {<BR>                        AcDbObjectId eId;<BR>                        acdbGetObjectId(eId, en);<BR>                        AcDbObjectPointer &lt;AcDbEntity&gt; pEnt (eId, AcDb::kForRead);<BR>                        if ((_stricmp(pEnt-&gt;isA()-&gt;name(), "AcDbPolyline") == 0) ||<BR>                                (_stricmp(pEnt-&gt;isA()-&gt;name(), "AcDb2dPolyline") == 0))<BR>                        {<BR>                                AcDbCurve *pCurve = AcDbCurve::cast(pEnt.object());<BR>                                double endParam;<BR>                                pCurve-&gt;getEndParam(endParam);


                                double len;<BR>                                pCurve-&gt;getDistAtParam(endParam, len);


                                CString str;<BR>                                str.Format(_T("%f"), len);<BR>                                acedAlert(str);<BR>                        }<BR>                }<BR>        }

easypower 发表于 2004-11-3 10:57:00

if ((_stricmp(pEnt-&gt;isA()-&gt;name(), "AcDbPolyline") == 0) ||<BR>                                (_stricmp(pEnt-&gt;isA()-&gt;name(), "AcDb2dPolyline") == 0))


       


改成

<PRE class=prog_in_0>if (pEnt-&gt;isKindOf(AcDbCurve::desc()))</PRE><PRE class=prog_in_0>比较好</PRE>
页: [1]
查看完整版本: 求教:怎么获得多段线的长度????