SkyLine_BS_二次开发_创建对象

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. 创建模型对象


  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值