基於Skyline的TerraExplorer6.1.1如何通過二次開發實現圓形對象的手動繪制


在Skyline的TerraExplorer Pro軟件中,用戶可以輕松實現幾何對象的手動繪制;但在實際的項目中,為了滿足不同行業的需求,我們更多情況需要定制開發一些幾何對象。這里,通過Skyline提供的開發接口實現圓形對象的繪制,希望能夠擴展大家的一些實現思路。

 

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head >
     < title >手繪圓 </ title >
      < script  type  = "text/javascript"  language  = "javascript" >
         
var  gPolyObj  =   null ;         
         
function  StartCal() {
             
var  SGWorld  =   new  CreateSGObj();
             SGWorld.AttachEvent(
" OnLButtonDown " , DrawPolyLButtonDown);
             SGWorld.AttachEvent(
" OnFrame " , DrawPolyOnFrame);
             SGWorld.Window.SetInputMode(
1 );
         }

         
function  EndCal() {
             
var  SGWorld  =   new  CreateSGObj();
             SGWorld.DetachEvent(
" OnLButtonDown " , DrawPolyLButtonDown);
             SGWorld.DetachEvent(
" OnFrame " , DrawPolyOnFrame);
             SGWorld.Window.SetInputMode(
0 );
             SGWorld 
=   null ;
             gPolyObj 
=   null ;
         }

         
function  CreateTempGroup(groupname) {
             
var  SGWorld  =   new  CreateSGObj();
             
var  gid  =  SGWorld.ProjectTree.FindItem(groupname);             
             
if  (gid  >   0 ) {
                 
             }
             
else  {
                 gid 
=  SGWorld.ProjectTree.CreateLockedGroup(groupname,  0 );
             }
             
return  gid;
         }

         
function  DelTemp(groupname) {
             
var  SGWorld  =   new  CreateSGObj();
             
var  gid  =  SGWorld.ProjectTree.FindItem(groupname);
             
if  (gid  >   0 ) {
                 SGWorld.ProjectTree.DeleteItem(gid);
             }
         }

         
var  gPolyText  =   " " ;
         
// ********************************************繪制Circle
          function  DrawPolyLButtonDown(Flags, X, Y) {
             
try  {
                 
var  SGWorld  =  CreateSGObj();
                 
var  CursorCoord  =  SGWorld.Window.pixelToWorld(X, Y);
                 
if  (CursorCoord  ==   null )
                     
return   false ;

                 
if  (gPolyObj  ==   null ) {
                     
var  gid  =  CreateTempGroup( " 標繪 " );
                     
var  pos  =  SGWorld.Creator.CreatePosition(CursorCoord.Position.X, CursorCoord.Position.Y,  0 2 0 0 0 0 );
                     gPolyObj 
=  SGWorld.Creator.CreateCircle(pos,  1 , SGWorld.Creator.CreateColor( 255 0 0 1 ), SGWorld.Creator.CreateColor( 255 0 0 1 ), gid, gPolyText);
                     gPolyObj.LineStyle.Width 
=   1 ;
                 }
                 
else  {
                     EndCal();
                 }
             }
             
catch  (e)
             { }
         }
         
// -----------
          //  跟隨鼠標位置移動,改變圓半徑大小
          // -----------
          function  DrawPolyOnFrame() {
             
try  {
                 
var  SGWorld  =  CreateSGObj();
                 
if  (gPolyObj  !=   null ) {

                     
var  mouseInfo  =  SGWorld.Window.GetMouseInfo();
                     
var  CursorCoord  =  SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y);
                     
if  (CursorCoord  ==   null )
                         
return   false ;
                     
var  dr  =  gPolyObj.Position.DistanceTo(CursorCoord.Position);
                     gPolyObj.Radius 
=  dr;
                 }
             }
             
catch  (e) { }
         }

         
/*   
         功能:   創建sgworld對象
         備注:   趙賀 2011.04.01.
         
*/
         
function  CreateSGObj() {
             
var  obj  =  $( " sgworld " );
             
if  (obj  ==   null ) {
                 obj 
=  document.createElement( ' object ' );
                 document.body.appendChild(obj);
                 obj.name 
=   " sgworld " ;
                 obj.id 
=   " sgworld " ;
                 obj.classid 
=   " CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1 " ;
             }
             
return  obj;
         }
         
function  $(id) {
             
return  window.document.getElementById(id);
         }        
     
</ script >
</ head >
< body  onunload ="DelTemp('標繪')" >
     < table  style ="margin: 0px; border: 0px;" >
         < tr >
             < td  colspan ="4" >
                 < input  id ="Button6"  type ="button"  value ="繪制"  onclick ="StartCal()"   />        
                 < input  id ="Button1"  type ="button"  value ="清除"  onclick ="DelTemp('標繪')"   />
             </ td >
         </ tr >       
     </ table >
</ body >
</ html >

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM