天天看點

SkyLine_BS_二次開發_建立對象 1. 介紹 2. 方法 3. 示例代碼 4. 運作效果

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. 建立文本對象

SkyLine_BS_二次開發_建立對象 1. 介紹 2. 方法 3. 示例代碼 4. 運作效果

4.2. 建立圖像對象

SkyLine_BS_二次開發_建立對象 1. 介紹 2. 方法 3. 示例代碼 4. 運作效果

4.3. 建立模型對象

SkyLine_BS_二次開發_建立對象 1. 介紹 2. 方法 3. 示例代碼 4. 運作效果

繼續閱讀