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. 创建模型对象
本文介绍了如何使用Skyline创建文字、图片和模型三种类型的对象。通过示例代码展示了创建过程,包括响应鼠标事件、确定对象位置及样式等关键步骤。

5239

被折叠的 条评论
为什么被折叠?



