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