SkyLine_BS_二次开发_创建对象

来源:互联网 发布:网络作家梦游美利坚 编辑:程序博客网 时间:2024/06/07 15:11

1. 介绍

在skyline中,创建对象包含三类对象,分别是文字、图片和模型。文字内容支持长字符、段落,图片类型包括大多数常用的图片格式(bmp、gif、jpg、jpeg、png、ico),模型类型包括一般的三维模型和点云(cpt)。一般模型包括Derect的X模型(X、XPC、XPL、XPL2)文件、FLT的flt和fpc文件、Google的dae文件以及3D Studio的3ds格式。

2. 方法

Skyline加入创建的对象分别对应三个不同的方法,CreateTextLable、CreateImageLable、CreateModel,三个方法的主要参数为:创建对象的位置信息IPosition、对象内容或位置、创建对象的风格LabelStyle、以及模型的比例因子Scale和类型信息ModelType。

3. 示例代码

3.1. 创建文字对象

/****分配创建对象方法,增加相应监听**/function GeoCreate() {     //添加左键按下监听     SGWorld65.AttachEvent("OnLButtonDown", DrawPolyLButtonDown);     //添加右键监听     SGWorld65.AttachEvent("OnRButtonUp", DrawPolyRButtonUp);     //设置鼠标输入状态     SGWorld65.Window.SetInputMode(1);}/****左键点击DOWN事件**/function DrawPolyLButtonDown(Flags, X, Y) {    var CursorCoord = SGWorld65.Window.pixelToWorld(X, Y);    if(CursorCoord != null){    //添加文本标签    AddTextLable(CursorCoord);    }}/****添加文字标签**/function AddTextLable(CursorCoord){    //创建组    gids = CreateTempGroup("labelgroup");    //创建鼠标位置    var CursorPosition = SGWorld65.Creator.CreatePosition(CursorCoord.Position.X, CursorCoord.Position.Y, 0, 2, 0, 0, 0, 0);    //创建标签风格    var lableStyle = SGWorld65.Creator.CreateLabelStyle(0);    //创建文本标签    SGWorld65.Creator.CreateTextLabel(CursorPosition,"文字标签",lableStyle,gids,"labelgroup")}/****右键点击UP事件**/function DrawPolyRButtonUp(Flags, X, Y) {    //设置恢复鼠标状态    SGWorld65.Window.SetInputMode(0);    //去除监听    SGWorld65.DetachEvent("OnLButtonDown", DrawPolyLButtonDown);    SGWorld65.DetachEvent("OnRButtonUp", DrawPolyRButtonUp);}/****创建组**/function CreateTempGroup(groupname) {    //查找组名,得到对应的组ID    var gid = SGWorld65.ProjectTree.FindItem(groupname);    //如果无对应组名,组ID为空               if (gid == "") {        //新建该组名的组,得到组ID        gid = SGWorld65.ProjectTree.CreateLockedGroup(groupname, "");    }    //返回组ID    return gid;}

3.2. 创建图像对象

/** * *分配创建对象方法,增加相应监听 * */function GeoCreate(value) {     //添加左键按下监听     SGWorld65.AttachEvent("OnLButtonDown", DrawPolyLButtonDown);     //添加右键监听     SGWorld65.AttachEvent("OnRButtonUp", DrawPolyRButtonUp);     //设置鼠标输入状态     SGWorld65.Window.SetInputMode(1);}/** * *左键点击DOWN事件 * */function DrawPolyLButtonDown(Flags, X, Y) {     var CursorCoord = SGWorld65.Window.pixelToWorld(X, Y);     if(CursorCoord != null){//添加图片标签    AddImageLable(CursorCoord);     }}/** * *添加图像标签 * */function AddImageLable(CursorCoord){     gids = CreateTempGroup("图像标签");     //创建鼠标位置     var CursorPosition = SGWorld65.Creator.CreatePosition(CursorCoord.Position.X, CursorCoord.Position.Y, 0, 2, 0, 0, 0, 0);     var lableStyle = SGWorld65.Creator.CreateLabelStyle(0);     //创建图片SGWorld65.Creator.CreateImageLabel(CursorPosition,"D:/imagePath/image.png",lableStyle,gids,"图像标签");}/** * *右键点击UP事件 * */function DrawPolyRButtonUp(Flags, X, Y) {     //设置恢复鼠标状态     SGWorld65.Window.SetInputMode(0);     //去除监听     SGWorld65.DetachEvent("OnLButtonDown", DrawPolyLButtonDown);     SGWorld65.DetachEvent("OnRButtonUp", DrawPolyRButtonUp);}/** * *创建组 * */function CreateTempGroup(groupname) {    //查找组名,得到对应的组ID    var gid = SGWorld65.ProjectTree.FindItem(groupname);    //如果无对应组名,组ID为空               if (gid == "") {    //新建该组名的组,得到组ID        gid = SGWorld65.ProjectTree.CreateLockedGroup(groupname, "");    }    //返回组ID    return gid; }

3.3. 创建模型对象

/** * *分配创建对象方法,增加相应监听 * */function GeoCreate() {    //添加左键按下监听    SGWorld65.AttachEvent("OnLButtonDown", DrawPolyLButtonDown);    //添加右键监听    SGWorld65.AttachEvent("OnRButtonUp", DrawPolyRButtonUp);    //设置鼠标输入状态    SGWorld65.Window.SetInputMode(1);}/** * *左键点击DOWN事件 * */function DrawPolyLButtonDown(Flags, X, Y) {    var CursorCoord = SGWorld65.Window.pixelToWorld(X, Y);    if(CursorCoord != null){    //添加模型AddModel(CursorCoord);    }}/** * *添加模型 * */function AddModel(CursorCoord){    gids = CreateTempGroup("模型");    //创建鼠标位置    var CursorPosition = SGWorld65.Creator.CreatePosition(CursorCoord.Position.X, CursorCoord.Position.Y, 10, 2, 0, 0, 0, 0);    //得到程序启动路径    var Propath = SGWorld65.Application.ExecutablePath;    //由启动路径得到shp文件路径    var shpPath = Propath + "Tools\\Data-Library\\3D-Objects\\Helicopters\\" + "ah64.xpc";    //创建模型    SGWorld65.Creator.CreateModel(CursorPosition,shpPath,1,0,gids,"模型")}/** * *右键点击UP事件 * */function DrawPolyRButtonUp(Flags, X, Y) {    //设置恢复鼠标状态    SGWorld65.Window.SetInputMode(0);    //去除监听    SGWorld65.DetachEvent("OnLButtonDown", DrawPolyLButtonDown);    SGWorld65.DetachEvent("OnRButtonUp", DrawPolyRButtonUp);}/** * *创建组 * */function CreateTempGroup(groupname) {    //查找组名,得到对应的组ID    var gid = SGWorld65.ProjectTree.FindItem(groupname);    //如果无对应组名,组ID为空               if (gid == "") {    //新建该组名的组,得到组ID        gid = SGWorld65.ProjectTree.CreateLockedGroup(groupname, "");    }    //返回组ID    return gid; }

4. 运行效果

4.1. 创建文本对象


4.2. 创建图像对象


4.3. 创建模型对象


0 0