如何在三维场景中实现对选中对象的高亮显示,在很久以前大家可能觉得实现起来比较麻烦,但现在在Skyline在TEPro6.1中,ITerrainObject61类增加了Tint属性,所有继承自ITerrainObject61的对象都可以通过这个属性,来实现选中状态的高亮。
具体实现过程,请参考下面代码:
1
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
2
3 < html xmlns ="http://www.w3.org/1999/xhtml" >
4 < head >
5 < title ></ title >
6 < script type = "text/javascript" language = "javascript" >
7 function Test1() {
8 var SGWorld = CreateSGObj();
9 var location = SGWorld.Creator.CreateLocationHere();
10 var purl = toAbspath( " data/747.xpc " );
11 var pos = location.Position;
12 pos.Yaw = 0 ;
13 pos.Pitch = 0 ;
14 pos.Roll = 0 ;
15 var gid = 0 ;
16 var pModel = SGWorld.Creator.CreateModel(pos, purl, 0 , 1 );
17 pModel.ScaleX = 100 ;
18 pModel.ScaleY = 100 ;
19 pModel.ScaleZ = 100 ;
20 pModel.TreeItem.Name = " 模型 " ;
21 SGWorld.Creator.DeleteObject(location.ID);
22 }
23
24 function Test2() {
25 var SGWorld = CreateSGObj();
26 var ItemID = SGWorld.ProjectTree.FindItem( " 模型 " );
27 if (ItemID > 0 ) {
28 var obj = SGWorld.ProjectTree.GetObject(ItemID);
29 obj.Terrain.Tint.abgrColor = 0x0000ff ;
30 obj.Terrain.Tint.SetAlpha( 0.8 );
31 }
32 }
33 function Test3() {
34 var SGWorld = CreateSGObj();
35 var ItemID = SGWorld.ProjectTree.FindItem( " 模型 " );
36 if (ItemID > 0 ) {
37 var obj = SGWorld.ProjectTree.GetObject(ItemID);
38 obj.Terrain.Tint.abgrColor = 0x0000ff ;
39 obj.Terrain.Tint.SetAlpha( 0 );
40 }
41 }
42
43 /*
44 功能: 创建sgworld对象
45 备注: 赵贺 2011.04.01.
46 */
47
48 function CreateSGObj() {
49 var obj = $( " sgworld " );
50 if (obj == null ) {
51 obj = document.createElement( ' object ' );
52 document.body.appendChild(obj);
53 obj.name = " sgworld " ;
54 obj.id = " sgworld " ;
55 obj.classid = " CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1 " ;
56 }
57 return obj;
58 }
59 function $(id) {
60 return window.document.getElementById(id);
61 }
62
63 function toAbspath(src) {
64 var abspath = function () {
65 var abspath = "" ;
66 try {
67 abspath = unescape(window.location.href);
68 }
69 catch (e) {
70 abspath = unescape( this .__location);
71 }
72 // Remove query String
73 var index = abspath.indexOf( " ? " );
74 if (index > 0 ) abspath = abspath.substr( 0 , index - 1 );
75
76 index = abspath.lastIndexOf( " / " );
77 var index2 = abspath.lastIndexOf( " \\ " );
78
79 index = (index > index2) ? index : index2;
80 if (index <= 0 ) return abspath;
81
82 abspath = abspath.substring( 0 , index);
83
84 if (abspath.substring( 0 , 1 ) == " / " ) abspath = abspath.slice( 1 );
85
86 var re = / file:\/\/\/ / gi;
87 if (abspath.match(re) != null ) abspath = abspath.replace(re, "" ); // if this is indeed a local file, we strip the "file://" prefix from it.
88
89 return (abspath);
90
91 }
92
93 var re = / ^http:\/\/|^ftp:\/\/|^file:\/\/|^https:\/\/ / gi;
94 if (src.match(re) == null ) {
95 if (src.indexOf( " [TE Application Data] " ) != 0 )
96 return abspath() + ' / ' + src;
97 }
98 else {
99 // if this is indeed a local file, we strip the "file://" prefix from it.
100 re = / file:\/\/\/ / gi;
101 if (src.match(re) != null )
102 src = src.replace(re, "" );
103 else {
104 re = / file:\/\/ / gi;
105 if (src.match(re) != null ) src = src.replace(re, "" );
106 }
107 }
108
109 return src;
110
111 }
112 </ script >
113 </ head >
114 < body >
115 < table style ="margin: 0px; border: 0px;" >
116 < tr >
117 < td colspan = "4" >
118 < input id ="Button1" type ="button" value ="创建模型" onclick ="Test1()" />
119 < input id ="Button2" type ="button" value ="选择模型" onclick ="Test2()" />
120 < input id ="Button3" type ="button" value ="选择模型" onclick ="Test3()" />
121 </ td >
122 </ tr >
123 < tr >
124 < td colspan = "4" >
125 <!-- <object id="TerraExplorerInformationWindow" style="height: 550px; width:280px;" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1">
126 </object> -->
127 </ td >
128 </ tr >
129 </ table >
130 </ body >
131 </ html >
2
3 < html xmlns ="http://www.w3.org/1999/xhtml" >
4 < head >
5 < title ></ title >
6 < script type = "text/javascript" language = "javascript" >
7 function Test1() {
8 var SGWorld = CreateSGObj();
9 var location = SGWorld.Creator.CreateLocationHere();
10 var purl = toAbspath( " data/747.xpc " );
11 var pos = location.Position;
12 pos.Yaw = 0 ;
13 pos.Pitch = 0 ;
14 pos.Roll = 0 ;
15 var gid = 0 ;
16 var pModel = SGWorld.Creator.CreateModel(pos, purl, 0 , 1 );
17 pModel.ScaleX = 100 ;
18 pModel.ScaleY = 100 ;
19 pModel.ScaleZ = 100 ;
20 pModel.TreeItem.Name = " 模型 " ;
21 SGWorld.Creator.DeleteObject(location.ID);
22 }
23
24 function Test2() {
25 var SGWorld = CreateSGObj();
26 var ItemID = SGWorld.ProjectTree.FindItem( " 模型 " );
27 if (ItemID > 0 ) {
28 var obj = SGWorld.ProjectTree.GetObject(ItemID);
29 obj.Terrain.Tint.abgrColor = 0x0000ff ;
30 obj.Terrain.Tint.SetAlpha( 0.8 );
31 }
32 }
33 function Test3() {
34 var SGWorld = CreateSGObj();
35 var ItemID = SGWorld.ProjectTree.FindItem( " 模型 " );
36 if (ItemID > 0 ) {
37 var obj = SGWorld.ProjectTree.GetObject(ItemID);
38 obj.Terrain.Tint.abgrColor = 0x0000ff ;
39 obj.Terrain.Tint.SetAlpha( 0 );
40 }
41 }
42
43 /*
44 功能: 创建sgworld对象
45 备注: 赵贺 2011.04.01.
46 */
47
48 function CreateSGObj() {
49 var obj = $( " sgworld " );
50 if (obj == null ) {
51 obj = document.createElement( ' object ' );
52 document.body.appendChild(obj);
53 obj.name = " sgworld " ;
54 obj.id = " sgworld " ;
55 obj.classid = " CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1 " ;
56 }
57 return obj;
58 }
59 function $(id) {
60 return window.document.getElementById(id);
61 }
62
63 function toAbspath(src) {
64 var abspath = function () {
65 var abspath = "" ;
66 try {
67 abspath = unescape(window.location.href);
68 }
69 catch (e) {
70 abspath = unescape( this .__location);
71 }
72 // Remove query String
73 var index = abspath.indexOf( " ? " );
74 if (index > 0 ) abspath = abspath.substr( 0 , index - 1 );
75
76 index = abspath.lastIndexOf( " / " );
77 var index2 = abspath.lastIndexOf( " \\ " );
78
79 index = (index > index2) ? index : index2;
80 if (index <= 0 ) return abspath;
81
82 abspath = abspath.substring( 0 , index);
83
84 if (abspath.substring( 0 , 1 ) == " / " ) abspath = abspath.slice( 1 );
85
86 var re = / file:\/\/\/ / gi;
87 if (abspath.match(re) != null ) abspath = abspath.replace(re, "" ); // if this is indeed a local file, we strip the "file://" prefix from it.
88
89 return (abspath);
90
91 }
92
93 var re = / ^http:\/\/|^ftp:\/\/|^file:\/\/|^https:\/\/ / gi;
94 if (src.match(re) == null ) {
95 if (src.indexOf( " [TE Application Data] " ) != 0 )
96 return abspath() + ' / ' + src;
97 }
98 else {
99 // if this is indeed a local file, we strip the "file://" prefix from it.
100 re = / file:\/\/\/ / gi;
101 if (src.match(re) != null )
102 src = src.replace(re, "" );
103 else {
104 re = / file:\/\/ / gi;
105 if (src.match(re) != null ) src = src.replace(re, "" );
106 }
107 }
108
109 return src;
110
111 }
112 </ script >
113 </ head >
114 < body >
115 < table style ="margin: 0px; border: 0px;" >
116 < tr >
117 < td colspan = "4" >
118 < input id ="Button1" type ="button" value ="创建模型" onclick ="Test1()" />
119 < input id ="Button2" type ="button" value ="选择模型" onclick ="Test2()" />
120 < input id ="Button3" type ="button" value ="选择模型" onclick ="Test3()" />
121 </ td >
122 </ tr >
123 < tr >
124 < td colspan = "4" >
125 <!-- <object id="TerraExplorerInformationWindow" style="height: 550px; width:280px;" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1">
126 </object> -->
127 </ td >
128 </ tr >
129 </ table >
130 </ body >
131 </ html >