AO中如何判斷polyline的型別

2021-04-19 00:44:30 字數 1632 閱讀 1828

遇到這樣乙個問題,如何判斷得到的polyline物件是否為圓弧,簡單思考後直接判斷polyline的gemetrytype,但是這是錯誤的。

正確的方法是qi得到對應的isegmentcollection介面,查詢segmentcollection中每個segment的gemetrytype,可以判斷polyline的構造線型.

原因倒是很簡單,複雜的polyline可以看成是多個segment的集合,但是當前我的每個polyline物件都是由乙個segment構成,所以可以按如下方式寫**:

ippolylinefeatureclass->search(null,variant_false,&ipfeaturecursor);

ipfeaturecursor->nextfeature(&ipfeature);

igeometryptr ipgeometry;

ipolylineptr ippolyline;

long  loid;

esrigeometrytype   enugeomtype;

ipfeature->get_shape(&ipgeometry);

ipfeature->get_oid(&loid);

// ipgeometry->get_geometrytype(&enugeomtype);

igeometrycollectionptr ipgeometrycollection;

hr=ipgeometry->queryinte***ce(iid_ipolyline,(void**)&ippolyline);

if(failed(hr))

return ;

hr=ippolyline->queryinte***ce(iid_igeometrycollection,(void**)&ipgeometrycollection);

if(failed(hr))

return ;

long lgeometrycount;

hr= ipgeometrycollection->get_geometrycount(&lgeometrycount);

if(failed(hr))

return ;

isegmentcollectionptr ipsegmentcollection;

ipsegmentcollection=ipgeometry;

long lsegmentcount;

ipsegmentcollection->get_segmentcount(&lsegmentcount);

if(failed(hr))

return ;

isegmentptr ipsegment;

ipsegmentcollection->get_segment(0,&ipsegment);

if(failed(hr))

return ;

esrigeometrytype   enusegmentgeomtype;

hr= ipsegment->get_geometrytype(&enusegmentgeomtype);

if(failed(hr))

return ;

來自:http://blog.csdn.net/jx1228/archive/2008/04/29/2342141.aspx

SWT中如何判斷平台?

flag specifying if os is linux private static boolean islinux swt.getplatform equalsignorecase gtk flag specifying if os is mac private static boolean...

Velocity中如何判斷null

相信這個問題是很多使用velocity的朋友所經常碰到的,大家可能非常期望下面這樣的 能夠執行 if foo null end 實際上這段 會報錯。這是因為velocity中對null的支援比較特別。上說,判斷是否為null有下面幾種方法 1.if foo 判斷 foo為空,判斷非空為 if foo...

JS中如何判斷null undefined與NaN

1.判斷undefined var tmp undefined if typeof tmp undefined 說明 typeof 返回的是字串,有六種可能 number string boolean object function undefined 2.判斷null var tmp null i...