<!DOCTYPE html>
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
<head>
|
<title>ToolTitle</title>
|
<meta http-equiv="X-UA-Compatible" content="IE=9" />
|
<!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8">-->
|
<link href="../Style.css" type="text/css" rel="StyleSheet">
|
<link href="../jquery/slider.css" type="text/css" rel="StyleSheet" />
|
<link href="../jquery/css/dark-hive/jquery-ui-1.10.4.custom.css" rel="stylesheet" />
|
<link href="../jquery/jquery-ui-Override.css" rel="stylesheet" />
|
|
<script src="../jquery/jquery-1.10.2.js" type="text/javascript"></script>
|
<script src="../jquery/jquery-ui-1.10.4.custom.js" type="text/javascript"></script>
|
<script src="../jquery/slider.js" type="text/javascript"></script>
|
<script src="../ToolsCommon70.js" language="javascript"></script>
|
<style>
|
</style>
|
</head>
|
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="border: 0px" id="Body" class="hideUntillTranslated" onload="Init()" onunload="Reset(false,false);">
|
<!--oncontextmenu="return false;"> onclick="bHide=true;HideOptionsNow()" > -->
|
<table border="0" width="100%" cellspacing="0" cellpadding="2">
|
<tr>
|
<td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle">
|
<table border="0" width="100%" cellspacing="0" cellpadding="0">
|
<tr>
|
<td width="55px"><img style="margin-left:5px;" src="ToolIcon.png" alt="" /></td>
|
<td id="TitleTD" align="left" class="s12w i18n">ToolName</td>
|
<td align="right" id="CloseHelpTd"><!--<img style="margin-right:5px;cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="help" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))">--></td>
|
</tr>
|
</table>
|
</td>
|
</tr>
|
<tr>
|
<td class="ToolTopSeperator"></td>
|
</tr>
|
<tr class="s8">
|
<td>
|
<table class="PropertiesSheet" cellspacing="0" cellpadding="2">
|
<tr>
|
<td class="s8b" style="width: 100px;">
|
<label for="Mode" class="i18n">Mode</label>
|
</td>
|
<td align="left">
|
<select id="DirectionMode" onchange="ChangeMode();" style="width: 185px;">
|
<option class="i18n" value="0" selected="selected">Auto</option>
|
<option class="i18n" value="1">Horizontal</option>
|
<option class="i18n" value="2">Vertical</option>
|
</select>
|
</td>
|
</tr>
|
|
<tr>
|
<td class="s8b">
|
<label for="Mode" class="i18n">Size</label>
|
</td>
|
<td align="left">
|
<div id="SizeSlider" style="display:block; width:180px;height:1px; margin:3px;"></div>
|
</td>
|
</tr>
|
<tr>
|
<td class="s8b">
|
<label for="Mode" class="i18n">Direction</label>
|
</td>
|
<td align="left">
|
<div id="DirectionSlider" style="display:block; width:180px;height:1px; margin:3px;"></div>
|
</td>
|
</tr>
|
<!--<tr>
|
<td class="s8b">
|
<label for="Mode" class="i18n">SaveTitle</label>
|
</td>
|
<td align="left">
|
<button id="Button1" class="MenuButtonSmall MenuButtonLast" onclick="SavePlane();"> <span class="i18n">Save</span></button>
|
</td>
|
</tr>-->
|
</table>
|
</td>
|
</tr>
|
<tr class="s8">
|
<td colspan="2" align="center" class="ToolButtonsArea">
|
<button id="AddRemoveBtn" class="MenuButton MenuButtonLast" onclick="Start();"> <img src="./img/Add.png" /><br /> <span id="StartStop" class="i18n">Add</span></button>
|
</td>
|
</tr>
|
</table>
|
<script language="JavaScript">
|
var gDebug = false;
|
var rootId;
|
var gBoxObj = null;
|
var gCrossActivate = 0;
|
var bEditOn = false;
|
var bFirstTime;
|
var gCursorPos = null;
|
var gOriginBoxSize = 0;
|
var gOrigPos = null;
|
// var TransparencySlider;
|
var SizeSlider;
|
var DirectionSlider;
|
// var MoveSlider;
|
var gDeletePlane = true;
|
var gPopup = null;
|
var gDoubleSide = -1;
|
|
var SGWorld = new ActiveXObject("TerraExplorerX.SGWorld70");
|
|
//--------------
|
// Init
|
function Init() {
|
// debugger
|
rootId = GetParamValue("rootId", SGWorld.ProjectTree.RootID);
|
SGWorld.AttachEvent("OnInputModeChanged", OnInputModeChanged);
|
SGWorld.AttachEvent("OnSGWorldMessage", OnSGWorldMessage);
|
SGWorld.AttachEvent("OnFrame", OnFrame);
|
|
$("#SizeSlider").slider({
|
value: 15,
|
min: 1,
|
max: 100,
|
slide: function (event, ui) {
|
setSize();
|
},
|
change: function (event, ui) {
|
setSize();
|
}
|
});
|
$("#DirectionSlider").slider({
|
value: 0,
|
min: 0,
|
max: 360,
|
slide: function (event, ui) {
|
setDirection();
|
},
|
change: function (event, ui) {
|
setDirection();
|
}
|
});
|
Reset(1, 0);
|
}
|
|
//------------------
|
// Reset
|
//------------------
|
function Reset(FirstTime, FromMouseInputMode) {
|
|
try {
|
if (gBoxObj != null && SGWorld.ProjectTree.GetNextItem(gBoxObj.ID, 15) == SGWorld.ProjectTree.HiddenGroupID)
|
SGWorld.Creator.DeleteObject(gBoxObj.ID);
|
if (gBoxObj != null)
|
SGWorld.Analysis.HideCrossSectionBox();
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
|
try {
|
gBoxObj = null;
|
gDeletePlane = true;
|
|
$("#AddRemoveBtn").removeClass("MenuButtonHighlight");
|
$("#EditBtn").removeClass("MenuButtonHighlight");
|
$("#SaveImg").attr("src", "./img/SaveObjectDisabled.png");
|
$("#StartStop").text(SGLang.i18n("Add"));
|
|
|
SGWorld.ProjectTree.EnableRedraw(1);
|
SGWorld.Window.HideMessageBarText();
|
|
if (gCrossActivate > 0) {
|
SGWorld.DetachEvent("OnLButtonClicked", OnLButtonClicked);
|
SGWorld.DetachEvent("OnRButtonUp", OnRButtonUp);
|
}
|
gCrossActivate = 0;
|
bEditOn = false;
|
|
if (FirstTime != 1 && FromMouseInputMode == 0)
|
SGWorld.Window.SetInputMode(0);
|
if (gPopup != null) {
|
SGWorld.Window.RemovePopup(gPopup);
|
gPopup = null;
|
}
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
// Start
|
//--------------
|
function Start() {
|
if (gCrossActivate == 0) {
|
gCrossActivate = 1;
|
bEditOn = true;
|
|
SGWorld.AttachEvent("OnLButtonClicked", OnLButtonClicked);
|
SGWorld.AttachEvent("OnRButtonUp", OnRButtonUp);
|
|
|
SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true);
|
SGWorld.Window.ShowMessageBarText(SGLang.i18n("ClickToAdd"));
|
|
$("#AddRemoveBtn").addClass("MenuButtonHighlight");
|
$("#EditBtn").addClass("MenuButtonHighlight");
|
//$("#MoveSlider").slider("value",0);
|
}
|
else {
|
Reset(false, false)
|
}
|
}
|
|
//-------------------
|
function OnFrame() {
|
try {
|
if (gCrossActivate == 1)
|
createBox(false);
|
if (gCrossActivate == 2)
|
showCrossSection();
|
}
|
catch (err) { }
|
}
|
|
//--------------
|
function OnLButtonClicked(Flags, X, Y) {
|
try {
|
if (gCrossActivate == 1) {
|
createBox(true);
|
|
}
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
function ChangeMode() {
|
if (gCrossActivate != 2 || gBoxObj == null)
|
return;
|
createBox(true);
|
}
|
|
// createBox
|
function createBox(fromClick) {
|
try {
|
if (fromClick && gBoxObj != null) { // From Click or change mode
|
gCursorPos = gBoxObj.Position.Copy();
|
if ($("#DirectionMode").val() == 1)
|
gCursorPos.Pitch = 180;
|
if ($("#DirectionMode").val() == 2)
|
gCursorPos.Pitch = 90;
|
|
}
|
else { // from OnFrame
|
var cursor = SGWorld.Window.GetMouseInfo();
|
var CursorPitch = 180; // Horizontal
|
var CursorYaw = SGWorld.Navigate.GetPosition(3).Yaw + 180;
|
gCursorPos = SGWorld.Window.pixelToWorld(cursor.X, cursor.Y, -1 & ~(128 | 1024)).Position;
|
var DistanceFromCamera = SGWorld.Navigate.GetPosition(3).DistanceTo(gCursorPos);
|
if (cursor.X > 10 && cursor.X < SGWorld.Window.Rect.Width && cursor.Y > 10 && cursor.Y < SGWorld.Window.Rect.Height) {
|
var Pos1 = SGWorld.Window.pixelToWorld(cursor.X - 10, cursor.Y - 10, -1 & ~(128 | 1024)).Position;
|
var Pos2 = SGWorld.Window.pixelToWorld(cursor.X - 10, cursor.Y + 10, -1 & ~(128 | 1024)).Position;
|
var Pos3 = SGWorld.Window.pixelToWorld(cursor.X + 10, cursor.Y - 10, -1 & ~(128 | 1024)).Position;
|
var Pos4 = SGWorld.Window.pixelToWorld(cursor.X + 10, cursor.Y + 10, -1 & ~(128 | 1024)).Position;
|
if ($("#DirectionMode").val() == 2 || ((Math.abs(Pos1.AimTo(Pos4).Pitch) > 20 || Math.abs(Pos2.AimTo(Pos3).Pitch) > 20) && $("#DirectionMode").val() != 1)) {
|
CursorPitch = 90;
|
if (Math.abs(Pos1.AimTo(Pos4).Pitch) > 20 || Math.abs(Pos2.AimTo(Pos3).Pitch) > 20)
|
CursorYaw = Pos1.AimTo(Pos4).Yaw + 90;
|
gCursorPos = gCursorPos.Move(DistanceFromCamera / 100, CursorYaw, 0);
|
}
|
else {
|
gCursorPos.Altitude += DistanceFromCamera / 100;
|
}
|
}
|
else {
|
return;
|
}
|
gCursorPos.Pitch = CursorPitch;
|
gCursorPos.Yaw = CursorYaw;
|
gOriginBoxSize = DistanceFromCamera;
|
}
|
|
if (gBoxObj != null)
|
SGWorld.Creator.DeleteObject(gBoxObj.ID);
|
gBoxObj = SGWorld.Creator.CreateBox(gCursorPos, 1, 1, 0, "#ffffff", "#ffffff", SGWorld.ProjectTree.HiddenGroupID, "CrossSection");
|
gBoxObj.SaveInFlyFile = false;
|
gOrigPos = gBoxObj.Position.Copy();
|
gBoxObj.SetParam(5450, 1);
|
setTransparency();
|
setSize();
|
$("#StartStop").text(SGLang.i18n("Stop"));
|
|
if (fromClick) {
|
gCrossActivate = 2;
|
if (gPopup != null)
|
SGWorld.Window.RemovePopup(gPopup);
|
var url = abspath() + "/CrossSectionPopup.html?ObjID=" + gBoxObj.ID + "&lang=" + SGLang.getCode();
|
gPopup = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("ToolName"), url, 20, 265, 400, 50, -1);
|
gPopup.Flags = 2 + 32;
|
$("#DirectionSlider").slider("value", gCursorPos.Yaw % 360);
|
SGWorld.Window.ShowPopup(gPopup);
|
//gDoubleSide = SGWorld.GetParam(7700); // Double Side Rendering
|
//SGWorld.SetParam(7700,1);
|
}
|
}
|
catch (err) { }
|
}
|
|
//--------------
|
function OnRButtonUp(Flags, X, Y) {
|
if (gCrossActivate == 1) {
|
Reset(false, false);
|
return true;
|
}
|
return false;
|
}
|
|
//--------------
|
function setColor() {
|
// try {
|
// if (gBoxObj != null) {
|
// gBoxObj.FillStyle.Color.FromHTMLColor("#" + $("#color").val());
|
// gBoxObj.LineStyle.Color.FromHTMLColor("#" + $("#color").val());
|
// setTransparency();
|
// }
|
// }
|
// catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
function setTransparency() {
|
|
var a = $("#TransparencySlider").slider("value");
|
try {
|
gBoxObj.FillStyle.Color.SetAlpha(0);
|
// if (gBoxObj != null) {
|
// gBoxObj.FillStyle.Color.SetAlpha(a/200);
|
// }
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
function setSize() {
|
|
var size = $("#SizeSlider").slider("value");
|
try {
|
if (gBoxObj != null) {
|
var boxSize = gOriginBoxSize / 50 * $("#SizeSlider").slider("value");
|
gBoxObj.Width = boxSize;
|
gBoxObj.Depth = boxSize;
|
gBoxObj.Height = boxSize / 100;
|
}
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
function setDirection() {
|
var direction = $("#DirectionSlider").slider("value");
|
try {
|
if (gBoxObj != null && gCrossActivate == 2) {
|
gBoxObj.Position.Yaw = direction;
|
}
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
//--------------
|
function SavePlane() {
|
try {
|
if (gBoxObj == null)
|
return;
|
|
var savedPos = gBoxObj.Position.Copy();
|
var savedObj = SGWorld.Creator.CreateBox(savedPos, gBoxObj.Width, gBoxObj.Depth, gBoxObj.Height, gBoxObj.LineStyle.Color, gBoxObj.FillStyle.Color, SGWorld.ProjectTree.RootID, SGLang.i18n("ToolName"));
|
savedObj.SetParam(5450, 1);
|
savedObj.FillStyle.Color.SetAlpha(0);
|
|
var messageURL = SGWorld.Application.ExecutablePath + "tools/CrossSection/CrossSectionPopup.html?ObjID=" + savedObj.ID + "&lang=" + SGLang.getCode();
|
var message = SGWorld.Creator.CreatePopupMessage(SGLang.i18n("ToolName"), messageURL, 1, 10, 300, 50, -1);
|
message.Flags = 2 + 32 + 512;
|
savedObj.Message.MessageID = message.ID;
|
|
SGWorld.Window.ShowMessageBarText(SGLang.i18n("ObjectSaved"));
|
}
|
catch (err) { if (gDebug) alert(err.message); }
|
}
|
|
|
//--------------
|
function OnInputModeChanged(mode) {
|
}
|
|
//------------
|
function OnSGWorldMessage(MessageID, SounrceID) {
|
|
try {
|
if (SounrceID == "MessageBarText" && MessageID.indexOf("##CrossSectionExit:") == 0) {
|
var objID = MessageID.substring(MessageID.indexOf(":") + 1);
|
if (objID == gBoxObj.ID)
|
Reset(false, false);
|
return true;
|
}
|
}
|
catch (err) { return true; }
|
|
return false;
|
}
|
|
//------------
|
function showCrossSection() {
|
}
|
</script>
|
</body>
|
</html>
|