关键词不能为空

当前您在: 主页 > 英语 >

skyline_API详细使用说明手册

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 22:08
tags:

-

2021年2月1日发(作者:务)





1


T


erraExplorer


API


简介





TerraExplorer API










口用





TerraExplorer




TerraExplorer Pro


和用户自定义应用。它提供了一些访问外部信息扩展的方



法,比如:访问数据库或基础地理空间数据。所有这些以



COM


协议为基础的



API


接口都可以通过脚本语言操作(例如


Javascript< /p>



,也可以通过非脚本语言来控



制操作(例如:


C++


VB



delphi


或者


.net





TerraExplorer


也提供了一套



ActiveX


控件,


可将



3D


窗口、


信息树和导航图



以控件对象的方式嵌入到用户自定义的可视化界面中,其中,


Runtime


模块使得



用户自定义的应用程序更易分发。





1.1


ITerraExplorer5




描述用户接口的相关细节,


例如当前用户使用的软件版本信息、


单位参数


(长






度单位 、速度单位等)


、工程文件加载和保存等。



ITerraExplorer




属性:



Type, FlyName, DisplayErrorMessages




方法:



Load,


SetCPUSavingMode,


GetUserUnits, GetTEVersion,


LoadEx, Save, SaveAs, SetParam, GetParam




1



Load


方法:


HRESULT


Load([in]


BSTR URL)


其中



URL




fly




mpt


文件的



完整路径。



C#

< br>:


(第一次举例是完整代码,主要部分为粗体部分,以后的例子只写主要部


分,下面接



口例子的其他代码与此例类似< /p>


,


其中加载保存路径读者可以自行设定)



using System;


using


;


using TerraExplorerX;


namespace Load_Test


{



public partial class Form1 : Form


{



private TerraExplorerClass objTerraExplorer;




public Form1()


{



InitializeComponent();


}



private void Loadbutton_Click(object sender, EventArgs e)


{



objTerraExplorer = new TerraExplorerClass();



(@













}



}


}



VB script:


(其中黑体部分是主要部分)






Load












ID=




CLASSID=



width=




ID=




TerraExplorer3DW indow


CLASSID=



width=800 height=760>



ID=


< p>
CLASSID=


c1


>





2



Save


方法



:只能保存



fly


工程


,mpt


工程不能保存



C#




objTerraExplorer = new TerraExplorerClass();


();


VBScript




Sub Save()


Set


IT erraExplorer=ace(


5


End Sub



3



Save As


方法:


HRESULT


SaveAs([in] BSTR FileName)


工程另存为



C#




objTerraExplorer = new TerraExplorerClass();


(@


数据



数据



VBScript




Sub SaveAs()


Set ITerraExplorer=ace(



数据



数据



1.2


IPlane5



< br>控制飞机和摄像机的操作,


对于对象的飞行方式、


观看视 角、


视野高度进行





控制,


可按照需求控制摄像机的方向 、


倾角产生复杂的运动,


例如飞机起飞模拟。

< br>


IPlane5



属性:



方法:





Speed, FieldOfView





FlyTo,


SetPosition,


MovePosition, GetPosition,


FlyToObject,


SetSpeed, GetSpeed, Zoom, GetPositionEx




1< /p>



FlyTo


方法:飞行到指定的位置



[in] double X,










[in] double Z,


垂直方向





[in]


double


Height,



高度



[in] double Distance,


飞行到后视点离位置的距离



[in] double Yaw,


方位角



[in] double Pitch,


视角上下倾斜角度



[in] BSTR Pattern


视角飞行到固定位置的模式



C#




private TerraExplorerClass objTerraExplorer; IPlane5


objIPlane5=objTerraExplorer as IPlane5 ;


(100.71729, 36.761361,40000, 100, 0, 0,



VBScript




Sub FlyTo()


Set IPlane5=ace(



108,39,2000,50,0,0,


Sub

< p>


2



SetPosit ion


方法:设置跳转到视角的位置



[in] double


X [in]


double Y


[in] double Height


[in] double Yaw


[in] double Pitch


[in] double


Roll


[in] double


CameraDeltaYaw, [in]


double CameraDeltaPitch,


[in, defaultvalue(0)] long


Flags


C#




IPlane5 objIPlane5 = objTerraExplorer as IPlane5;


ition(100.71729, 36.761361, 40000,100,0, 0,0,0, 1024);


VBScript




Sub SetPosition()


Set IPlane5=ace(


ition


108,39,2000,0,0,0,0,0,1


End Sub



3



GetPosition


方法:



[out] VARIANT* doubleX,


输出视角所在的经




[out] VARIANT* doubleY,






< p>




经度



[out] VARIANT* doubleHeight,














[out]


VARIANT*


doubleYaw,



视角方位角



[out] VARIANT* doublePitch,



角上下倾斜角度



[out] VARIANT* doubleRoll,


视角左右倾斜角度



[out] VARIANT*


doubleCameraDeltaYaw, [out]


VARIANT* doubleCameraDeltaPitch


C#




object


x, y, h, yaw, pitch, roll, cdy, cdp;


IPlane5 objIplane5 = objTerraExporer as IPlane5;


ition(out x,out y,out h, out yaw,out pitch,out roll,out cdy,


out cdp);


= ng ();


= ng();


= ng();


=


ng();


=


ng();


=


ng();


= ng();


=


ng();


VBScript




Sub GetPosition()


ition x,y,height,yaw ,pitch,roll,camaraPicth,camaraRoll


=x


=y


=height


=yaw


=pitch


=roll


=camaraPi


cth


=camaraR


oll End Sub

< br>(


4



MovePositio n


方法:设置移动到视角的位置



[in] double X,




平方


向坐




[in] double Y,


垂直方向





[in]


double


Height,



高度



[in] double Yaw,


视角方位角度



[in] double Pitch,


视角上下倾斜角度



[in] double Roll,


左右倾斜角度



[in] double


CameraDeltaYaw, [in]


double CameraDeltaPitch,


[in, defaultvalue(0)] long


Flags


C#




IPlane5 objIPlane5 = objTerraExplorer as IPlane5;


sition(111,39,4000,0,0,0,0,0,1024);


VBScript




Sub MovePosition()


Set IPlane5=ace(


sition


108,39,2000,0,0,0,0,0,1


End Sub



5



FlyToObject


方法:飞行到物体



[in] BSTR ObjectID


输入物体



ID [in] ActionCode Code



飞行到模式



C#




IInformationTree5 objIInformationTree5=objTerraExplorer as IInformationTree5;


int ItemID=objIInformationTree5 .FindItem(


string objID=raObjectID


(ItemID); IPlane5 objIPlane5 = objTerraExplorer as


IPlane5; bject(objID,0);


VBScript




Sub FlyToObject()


Set IPlane5=ace(


Set IInformationTree5


=ace(


em(


set Obj =


ect(ItemID)


bject ,0


End Sub



6



Zoom


方法:对当前进行视野缩放



C#









IPlane5 objIPlane5 = objTerraExplorer as IPlane5;


(500,0);


VBScript




Sub Zoom()


Set


IPlane=ace(


(50)


End Sub


1.3


IObjectManager5


接口



管理三维窗口中的所有对象,< /p>


使用本接口用户可添加、


删除、


修改三维 窗口



中的所有对象,主要管理如下对象:





创建二维对象



主要处理文本、图片标签和二维几何体,可创建如下对



象:



Text label


:文本标签



Image label


:图片标签



Polyline


:折线



Polygon


:面



Rectangle


:矩形




Regular Polygon


:正多边形



2D Arrow


:二维箭头



Circle


:圆



Ellipse


:椭圆



Arc


:圆弧





VideoOnTerrain< /p>


:在三维地形上创建视频





创建三维对象





主要处理



3D


模型和三维几何体,可创建如下对象:



3D Model


:添加外部三维模型



Point Cloud Model


:添加点云数据



Building


:在



pro


中自定义创建建筑物



3D Polygon


:三维面



Box


:长方体



Cylinder


:圆柱体




Sphere


:椭球体



Cone


:椎体



Pyramid


:金字塔




3D Arrow


:三维箭头





创建



Messages




创建对象



Message

< p>
,并可与相关对象相关联




Raster Layers




创建栅格层,添加航片、卫片或高程数据




Route




创建漫游路线,可获取、修改路线点位信息





Location



创建视图,系统可直接获取视图范围,也可自定义范围


3.1 CreatePolyline


语法



ITerrainPolyline5 CreatePolyline(object SafeArrayVertices, int LineColor,


HeightStyleCode


HeightStyle, int GroupID, string Description)


参数



类型



描述



SageArrayVertices


object


一个数组节点包含三个



double


值,



这三个



double


值由



x




,h


高度,


y


经度。



如果这个


参数是零,将创



建一个空的对


象,用户可以获得对



象添加节


点。



LineColor


int


线颜色,


RGB


值,最小为



255




HeightStyle


HeightStyleCode


一个枚举值,主要决定对象在


地形



上以什么样的方式显示。



GroupID


int


放置对象的组编号,如果为



0


表示



对象将在根节点下产生。



Description


string


对象在



Information


窗体中显


示的
















TerraExplorer


将自


动为其设置一



个唯一的名称。



说明



在三维窗口中创建多义线,返回



ITerrainPolyline5


对象。



例子



C#:



private void CreatePolyline()



{



ITerrainPolyline5 ITerrainPolyline =


Polyline(0, 255, _ON_TERRAIN, 0,



创建线




tex(0, 1,0,


0); tex(40,


1, 40, 0);



}



vbScript:







3.2 Create2DPolygon



参数



SageArrayVertices





LineColor


FillOpacity


FillColor


HeightStyle


GroupID


Description




说明






类型



object







描述



一个数组节点包含三个



double


值,



这三个



double


值由



x


纬度


,h



y


经度。



如果这个参数是零,



将创


建一个空的对象,用户可以获



得对



象添加节点。


线颜色,


RGB


值,最小为



255




定义对象的透明度。


0


为透明,


1




不透明。



对象的填充颜色,其值为



RGB


值。



一个枚举值,主要决定对象在


地形



上以什么样的方式显



0


放置对象的组编号,如果为


表示




对象将在根节点下产生。


对象在



Information


窗体中显


示的














TerraExplorer


将自动为其设



置一



个唯一的名称。


int


doubl


e


int


HeightStyleCode


int


string










例子



C#:



private void btnCreateObject_Click(object sender, EventArgs e)



{



ITerrainPolyline


=


2DPolygon(0,


255,


0.4,



65525, _ON_TERRAIN, 0,


创建面



tex(0, 1, 0, 0);



tex(10, 1, 10, 0);



tex(45, 1, 10, 0);



}



vbScript:



3.3 CreateRectangle


语法



ITerrainRectangle5


CreateRectangle(double


X,


double


Y


,


double


Elevation,


double


ObjectWidth,


double




ObjectDepth,




int




LineColor,




double




FillOpacity,




int


FillColor, HeightStyleCode HeightStyle, int GroupID, string Description)


参数



类型



描述



X



double



X


坐标





Y


Elevation


ObjectWidt


h


LineColor


FillOpacity


FillColor


HeightStyle


GroupID


Description


Y









形宽



线颜色,


RGB


值,最小为



255




定义对象的透明度。


0



对象的填充颜色,其值为


RGB


透明,


1




不透明。





HeightStyleCode


值。


一个枚举值,


主要决定对象在地


形上



以什么样的方式显示。



< p>
放置对象的组编号,


如果为



0


int


示对




象将在根节点下产生。


对象在



Information


窗体中显示


string


的名



称,


如 果为空字符串,


将自动为其设置一个唯一的名


称。



doubl


e


doubl


e


doubl


e int


int












说明



在三维窗口中创建矩形。



例子



C#:



vbScript:



3.4 CreateRegularPolygon


语法



ITerrainRegularPolygon5


CreateRegularPolygon(double


X,


double


Y


,


double


Elevation, double Radius, int NumOfSegments, int LineColor, double FillOpacity, int


FillColor, HeightStyleCode HeightStyle, int GroupID, string Description)


参数



X



Y


Elevation


Radius


NumOfSegments


LineColor


FillOpacity



FillColor


HeightStyle



GroupID



Description



类型



double



double


double


double


int


int


double



描述



X


坐标



Y


坐标









边数



线颜色,


RGB


值,最小为



255





义对象的透明度。


0


为透明,


1




不透明。



对象的填充颜色,其值为



RGB


值。



一个枚举值,主要决定对象在地形



上以什么样的方式显示。



放置对象的组编号,如果为



0


表示



对象将在根节点下产生。



对象在


Information


窗体中显示的



int


HeightStyleCode



int



string









说明



在三维窗口中创建正多边


形。



例子



C#:



vbScript:



3.5 CreateCircle


说明



该方法能够在三维窗口中创


建一个圆。



语法



void


CreateCircle


( [in] double X,









字< /p>





TerraExplorer


将自动为


其设置一



个唯一的名称。





[in] double Y


,


[in] double


Elevation, [in]


double Radius,


[in, defaultvalue(12)] int NumOfSegments,


[in, defaultvalue(0x0000ff00)] long


LineColor, [in, defaultvalue(FT_NONE)]


double FillOpacity, [in,


defaultvalue(0x00646464)] long FillColor,


[in, defaultvalue(HSC_TERRAIN_RELATIVE)] HeightStyleCode


HeightStyle, [in, defaultvalue(0)] long GroupID,


[in, defaultvalue(


[out, retval] ITerrainRegularPolygon5** pITerrainRegPolygon2)



参数说明



§



X




经度坐标值。



§



Y




纬度坐标值。



§



Elevation




高程值。



§



Radius




对象的半径


(


单位:米


)




§



NumOfSegments




圆的分段数。



§



LineColor




圆的弧线的颜色



§



FillOpacity



圆内的填充色是否透明。



§



FillColor




圆内的填充色。



§



HeightStyle




圆在图上的放置形式。



HeightStyleCode


可以选择下面的值:



o



HSC_TERRAIN_RELATIVE = 0


圆的< /p>


每一个端点在地形图上拥有相同的高程


值。



o


HSC_PIVOT_RELATIVE = 1


高程参



数决



定圆











程。



圆的




个端



点分布






中心




相同




的平面



上。



o


HSC_ON_TERRAIN = 2


圆的端点沿地形分布。



o


HSC_TERRAIN_ABSOLUTE = 3


高程参 数决定圆的中心点的绝对高程。圆的每个端点分布在与中心点相同的平面


上。

< p>


§



GroupID




所创建的规则多边形在信息树中所在的组的


< br>ID


。如果把它设


置为



0


,则



图形被创建在根目录下。你可以通过下面几种方式获得



GroupID




o


直接在信息树中创建新组(方法:


IInformationTree5::CreateGroup


< br>。



o


如果你知道组的名称,可以在信息树中找到它



(方法:


IInformationTree5::FindItem





o


通过



GetNextItem


方法,在信息树中检索,直到找到想要的



GroupID




§



Description




将要出现在信息树窗口中的规则 多边形的名称。如果该参


数被设置为



一个空的字符串,则



TerraExplorer


给它分配一个默认的名字。



§



PITerrainRegularPolygon5




一个新建规则多边形的接口指示 器。这个


参数必须为



空。





返回值



返回值



S_OK



E_FAIL



TE_E_MPTNOTLOADED



含义



成功



失败



使



















TerraExplorer


加载一个



MPT






在信息树中输入的组的



ID




无效


TerraExplorer


不 能创建对


象。




果想得到关于这个的更多信


息请



使用



IErrorInfo


接口




你没 有使用这项功能的许可


TE_E_INFOTREE_PARENTNOTGROUP< /p>



TE_E_INTERNAL



TE_E_NOLICENCE




例子



(C#)



using System;


using



ic; using


entModel;


using







using g;


using


using


using TerraExplorerX;



namespace CreateCircle



{




public partial class Form1 : Form




{



private TerraExplorer


CoClassTE; private


ITerraExplorer5 ITerraExplorer;


private IObjectManager5


IObjectManager;










private IInformationTree5 IInformationTree;


private IRender5 IRender;


private IMenu IMenu;


private ITerrainRegularPolygon5 ITeCircle;


private bool bIsLine = false;


public Form1()


{



InitializeComponent();


CoClassTE = new


TerraExplorerClass(); ITerraExplorer =


(ITerraExplorer5)CoClassTE;


IObjectManager =


(IObjectManager5)CoClassTE;


IInformationTree =


(IInformationTree5)CoClassTE;


IRender = (IRender5)CoClassTE;


IMenu = (IMenu)CoClassTE;


tonDown+=new


_ITerraExplorer Events5_OnLButtonDownEventHandler(


OnLBu ttonDown);


tonDown+=new


_ITe rraExplorerEvents5_OnRButtonDownEventHandler(

< p>
OnRButtonDown);


}


private void Form1_Load(object sender, EventArgs e)


{



(57601);


}



private void btnCreateCircle_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine = true;


}



private void OnLButtonDown(int Flags, int X, int Y, ref object bHandled)


{



if (bIsLine == true)


{



object objType = 63, WX, WH, WY, objID;




























ToWorld(X, Y, ref objType, out WX, out WH, out WY,


out objID);


if (ITeCircle == null)


{



=



Circle(le(W


X), le(WY), 0,30 , 10, 255, 0, 500,


_TERRAIN_RELATIVE, 0,


新建的



ITeCircle



Circle




em(eeItemID);


}











}


}


}



private void OnRButtonDown(int Flags, int X, int Y, ref object bHandled)


{



seInputMode(_FREE_FLIGHT);


bIsLine = false;


}


}



(VBScript)




3.6 Create3DPolygon


说明


该方法能在三维窗口中创建一个三维


的多边形。



语法



HRESULT Create3DPolygon (


[in, defaultvalue(0)] V


ARIANT


SafeArrayVertices, [in, defaultvalue(20)]


double ObjectHeight,


[in, defaultvalue(0x0000ff00)] long


LineColor, [in, defaultvalue(FT_NONE)]


double FillOpacity, [in,


defaultvalue(0x00646464)] long FillColor,


[in, defaultvalue(0)] HeightStyleCode


HeightStyle, [in, defaultvalue(0)] long


GroupID,


[in, defaultvalue(


[out, retval] ITerrain3DPolygon5** pITerrain3DPolygon5)









参数说明



§



SafeArrayVertices




是由许多个三分组组成的数组, 每个三分组由三个双


精度数成。



每一个三分组包括一个



X


坐标,一个高程值,一个



Y


坐标。通常这


个数组决定三维多边形



底部的基础形状


(TerraExplorer


将为每个基础的上面部分


复制这个形状


)

< p>
。客户用相同的数组



设置所有的高程值。


这在决定地表的三维多


边形的高程值方面是很重要的。



COM


接口中表



示高程值的单位是



meters




X


坐标和



Y


坐标则用



MPT


单位表示。你可以使用



ITerrain




口来获取有关



MPT


单位的信息。如果你使用的是



Lat-Long


格式,


Lat- Long


的值是十进制





Lat-


Long


。下面是一个用



VB


脚本写的例子,它返回了三个顶点,每个顶点都被设置


成了



相同的高程值。




3.7 CreateBuilding


说明



该方法能在三维窗口中创建一


个建筑物。



语法



void CreateBuilding (


[in, defaultvalue(0)] V


ARIANT


SafeArrayVertices, [in, defaultvalue(20)]


double RoofHeight,


[in, defaultvalue(BS_STRETCH_TERRAIN)] BuildingStyleCode


BuildingStyle, [in, defaultvalue(0)] HeightStyleCode HeightStyle,


[in, defaultvalue(0)] long GroupID,


[in, defaultvalue(


[out, retval] ITerrainBuilding5** pITerrainBuilding5)








参数说明



§



SafeArrayVertices


是由许多个三分组组成的数组,每个三分组由三个双


精度数成。


每一个三分组包括一个



X


坐标,一个高程值,一个



Y


坐标。通常


这个数组决定三维多边形



底部的基础形状


(TerraExplorer


将为每个基础的上面部


分复制这个形状


)

< p>
。客户用相同的数组



设置所有的高程值。


这在决定地表的三维


多边形的高程值方面是很重要的。



COM


接口中表



示高程值的单位是



meters




X


坐标和



Y


坐标则用



MPT


单位表示。你可以使用



ITerrain





口来获取有关



MPT


单位的信息。如果你使用的是



Lat-Long


格式,


Lat- Long


的值是十进制





Lat- Long


。下面是一个用



VB


脚本写的例子,它返回了三个顶点,每个顶点都被


设置成了



相同的高程值。



§



RoofHeight




建筑物顶部的高程


(


单位:


meters)




§



BuildingStyle




一个指定建筑物的样式是由地形图伸展还是由多边形组成


的枚举 值,



可以选择下面的值:



o


BS_STRETCH_TERRAIN = 0


建筑物由地形图伸展而来,顶端的纹理和当


地地形图纹理相同,



TerraExplorer


使用这种方



法提交一个建筑物非常有效。



o


BS_POLYGONS = 1


建筑物由多边形组成,而且 由使用者定义建筑物的顶端和侧面的纹理特征。



§



HeightStyle




一个决定建筑物在地形图上如何放置的枚举值。



HeightStyleCode


可以使用下面的

< p>




o



HSC_TERRAIN_RELATIVE


= 0


使用相对高程。



o


HSC_TERRAIN_ABSOLUTE = 3


使用绝对高程。



§



GroupID



在信息树中新建多边形所在组的



ID


值。如果设置为



0,


则表示


将在根目录



下创建新对象。



§



Description




将要添加到信息树窗口中的新建 的建筑物的名称。如果该字


符串为空


, TerraExplorer


将指定一个默认名称。



§



pITerrainBuilding5




一个新建建筑物的接口指示器。 这个参数必须为


空。





返回值



返回值



S_OK



E_FAIL



TE_E_MPTNOTLOADED



含义



成功



失败



使



















TerraExplorer


加载一个



MPT






在信息树中输入的组的



ID




无效


TerraExplorer


不 能创建对


象。




果想得到关于这个的更多信


息请



使用



IErrorInfo


接口




你没 有使用这项功能的许可


TE_E_INFOTREE_PARENTNOTGROUP< /p>



TE_E_INTERNAL



TE_E_NOLICENCE




例子



(C#)



using System;


using



ic; using


entModel;


using







using g;


using


using


using TerraExplorerX;



namespace CreateBuilding



{




public partial class Form1 : Form



{


private TerraExplorer


CoClassTE; private


ITerraExplorer5 ITerraExplorer;


private IObjectManager5


IObjectManager; private


IPlane5 IPlane;


private IRender5 IRender;


private IMenu IMenu;


private ITerrainBuilding5 ITeBuilding;


private bool bIsLine = false;


private IInformationTree5 IInformationTree;


public Form1()


{



InitializeComponent();


CoClassTE = new


TerraExplorerClass(); ITerraExplorer


= (ITerraExplorer5)CoClassTE;


IObjectManager =


(IObjectManager5)CoClassTE;


IPlane = (IPlane5)CoClassTE;


IRender =


(IRender5)CoClassTE; IMenu


= (IMenu)CoClassTE;


tonDo


wn+=new


_ITe rraExplorerEvents5_OnLButtonDownEventHandler(OnLBu ttonDown);


tonDown+=new


_ITe rraExplorerEvents5_OnRButtonDownEventHandler(

< p>
OnRButtonDown); IInformationTree =


(IInformationTree5)CoClassTE;


}


private void Form1_Load(object sender, EventArgs e)


{



(57601);


}





























private void OnLButtonDown(int Flags, int X, int Y, ref object bHandled)


{



if (bIsLine == true)


{



object objType = 63, WX, WH, WY, objID;


ToWorld(X, Y, ref objType, out WX, out WH, out WY,


out objID);


if (ITeBuilding == null)


{



ITeBuilding=Building(0,50,


_POLYGONS ,


_TERRAIN_ABSOLUTE, 0,


新建的



Building


}


tex(le(WX),



WH),


le(



le(W


Y), 0);



}




}




private void OnRButtonDown(int Flags, int X, int Y, ref object bHandled)



{




seInputMode(_


FREE_FLIGHT); bIsLine = false;


em(eeItem


ID);







}



private void btnCreateBuilding_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine = true;


ITeBuilding =


null;




}


}


}



(VBScript)



function CB(x,y)


if isline=true then


dim outX,outY,outH,ObjectID


ToWorld x,y,63,outX,outH,outY,ObjectID


set IBuilding = Building(CreateVertArray(),


20,BS_POLYGONS, 0, 0,


新建的



Building


'tex outX,outH,outY,0



end if


end function


Function


CreateVertArray()


Dim vert(9)


vert(0) = 120.0099



= 40.0005



'First vertex X-


coordinate. vert(1) = 40.0



'First vertex height. vert(2)



'First vertex Y-










coordinate. vert(3) = 120.0091




'Second vertex X-




'Second vertex height.


'Second vertex Y-


coordinate. vert(4) = 260.0


vert(5) = 40.0065





coordinate. vert(6) = 120.0010


'Third vertex X-


'Third vertex height.


coordinate. vert(7) = 60.0


vert(8) = 40.006


'Third vertex Y-


coordinate. CreateVertArray = vert




End Function



3.8 CreateBox


该方法能在三维窗口中创建一个箱子。



语法



void


CreateBox ( [in]


double X, [in]


double Y


,


[in] double Elevation,


[in]


double


ObjectWidth,


[in]


double


ObjectDepth,


[in]


double


ObjectHeight,


[in, defaultvalue(0)] double Yaw,


[in, defaultvalue(0x0000ff00)] long


LineColor, [in, defaultvalue(FT_NONE)]


double FillOpacity, [in,


defaultvalue(0x00646464)] long FillColor,


[in, defaultvalue(0)] HeightStyleCode


HeightStyle, [in, defaultvalue(0)] long


GroupID,


[in, defaultvalue(


[out, retval] ITerrain3DRectBase5** pITerrain3DRectBase5)



参数说明



§



X




经度。



§



Y




纬度。



§



Elevation




高程。



§



ObjectWidth




宽度


(


单位:


me ters)




§



ObjectDepth




深度


(


单位:


meters)




§



ObjectHeight



< /p>


高度


(


单位:


m eters)




§



Yaw




飞行偏角。



§



LineColor




线的颜色。



§



FillOpacity




透明度。



§



FillColor




填充色。



§



HeightStyle



一个决定



Box


在地形图上如何放置的枚举值。


HeightStyleCode


可以取



下面的值。



o


HSC_TERRAIN_RELATIVE = 0


相对高度。



o


HSC_TERRAIN_ABSOLUTE = 3


绝对高度。



§



GroupID



将要添加到信息树窗口中的新建的



Box


的名称。如果该字


符串为空


, TerraExplorer


将指定一个默认名称。



§



Description



将要添加到信息树窗口中的新建的



Box


的名称。如果该字


符串为空


, TerraExplorer


将指定一个默认名称。



§



pITerrain3DRectBase5



一个新建



Box


的接口指示器。这个参数必须为


空。





返回值



返回值



S_OK



含义



成功




E_FAIL



TE_E_MPTNOTLOADED



TE_E_INFOTREE_PARENTNOTGROUP



TE_E_INTERNAL



TE_E_NOLICENCE




例子



(C#)



using System;


using



ic; using


entModel;


using







using g;


using


using


using TerraExplorerX;


失败



使



















TerraExplorer


加载一个



MPT






在信息树中输入的组的



ID




无效


TerraExplorer


不 能创建对


象。




果想得到关于这个的更多信


息请



使用



IErrorInfo


接口




你没有使用这项功能的许可



namespace CreateBox



{




public partial class Form1 : Form



{




private TerraExplorer


CoClassTE; private


ITerraExplorer5 ITerraExplorer;


private IObjectManager5


IObjectManager; private


IPlane5 IPlane;










private IRender5 IRender;


private IMenu IMenu;


private ITerrain3DRectBase5 ITeBox;


private bool bIsLine = false;


private IInformationTree5 IInformationTree;


public Form1()


{




InitializeComponent();


CoClassTE = new


TerraExplorerClass(); ITerraExplorer =


(ITerraExplorer5)CoClassTE;


IObjectManager =


(IObjectManager5)CoClassTE;


IInformationTree =


(IInformationTree5)CoClassTE; IPlane


= (IPlane5)CoClassTE;


IRender = (IRender5)CoClassTE;

















IMenu = (IMenu)CoClassTE;


tonDown+=new


_ITerraExplorer Events5_OnLButtonDownEventHandler(


OnLBu ttonDown);


tonDown+=new


_ITe rraExplorerEvents5_OnRButtonDownEventHandler(

< p>
OnRButtonDown);


}


private void Form1_Load(object sender, EventArgs e)


{



(57601);


}



private void btnCreateBox_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine =


true;


ITeBox =


null;


}



private ITerrain3DRectBase5 CreateBox(double X, double Y)


{



return ITeBox = Box (X, Y, 0, 100, 50,


100, 30, 255, 1, 300, _TERRAIN_ABSOLUTE , 0,


}


private void OnLButtonDown(int Flags, int X, int Y, ref object bHandled)


{



if (bIsLine == true)


{



object objType = 63, WX, WH, WY, objID;


ToWorld(X, Y, ref objType, out WX, out WH, out WY,


out objID);


if (ITeBox == null)


{



ITeBox =


CreateBox(le(WX),le(WY));


}


}
























}



private void OnRButtonDown(int Flags, int X, int Y, ref object bHandled)


{



seInputMode(_FREE_FLIGHT);


bIsLine = false;


em(


TreeItemID);


}






private void btnCreateBuilding_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine =


true;


ITeBox =


null;




}


}


}



(VBScript)




3.9 CreatePyramid


说明



该方法在三维窗口中创建一


个金字塔。



语法



void


CreatePyramid


( [in] double X,


[in] double Y


,


[in] double Elevation,


[in]


double


ObjectWidth,


[in]


double


ObjectDepth,


[in]


double


ObjectHeight,


[in, defaultvalue(0)] double Yaw,


[in, defaultvalue(0x0000ff00)] long


LineColor, [in, defaultvalue(FT_NONE)]


double FillOpacity, [in,


defaultvalue(0x00646464)] long FillColor,


[in, defaultvalue(0)] HeightStyleCode


HeightStyle, [in, defaultvalue(0)] long











GroupID,


[in, defaultvalue(


[out, retval] ITerrain3DRectBase5** pITerrain3DRectBase5)



参数说明



§



X




经度。



§



Y




纬度。



§



Elevation




高程。



§



ObjectWidth




金字塔的宽度

< br>(


单位:


meters)




§



ObjectDepth




金字塔的深度


(


单位:

meters)




§



ObjectHeight




金字塔的高度

< br>(


单位:


meters)




§



Yaw




飞行偏角。



§



LineColor




线的颜色。



§



FillOpacity




透明度。



§



FillColor




填充色。



§



HeightStyle



一个决 定金字塔在地形图上如何放置的枚举值。


HeightStyleCode


可以



取下面的值:



o


HSC_TERRAIN_RELATIVE = 0


相对高度。



o


HSC_TERRAIN_ABSOLUTE = 3


绝对高度。



§



GroupID



将要添加到信息树窗口中的新建的金字塔的名称。如果该字


符串为空


, TerraExplorer


将指定一个默认名称。



§



Description



将要添加到信息树窗口中的新建的金字塔的名称。如果该字


符串为空


, TerraExplorer


将指定一个默认名称。



§



pITerrain3DRectBase5



一个新建金字塔的接口指示器。这个参数必须为


空。





返回值



返回值



S_OK



E_FAIL



TE_E_MPTNOTLOADED



含义



成功



失败



使



















TerraExplorer


加载一个



MPT






在信息树中输入的组的



ID




无效


TerraExplorer


不 能创建对


象。




果想得到关于这个的更多信


息请



使用



IErrorInfo


接口




你没 有使用这项功能的许可


TE_E_INFOTREE_PARENTNOTGROUP< /p>



TE_E_INTERNAL



TE_E_NOLICENCE




例子



(C#)



using System;


using



ic; using


entModel;


using






using g;


using


using


using TerraExplorerX;





namespace CreatePyramid


{




public partial class Form1 : Form


{



private TerraExplorer


CoClassTE; private


ITerraExplorer5 ITerraExplorer;


private IObjectManager5


IObjectManager; private


IPlane5 IPlane;


private IRender5 IRender;


private IMenu IMenu;


private ITerrain3DRectBase5 ITePyramid;


private bool bIsLine = false;


private IInformationTree5 IInformationTree;


public Form1()


{



InitializeComponent();


CoClassTE = new


TerraExplorerClass(); ITerraExplorer =


(ITerraExplorer5)CoClassTE;


IObjectManager =


(IObjectManager5)CoClassTE;


IInformationTree =


(IInformationTree5)CoClassTE; IPlane


= (IPlane5)CoClassTE;


IRender =


(IRender5)CoClassTE; IMenu


= (IMenu)CoClassTE;


tonDo


wn+=new


_ITe rraExplorerEvents5_OnLButtonDownEventHandler(

< p>
OnLButtonDown);


tonDown+=new


_ITerraExplorerEvents5_OnRButtonDownEventHa ndler(


OnRButtonDown);


}


private void Form1_Load(object sender, EventArgs e)


{
























(57601);


}



private ITerrain3DRectBase5 CreatePyramid(double X, double Y)


{



return ITePyramid = Pyramid(X, Y, 0, 100, 50,


100, 30, 255, 1, 300, _TERRAIN_ABSOLUTE, 0,



}


private void OnLButtonDown(int Flags, int X, int Y, ref object bHandled)


{



if (bIsLine == true)


{



object objType = 63, WX, WH, WY, objID;


















}



}


ToWorld(X, Y, ref objType, out WX, out WH, out WY,


out objID);


if (ITePyramid == null)


{



ITePyramid = CreatePyramid(le(WX),


le(WY));


}


private void OnRButtonDown(int Flags, int X, int Y, ref object bHandled)


{



seInputMode(_


FREE_FLIGHT); bIsLine = false;


em(eeItem


ID);


}



private void btnCreateBuilding_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine = true;


ITePyramid =


null;


}



private void btnCreatePyramid_Click(object sender, EventArgs e)


{



seInputMode(_COM_CLIENT);


bIsLine = true;


ITePyramid =


null;


}


}


}



(VBScrip


t)