<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body onload="Init()">
<table width="100%" height="80%" border="1" cellpadding="1" cellspacing="1">
<tr>
<td height="100%" style="width: 259px">
<object id="TEInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1"
width="100%" height="500">
</object>
</td>
<td width="800">
<object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1"
width="800" height="500">
</object>
</td>
</tr>
<tr>
<td style="width: 259px">
<input type="button" value="动态流水效果展示" id="btnRouteWaterEffect" onclick="btnRouteWaterEffect_Click()" />
</td>
</tr>
</table>
<object id="SGWorld" classid="CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1" style="visibility: hidden;
height: 0">
</object>
</body>
</html>
<script language="javascript">
function Init()
{
var flyPath = "d:\\1.fly";
SGWorld.Project.Open(flyPath);
}
var linesNodeNumArray;
var linesRouteCoordsArray;
var PLinesArray;
var Modelfilename = "C:\\Program Files (x86)\\Skyline\\TerraExplorer Pro\\Tools\\CreatePipeLine\\connector.dae";//可以拉长的水效果的模型
function btnRouteWaterEffect_Click()
{
linesNodeNumArray = new Array();
linesRouteCoordsArray = new Array();
PLinesArray = new Array();
var groupid = SGWorld.ProjectTree.FindItem("LineGroup");
if (groupid != "")
{
var itemid = SGWorld.ProjectTree.GetNextItem(groupid, 11);
if (itemid != "")
{
var itobj = SGWorld.ProjectTree.GetObject(itemid);
if (itobj != null)
{
alert(itobj.LineStyle.Pattern);
PLinesArray.push(itobj);
}
}
itemid = SGWorld.ProjectTree.GetNextItem(itemid, 13);
if (itemid != "")
{
var itobj = SGWorld.ProjectTree.GetObject(itemid);
if (itobj != null)
{
PLinesArray.push(itobj);
}
}
itemid = SGWorld.ProjectTree.GetNextItem(itemid, 13);
if (itemid != "")
{
var itobj = SGWorld.ProjectTree.GetObject(itemid);
if (itobj != null)
{
PLinesArray.push(itobj);
}
}
itemid = SGWorld.ProjectTree.GetNextItem(itemid, 13);
if (itemid != "")
{
var itobj = SGWorld.ProjectTree.GetObject(itemid);
if (itobj != null)
{
PLinesArray.push(itobj);
}
}
for (var i = 0; i < PLinesArray.length; i++)
{
linesNodeNumArray.push(0);
}
for (var i = 0; i < PLinesArray.length; i++)
{
var linestring = PLinesArray[i].Geometry;
var point = linestring.Points.Item(0);
linesRouteCoordsArray.push(point.X);
linesRouteCoordsArray.push(point.Y);
}
//初始化好几个数组后,开始调用time控件
window.setInterval("SetRouteModelByLines(2)",100);
}
}
//line1组 line2组 line3组下模型名称和序号相同0 1 2
function SetRouteModelByLines(offsetValue)
{
for (var i = 0; i < PLinesArray.length; i++)
{
var linestring = PLinesArray[i].Geometry;
var groupname = PLinesArray[i].TreeItem.Name;
var lineAltitude = PLinesArray[i].Position.Altitude;
if (linestring != null)
{
if (linesNodeNumArray[i] >= linestring.NumPoints-1)
{
linesNodeNumArray[i] = 0;
var point = linestring.Points.Item(0);
linesRouteCoordsArray[2 * i] = point.X;
linesRouteCoordsArray[2 * i + 1] = point.Y;
//用于循环,需要将这个线上的模型删除后再次重新创建
var groupid = SGWorld.ProjectTree.FindItem(groupname + "组");
if (groupid != "")
{
SGWorld.ProjectTree.DeleteItem(groupid);
}
}
var curPointCoord = linestring.Points.Item(linesNodeNumArray[i]);
var nextPointCoord = linestring.Points.Item(linesNodeNumArray[i] + 1);
var positionfrom = SGWorld.Creator.CreatePosition(curPointCoord.X, curPointCoord.Y, curPointCoord.Z, 3, 0, 0, 0, -1);
var positionto = SGWorld.Creator.CreatePosition(nextPointCoord.X, nextPointCoord.Y, nextPointCoord.Z, 3, 0, 0, 0, -1);
var positionAngles = SGWorld.CoordServices.GetAimingAngles(positionfrom, positionto);
if (nextPointCoord.X == linesRouteCoordsArray[2 * i] && nextPointCoord.Y == linesRouteCoordsArray[2 * i + 1])
{
//说明此线段已经走完,修改linesNodeNumArray[i]为i+1;
linesNodeNumArray[i] = linesNodeNumArray[i] + 1;
}
else
{
//开始判断模型是否存在,如果存在,则修改,不存在则创建
var groupid = SGWorld.ProjectTree.FindItem(groupname + "组");
if (groupid == "")
{
groupid = SGWorld.ProjectTree.CreateGroup(groupname + "组", "");
}
var modelid = SGWorld.ProjectTree.FindItem(groupname + "组\\" + linesNodeNumArray[i]);
if (modelid == "")
{
var myGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry([curPointCoord.X, curPointCoord.Y, lineAltitude, curPointCoord.X, curPointCoord.Y, lineAltitude])
var gPolyObj = SGWorld.Creator.createPolyline(myGeometry, SGWorld.Creator.CreateColor(255, 0, 0, 1), 3, groupid, linesNodeNumArray[i]);
gPolyObj.LineStyle.Width = 0;
gPolyObj.LineStyle.Pattern = 3284386755;
// var position = SGWorld.Creator.CreatePosition(curPointCoord.X, curPointCoord.Y, curPointCoord.Z, 3, positionAngles.Yaw, positionAngles.Pitch, positionAngles.Roll, -1);
// var model65 = SGWorld.Creator.CreateModel(position, Modelfilename, 1, 0, groupid, linesNodeNumArray[i]);
}
else
{
//修改模型的比例 linesNodeNumArray[i]当前point的序号
//linesRouteCoordsArray[2 * i] linesRouteCoordsArray[2 * i + 1] 记录旧的节点
//linestring