function Init()
{
var flyPath = "d:\\1.fly";
SGWorld.Project.Open(flyPath);
}
var linesNodeNumArray;
var linesRouteCoordsArray;
var PLinesArray;
var Modelfilename = "D:\\roundabout.xpc";
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)
{
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(0,10)",100);
}
}
//line1组 line2组 line3组下模型名称和序号相同0 1 2
function SetRouteModelByLines(routeangel, offsetValue)
{
for (var i = 0; i < PLinesArray.length; i++)
{
var linestring = PLinesArray[i].Geometry;
var groupname = PLinesArray[i].TreeItem.Name;
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 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
var positionCurrent = SGWorld.Creator.CreatePosition(linesRouteCoordsArray[2 * i], linesRouteCoordsArray[2 * i + 1], curPointCoord.Z, 3, 0, 0, 0, -1);
var sydis = SGWorld.CoordServices.GetDistance(linesRouteCoordsArray[2 * i], linesRouteCoordsArray[2 * i + 1], nextPointCoord.X, nextPointCoord.Y);
var model65 = SGWorld.Creator.GetObject(modelid);
if (model65 != null)
{
if (sydis > offsetValue)
{
var position = SGWorld.Creator.CreatePosition(curPointCoord.X, curPointCoord.Y, curPointCoord.Z, 3, positionAngles.Yaw, positionAngles.Pitch, positionAngles.Roll, -1);
var angel = positionAngles.Yaw * Math.PI / 180;
var newcoord = SGWorld.CoordServices.MoveCoord(linesRouteCoordsArray[2 * i], linesRouteCoordsArray[2 * i + 1], offsetValue * Math.sin(angel), offsetValue * Math.cos(angel));
linesRouteCoordsArray[2 * i] = newcoord.X;
linesRouteCoordsArray[2 * i + 1] = newcoord.Y;
var dis = SGWorld.CoordServices.GetDistance(curPointCoord.X, curPointCoord.Y, newcoord.X, newcoord.Y);
model65.ScaleY = dis;
}
else
{
linesRouteCoordsArray[2 * i] = nextPointCoord.X;
linesRouteCoordsArray[2 * i + 1] = nextPointCoord.Y;
//序号linesNodeNumArray[i]是否加1待定
var maxdis = SGWorld.CoordServices.GetDistance(positionfrom.X,positionfrom.Y, positionto.X,positionto.Y);
model65.ScaleY = maxdis;//需要知道模型比例为1的时候的延长方向是多少米,最好是1
}
}
}
}
}
}
//timer1.Enabled = false;
}
11-14
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交