123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527 |
- function Menu(layer) {
- this.layer = layer;
- this.clickItem;
- this.state = false;
- this.productEdit = null;
- this.init();
- };
- Menu.prototype.init = function () {
- this.dragWindow();
- this.addWallMenuItem();
- this.addDoorsMenuItem();
- this.addWindowMenuItem();
- this.addStairwayMenuItem();
- this.addBedroomMenuItem();
- this.addOutsideMenuItem();
- this.addFloorMenuItem();
- this.addWallpaperMenuItem();
- this.addsoftDecorationMenuItem();
- //this.addMenuItemEvents();
- this.addMenuTabsEvent();
- //左上角的楼层按钮
- this.addfloorAddMenuItem();
- this.editProduct();
- var deletewall = document.getElementById("deleteWall");
- deletewall.addEventListener("click", Menu.prototype.deleteWall.bind(this));
- var changeWall = document.getElementById("changeWall");
- changeWall.addEventListener("click", Menu.prototype.changeWall.bind(this));
- };
- //使得弹出框能拖拽
- Menu.prototype.dragWindow = function () {
- ["editproducttitle", "addModelTitle", "addfloorTitle", "edit2DTitle"].forEach(function (id) {
- var header = document.getElementById(id);
- var control = {};
- control.dragging = false;
- control.lastX = 0;
- control.lastY = 0;
- var configWindow = header.parentElement;
- header.addEventListener("mousedown", function (e) {
- control.dragging = true;
- control.lastX = e.clientX;
- control.lastY = e.clientY;
- this.layer.control.draggingDialog = true;
- e.stopPropagation();
- }.bind(this));
- header.addEventListener("mouseup", function (e) {
- control.dragging = false;
- control.lastX = 0;
- control.lastY = 0;
- this.layer.control.draggingDialog = false;
- e.stopPropagation();
- }.bind(this));
- document.addEventListener("mousemove", function (e) {
- if (control.dragging) {
- var dx = e.clientX - control.lastX;
- var dy = e.clientY - control.lastY;
- var top = configWindow.style.top.replace("px", "");
- var left = configWindow.style.left.replace("px", "");
- top = parseInt(top);
- left = parseInt(left);
- top += dy;
- left += dx;
- configWindow.style.top = top + "px";
- configWindow.style.left = left + "px";
- control.lastX = e.clientX;
- control.lastY = e.clientY;
- }
- e.stopPropagation();
- }.bind(this));
- for (var i = 0; i < header.childNodes.length; ++i) {
- if (header.childNodes[i].className == "window-close") {
- header.childNodes[i].addEventListener("click", function () {
- configWindow.style.display = "none";
- });
- break;
- }
- }
- });
- ["edit2D1", "edit2D2"].forEach(function (id) {
- var range = document.getElementById(id);
- var value = null;
- if (id == "edit2D1") {
- value = document.getElementById("edit2D11");
- }
- else if (id == "edit2D2") {
- value = document.getElementById("edit2D22");
- }
- else {
- return;
- }
- range.addEventListener("input", function () {
- value.value = range.value;
- var id = this.layer.select.selectWall.wallid;
- var index = this.layer.select.selectWall.index;
- if (range.id == "edit2D1") {
- this.layer.vectors[id].geometry.wallInfo[index].thick = parseInt(range.value);
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- }
- else if (range.id == "edit2D2") {
- this.layer.vectors[id].geometry.wallInfo[index].height = parseInt(range.value);
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- }
- }.bind(this), false);
- });
- }
- Menu.prototype.addfloorAddMenuItem = function () {
- var button = document.getElementById("floorAdd");
- button.addEventListener("click", Menu.prototype.showDialog.bind(this));
- //开始时,自动添加一层
- var controlFloor = document.getElementById("wnp-floor-controller-node");
- var a = document.createElement("a");
- a.setAttribute('class', 'photonui-wnpfloorcontrollerbutton photonui-widget editable deletable selected');
- var span = document.createElement("span");
- var index = parseInt(button.rel);
- span.innerHTML = "+0.00米" + " " + index + "楼";
- a.appendChild(span);
- var div1 = document.createElement("div");
- div1.setAttribute('class', 'delete');
- div1.innerText = "x";
- //删除
- div1.addEventListener("click", Menu.prototype.deleteFloors.bind(this));
- a.appendChild(div1);
- var div2 = document.createElement("div");
- div2.setAttribute('class', 'settings');
- div2.style = "color: rgb(0, 255, 0);";
- div2.innerText = "i";
- a.appendChild(div2);
- a.rel = index;
- // 选择楼层
- a.addEventListener("click", Menu.prototype.seleteFloor.bind(this));
- controlFloor.insertBefore(a, button);
- var createbutton = document.getElementById("widget-createfloor");
- var cancelbutton = document.getElementById("widget-cancelfloor");
- createbutton.addEventListener("click", Menu.prototype.createFloor.bind(this));
- cancelbutton.addEventListener("click", Menu.prototype.cancelFloor.bind(this));
- //编辑弹出框的checkbox
- var check1 = document.getElementById("wnp-floor-controller_walls");
- var check2 = document.getElementById("wnp-floor-controller_overtures");
- var check3 = document.getElementById("wnp-floor-controller_stairways");
- check1.addEventListener("click", function (e) {
- if (e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = false;
- }
- else if (!e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = true;
- }
- }.bind(this));
- check2.addEventListener("click", function (e) {
- if (e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = false;
- }
- else if (!e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = true;
- }
- }.bind(this));
- check3.addEventListener("click", function (e) {
- if (e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = false;
- }
- else if (!e.currentTarget.children[0].checked) {
- e.currentTarget.children[0].checked = true;
- }
- }.bind(this));
- };
- //显示添加楼层的弹出框
- Menu.prototype.showDialog = function (e) {
- var newfloor = document.getElementById("editFloor");
- newfloor.style.display = "";
- document.getElementById("wnp-floor-controller_walls-input").checked = true;
- document.getElementById("wnp-floor-controller_overtures-input").checked = true;
- e.stopPropagation();
- };
- Menu.prototype.createFloor = function (e) {
- var but = document.getElementById("floorAdd");
- var index = parseInt(but.rel);
- ++index;
- but.rel = index;
- var height = this.layer.parameter.floorHeight * (index - 1);
- var controlFloor = document.getElementById("wnp-floor-controller-node");
- var a = document.createElement("a");
- a.rel = index;
- a.setAttribute('class', 'photonui-wnpfloorcontrollerbutton photonui-widget editable deletable selected');
- var span = document.createElement("span");
- span.innerHTML = "+" + height.toFixed(2) + "米 " + index + "楼";
- a.appendChild(span);
- var div1 = document.createElement("div");
- div1.setAttribute('class', 'delete');
- div1.innerText = "x";
- //删除
- div1.addEventListener("click", Menu.prototype.deleteFloors.bind(this));
- a.appendChild(div1);
- var div2 = document.createElement("div");
- div2.setAttribute('class', 'settings');
- div2.style = "color: rgb(0, 255, 0);";
- div2.innerText = "i";
- a.appendChild(div2);
- // 选择楼层
- a.addEventListener("click", Menu.prototype.seleteFloor.bind(this));
- for (var i = 0; i < controlFloor.children.length - 1; ++i) {
- controlFloor.children[i].classList.remove("selected");
- }
- controlFloor.insertBefore(a, but);
- this.layer.selectFloor = index;
- this.copyFloor();
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- if (show3D) {
- my3DEngine.decorate3D.deleteRoomMeshes();
- GetWallPoints(layer);
- if (!one3d) {
- //initRoom3D();
- one3d = true;
- }
- my3DEngine.scene3D.render();
- }
- //编辑
- //div2.addEventListener("click",Menu.prototype.editFloor.bind(this));
- var newfloor = document.getElementById("editFloor");
- newfloor.style.display = "none";
- e.stopPropagation();
- };
- //从下一楼层拷贝过来
- //wnp-floor-controller_walls-input表示墙
- //wnp-floor-controller_overtures-input表示门,窗
- Menu.prototype.copyFloor = function () {
- var wallc = document.getElementById("wnp-floor-controller_walls-input");
- var doorwindowc = document.getElementById("wnp-floor-controller_overtures-input");
- if (wallc.checked) {
- for (var i = 0; i < this.layer.data2d.wallIds.length; ++i) {
- var id = this.layer.data2d.wallIds[i];
- if (this.layer.vectors[id].geometry.floor == (parseInt(this.layer.selectFloor) - 1)) {
- //var points = this.layer.vectors[id].geometry.points;
- var points = [];
- for (var k = 0; k < this.layer.vectors[id].geometry.points.length; ++k) {
- points[k] = {};
- points[k].x = this.layer.vectors[id].geometry.points[k].x;
- points[k].y = this.layer.vectors[id].geometry.points[k].y;
- }
- var wall = new Wall(points, document.getElementById("imgWall"));
- var vector = new Vector(wall, wallStyle);
- vector.geometry.floor = parseInt(this.layer.selectFloor);
- vector.geometry.state = this.layer.vectors[id].geometry.state;
- //vector.geometry.copyWallId = id;
- this.layer.drawSingleVector(vector);
- this.layer.data2d.wallIds.push(vector.id);
- if (doorwindowc.checked) {
- for (var j in this.layer.vectors[id].symbol2Ds) {
- var symbolid = this.layer.vectors[id].symbol2Ds[j].id;
- var symbolpoints = this.layer.vectors[symbolid].geometry.points;
- var symbol = this.layer.build.createSymbol2(this.layer.vectors[symbolid].geometry.geoType);
- if (symbol == null) {
- alert("149");
- }
- else {
- symbol.geometry.point1 = {};
- symbol.geometry.point1.x = this.layer.vectors[symbolid].geometry.point1.x;
- symbol.geometry.point1.y = this.layer.vectors[symbolid].geometry.point1.y;
- symbol.geometry.point2 = {};
- symbol.geometry.point2.x = this.layer.vectors[symbolid].geometry.point2.x;
- symbol.geometry.point2.y = this.layer.vectors[symbolid].geometry.point2.y;
- for (var i = 0; i < symbolpoints.length; ++i) {
- if (symbolpoints[i].x) {
- symbol.geometry.points[i] = {};
- symbol.geometry.points[i].x = symbolpoints[i].x;
- symbol.geometry.points[i].y = symbolpoints[i].y;
- }
- else {
- symbol.geometry.points[i] = symbolpoints[i];
- }
- }
- symbol.geometry.wallType = this.layer.vectors[symbolid].geometry.wallType;
- symbol.attributes.wallId = this.layer.vectors[symbolid].attributes.wallId;
- symbol.attributes.wallendindex = this.layer.vectors[symbolid].attributes.wallendindex;
- symbol.attributes.wallstartindex = this.layer.vectors[symbolid].attributes.wallstartindex;
- symbol.attributes.toward = this.layer.vectors[symbolid].attributes.toward;
- symbol.attributes.draw = this.layer.vectors[symbolid].attributes.draw;
- symbol.attributes.selectSymbolIds = [];
- this.layer.drawSingleVector(symbol);
- symbol.geometry.floor = parseInt(this.layer.selectFloor);
- vector.symbol2Ds[symbolid] = symbol;
- ++vector.symbol2dsCount;
- this.layer.data2d.symbol2DIds.push(symbol.id);
- }
- }
- }
- }
- }
- }
- };
- //选择楼层
- Menu.prototype.seleteFloor = function (e) {
- var controlFloor = document.getElementById("wnp-floor-controller-node");
- for (var i = 0; i < controlFloor.children.length - 1; ++i) {
- controlFloor.children[i].classList.remove("selected");
- }
- e.currentTarget.classList.add("selected");
- this.layer.selectFloor = e.currentTarget.rel;
- if (document.getElementById("mainMenuTitle").innerHTML == "绘图") {
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- }
- else {
- my3DEngine.decorate3D.showFloors(parseInt(this.layer.selectFloor));
- my3DEngine.decorate3D.hideFloors(parseInt(this.layer.selectFloor));
- if (document.getElementById("transparencyButton").children[0].children[0].src.indexOf("icon-opacity.png") > -1) {
- my3DEngine.decorate3D.transparentWall(0.05);
- }
- else {
- my3DEngine.decorate3D.transparentWall(1);
- }
- }
- e.stopPropagation();
- };
- Menu.prototype.cancelFloor = function (e) {
- var newfloor = document.getElementById("editFloor");
- newfloor.style.display = "none";
- e.stopPropagation();
- };
- //删除楼层
- //"floorAdd"的rel表示当前的楼层是多少
- Menu.prototype.deleteFloors = function (e) {
- if (window.confirm('你确定要删除楼层吗?')) {
- var but = document.getElementById("floorAdd");
- var index = parseInt(but.rel);
- --index;
- but.rel = index;
- var controlFloor = document.getElementById("wnp-floor-controller-node");
- var deletefloor = null;
- for (var i = 0; i < controlFloor.children.length - 1; ++i) {
- if (e.currentTarget.parentElement == controlFloor.children[i]) {
- deletefloor = i;
- controlFloor.removeChild(controlFloor.children[i]);
- --i;
- if (i != -1) {
- this.layer.selectFloor = i + 1;
- controlFloor.children[i].classList.add("selected");
- }
- else {
- this.layer.selectFloor = i;
- controlFloor.children[0].classList.add("selected");
- }
- continue;
- }
- else if (deletefloor) {
- var floor = controlFloor.children[i].rel;
- floor = parseInt(floor);
- --floor;
- controlFloor.children[i].rel = floor;
- var height = this.layer.parameter.floorHeight * (floor - 1);
- controlFloor.children[i].children[0].innerHTML = "+" + height.toFixed(2) + " " + floor + "楼";
- controlFloor.children[i].classList.remove("selected");
- }
- }
- }
- e.stopPropagation();
- };
- Menu.prototype.addWallMenuItem = function () {
- var id = this.layer.parameter.draw2DMenuItemsId[0];
- var name = this.layer.parameter.menuitem2DName[0];
- var menuitems = this.layer.parameter.menuitemwall;
- this.addSymbolMenuItem(id, name, menuitems, 0);
- };
- Menu.prototype.addDoorsMenuItem = function () {
- var id = this.layer.parameter.draw2DMenuItemsId[1];
- var name = this.layer.parameter.menuitem2DName[1];
- var menuitems = this.layer.parameter.menuitemdoor;
- this.addSymbolMenuItem(id, name, menuitems, 0);
- };
- Menu.prototype.addWindowMenuItem = function () {
- var id = this.layer.parameter.draw2DMenuItemsId[2];
- var name = this.layer.parameter.menuitem2DName[2];
- var menuitems = this.layer.parameter.menuitemwindow;
- this.addSymbolMenuItem(id, name, menuitems, 0);
- };
- Menu.prototype.addStairwayMenuItem = function () {
- var id = this.layer.parameter.draw2DMenuItemsId[3];
- var name = this.layer.parameter.menuitem2DName[3];
- var menuitems = this.layer.parameter.menuitemstairway;
- this.addSymbolMenuItem(id, name, menuitems, 0);
- };
- Menu.prototype.addBedroomMenuItem = function () {
- var id = this.layer.parameter.draw3DMenuItemsId[0];
- var name = this.layer.parameter.menuitem3DName[0];
- var menuitems = this.layer.parameter.menuitembedroom;
- this.addSymbolMenuItem(id, name, menuitems, 1);
- document.getElementById(this.layer.parameter.draw3DMenuItemsId[0]).style.display = "none";
- };
- Menu.prototype.addOutsideMenuItem = function () {
- var id = this.layer.parameter.drawDecorateMenuItemsId[0];
- var name = this.layer.parameter.menuitemDecorateName[0];
- this.addDecorateMenuItem(id, name);
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[0]).style.display = "none";
- };
- Menu.prototype.addWallpaperMenuItem = function () {
- var id = this.layer.parameter.drawDecorateMenuItemsId[1];
- var name = this.layer.parameter.menuitemDecorateName[1];
- this.addDecorateMenuItem2(id, name);
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[1]).style.display = "none";
- };
- Menu.prototype.addFloorMenuItem = function () {
- var id = this.layer.parameter.drawDecorateMenuItemsId[2];
- var name = this.layer.parameter.menuitemDecorateName[2];
- this.addDecorateMenuItem3(id, name);
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[2]).style.display = "none";
- };
- Menu.prototype.addsoftDecorationMenuItem = function () {
- var id = this.layer.parameter.drawDecorateMenuItemsId[3];
- var name = this.layer.parameter.menuitemDecorateName[3];
- var menuitems = this.layer.parameter.menuitemsoftDecoration;
- this.addSymbolMenuItem(id, name, menuitems, 1);
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[3]).style.display = "none";
- };
- //添加墙和地板的贴图
- Menu.prototype.addDecorateMenuItem3 = function (id, name) {
- var symbol = document.createElement("li");
- symbol.id = id;
- symbol.className = "menu-item menu-subitem";
- var span = document.createElement("span");
- span.className = "menu-title";
- var oText = document.createTextNode(name);
- span.appendChild(oText);
- symbol.appendChild(span);
- symbol.addEventListener("click", Menu.prototype.opened2.bind(this));
- var ul = this.addWallFloorTexture();
- symbol.appendChild(ul);
- var main = document.getElementById("mainMenuContentList");
- main.appendChild(symbol);
- };
- //添加装修墙纸
- Menu.prototype.addDecorateMenuItem2 = function (id, name) {
- var symbol = document.createElement("li");
- symbol.id = id;
- symbol.className = "menu-item menu-subitem";
- var span = document.createElement("span");
- span.className = "menu-title";
- var oText = document.createTextNode(name);
- span.appendChild(oText);
- symbol.appendChild(span);
- symbol.addEventListener("click", Menu.prototype.opened2.bind(this));
- var ul = this.addPaint();
- symbol.appendChild(ul);
- var main = document.getElementById("mainMenuContentList");
- main.appendChild(symbol);
- };
- //添加装修户外
- Menu.prototype.addDecorateMenuItem = function (id, name) {
- var symbol = document.createElement("li");
- symbol.id = id;
- symbol.className = "menu-item menu-subitem";
- var span = document.createElement("span");
- span.className = "menu-title";
- var oText = document.createTextNode(name);
- span.appendChild(oText);
- symbol.appendChild(span);
- symbol.addEventListener("click", Menu.prototype.opened2.bind(this));
- var ul = this.addGround();
- symbol.appendChild(ul);
- var main = document.getElementById("mainMenuContentList");
- main.appendChild(symbol);
- };
- //0表示二维,1表示三维
- Menu.prototype.addSymbolMenuItem = function (id, name, menuitems, flag) {
- var symbol = document.createElement("li");
- symbol.id = id;
- symbol.className = "menu-item menu-subitem";
- var span = document.createElement("span");
- span.className = "menu-title";
- var oText = document.createTextNode(name);
- span.appendChild(oText);
- symbol.appendChild(span);
- symbol.addEventListener("click", Menu.prototype.opened);
- var ul = document.createElement("ul");
- var len = menuitems.length;
- for (var i = 0; i < len; ++i) {
- var li = document.createElement("li");
- li.id = "menuitem" + id + i;
- li.className = "menu-item";
- var span = document.createElement("span");
- span.className = "menu-title";
- var oText = document.createTextNode(menuitems[i]);
- span.appendChild(oText);
- li.appendChild(span);
- if (flag == 0) {
- var type = this.Events[0][0];
- var listener = this.Events[0][1];
- li.addEventListener(type, listener.bind(this), true);
- }
- else if (flag == 1) {
- li.addEventListener("click", Menu.prototype.openProduct);
- }
- else if (flag == 2) {
- var type = this.Events[2][0];
- var listener = this.Events[2][1];
- li.addEventListener(type, listener.bind(this), true);
- }
- ul.appendChild(li);
- }
- symbol.appendChild(ul);
- var main = document.getElementById("mainMenuContentList");
- main.appendChild(symbol);
- };
- Menu.prototype.addMenuTabsEvent = function () {
- var tabs = document.getElementById("mainMenuTabs");
- var len = mainMenu.children.length;
- for (var i = 0; i < len; ++i) {
- var tab = tabs.children[i];
- var type = this.Events[1][0];
- var listener = this.Events[1][1];
- listener = CanvasSketch.bindAsEventListener(listener, this);
- tab.addEventListener(type, listener, true);
- }
- };
- Menu.prototype.addMenuItemEvents = function () {
- var mainMenu = document.getElementById("mainMenuContentList");
- //var len=mainMenu.children.length;
- var len = 3;
- for (var i = 0; i < len; ++i) {
- var item = mainMenu.children[i];
- item.addEventListener("click", Menu.prototype.opened);
- var ul = item.lastChild;
- for (var j = 0; j < ul.children.length; ++j) {
- var childitem = ul.children[j];
- var type = this.Events[0][0];
- var listener = this.Events[0][1];
- listener = CanvasSketch.bindAsEventListener(listener, this);
- childitem.addEventListener(type, listener, true);
- childitem.children[0].addEventListener(type, listener, true);
- }
- }
- };
- // 点击绘图各个菜单 改变当前绘画状态
- Menu.prototype.add2DSymbol = (function () {
- // 各大菜单策咯 index为第几个菜单,id为点击的菜单的标识
- var strategy = {
- menuitemrooms_walls: function (index) {
- this.tryAddSymbol = null
- this.layer.currentState.addSymbol = null;
- this.layer.currentState.startbuild = index ? "partition" : "wall";
-
- },
- menuitemdoors: function (index, id) {
- this.layer.currentState.startbuild = null
- this.layer.currentState.addSymbol = id;
- this.layer.build.createSymbol(id);
- console.log(this.layer.build)
- }
- }
- strategy.menuitemstairways = strategy.menuitemwindows = strategy.menuitemdoors;
- return function (e) {
- var target = e.currentTarget
- var result = /\d$/.exec(target.id)
- var instructions = result && target.id.substr(0, result.index)
- if (strategy[instructions]){
- strategy[instructions].call(this, Number(result[0]), result.input)
- e.stopPropagation()
- }
- }
- })()
- Menu.prototype.addWallFloorTexture = function (e) {
- var ul_floor = document.createElement("ul");
- ul_floor.className = "layout-table-60";
- for (var i = 0; i < this.layer.parameter.floorTypeLength; ++i) {
- var li_floor = document.createElement("li");
- li_floor.id = "floor" + i;
- li_floor.className = "menu-item";
- var span = document.createElement("span");
- span.className = "menu-icon";
- var img = document.createElement("img");
- img.src = this.layer.parameter.floorSrc_Pre + i + ".jpg";
- img.id = "txt_img" + i;
- span.appendChild(img);
- li_floor.appendChild(span);
- if (i == 0) {
- li_floor.classList.add("selected");
- ul_floor.lang = i;
- }
- ul_floor.appendChild(li_floor);
- }
- ul_floor.addEventListener("click", function (e) {
- if (e.target.parentNode.className == "menu-icon") {
- var img = document.getElementById(e.target.id);
- my3DEngine.decorate3D.floors.floorImg = img.src;
- my3DEngine.paint.beginPaint = true;
- var txtindex = img.id.replace("txt_img", "");
- ul_floor.children[ul_floor.lang].classList.remove("selected");
- ul_floor.children[parseInt(txtindex)].classList.add("selected");
- ul_floor.lang = parseInt(txtindex);
- document.getElementById("container3d").style.cursor = "url('images/brush.ico'),auto";
- }
- });
- return ul_floor;
- };
- Menu.prototype.addPaint = function (e) {
- var ul = document.createElement("ul");
- ul.className = "layout-table-26";
- for (var i = 0; i < this.layer.parameter.paint.length; ++i) {
- var li = document.createElement("li");
- li.id = "paintitem" + i;
- li.className = "menu-item";
- var span = document.createElement("span");
- span.className = "menu-icon";
- span.style.backgroundColor = this.layer.parameter.paint[i];
- if (i == 0) {
- li.classList.add("selected");
- ul.lang = i;
- }
- li.appendChild(span);
- ul.appendChild(li);
- }
- ul.addEventListener("click", function (e) {
- if (e.target.className == "menu-icon") {
- var parentid = e.target.parentNode.id;
- document.getElementById(parentid).classList.add("selected");
- my3DEngine.paint.beginPaint = true;
- my3DEngine.paint.value = document.getElementById(parentid).children[0].style.backgroundColor;
- var color = my3DEngine.paint.value.replace("rgb(", "").replace(")", "").split(",");
- my3DEngine.paint.value = {};
- my3DEngine.paint.value.r = color[0].trim() / 255;
- my3DEngine.paint.value.g = color[1].trim() / 255;
- my3DEngine.paint.value.b = color[2].trim() / 255;
- var selectid = "paintitem" + ul.lang;
- document.getElementById(selectid).classList.remove("selected");
- ul.lang = parentid.replace("paintitem", "");
- document.getElementById("container3d").style.cursor = "url('images/brush.ico'),auto";
- }
- });
- return ul;
- };
- Menu.prototype.addGround = function (e) {
- var ul = document.createElement("ul");
- ul.className = "layout-list";
- var li = document.createElement("li");
- li.id = "ground";
- li.className = "menu-item menu-subitem";
- var span = document.createElement("span");
- span.className = "menu-title";
- span.innerText = "地面";
- li.appendChild(span);
- ul.appendChild(li);
- var ul_ground = document.createElement("ul");
- ul_ground.className = "layout-table-60";
- for (var i = 0; i < this.layer.parameter.groundTypeLength; ++i) {
- var li_ground = document.createElement("li");
- li_ground.id = "ground" + i;
- li_ground.className = "menu-item";
- var span = document.createElement("span");
- span.className = "menu-icon";
- var img = document.createElement("img");
- img.src = this.layer.parameter.groundSrc_Pre + i + ".jpg";
- img.id = "grd_img" + i;
- span.appendChild(img);
- li_ground.appendChild(span);
- if (i == 0) {
- li_ground.classList.add("selected");
- ul_ground.lang = i;
- }
- ul_ground.appendChild(li_ground);
- }
- li.appendChild(ul_ground);
- ul_ground.addEventListener("click", function (e) {
- if (e.target.parentNode.className == "menu-icon") {
- var img = document.getElementById(e.target.id);
- //my3DEngine.groundTexture=img.src;
- var grdindex = img.id.replace("grd_img", "");
- ul_ground.children[ul_ground.lang].classList.remove("selected");
- ul_ground.children[parseInt(grdindex)].classList.add("selected");
- ul_ground.lang = parseInt(grdindex);
- my3DEngine.decorate3D.refreshGround(img.src);
- }
- });
- var li2 = document.createElement("li");
- li2.id = "sky";
- li2.className = "menu-item menu-subitem";
- var span2 = document.createElement("span");
- span2.className = "menu-title";
- span2.innerText = "天空";
- li2.appendChild(span2);
- ul.appendChild(li2);
- var ul_sky = document.createElement("ul");
- ul_sky.className = "layout-table-60";
- for (var i = 0; i < this.layer.parameter.skyTypeLength; ++i) {
- var li_sky = document.createElement("li");
- li_sky.id = "sky" + i;
- li_sky.className = "menu-item";
- var span = document.createElement("span");
- span.className = "menu-icon";
- var img = document.createElement("img");
- img.src = this.layer.parameter.skySrc_Pre + i + ".jpg";
- img.id = "sky_img" + i;
- span.appendChild(img);
- li_sky.appendChild(span);
- if (i == 0) {
- li_sky.classList.add("selected");
- ul_sky.lang = i;
- }
- ul_sky.appendChild(li_sky);
- }
- li2.appendChild(ul_sky);
- ul_sky.addEventListener("click", function (e) {
- if (e.target.parentNode.className == "menu-icon") {
- var img = document.getElementById(e.target.id);
- var skyindex = img.id.replace("sky_img", "");
- ul_sky.children[ul_sky.lang].classList.remove("selected");
- ul_sky.children[parseInt(skyindex)].classList.add("selected");
- ul_sky.lang = parseInt(skyindex);
- my3DEngine.decorate3D.refreshSkybox(img.src.replace(".jpg", ""));
- }
- });
- return ul;
- };
- Menu.prototype.opened = function (e) {
- if (e.currentTarget.className == "menu-item menu-subitem") {
- e.currentTarget.className = "menu-item menu-subitem selected opened";
- }
- else if (e.currentTarget.className == "menu-item menu-subitem selected opened") {
- e.currentTarget.className = "menu-item menu-subitem";
- }
- };
- Menu.prototype.opened2 = function (e) {
- if (e.currentTarget.className == "menu-item menu-subitem") {
- e.currentTarget.className = "menu-item menu-subitem selected opened";
- }
- else if (e.currentTarget.className == "menu-item menu-subitem selected opened") {
- if (e.target.id == this.layer.parameter.drawDecorateMenuItemsId[0]) {
- e.currentTarget.className = "menu-item menu-subitem";
- }
- else if (e.target.id == this.layer.parameter.drawDecorateMenuItemsId[1]) {
- e.currentTarget.className = "menu-item menu-subitem";
- }
- else if (e.target.id == this.layer.parameter.drawDecorateMenuItemsId[2]) {
- e.currentTarget.className = "menu-item menu-subitem";
- }
- }
- };
- Menu.prototype.show2D = function () {
- var container2d = document.getElementById("container2d");
- container2d.style.display = "block";
- container2d.style.cursor = "default";
- container3d.style.display = "none";
- document.getElementById("mark").style.marginTop = this.layer.scale.top;
- document.getElementById("mainMenuTitle").innerHTML = "绘图";
- for (var i = 0; i < this.layer.parameter.draw2DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw2DMenuItemsId[i]).style.display = "block";
- }
- for (var i = 0; i < this.layer.parameter.draw3DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw3DMenuItemsId[i]).style.display = "none";
- }
- for (var i = 0; i < this.layer.parameter.drawDecorateMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[i]).style.display = "none";
- }
- show3D = false;
- document.getElementById("lock-icon").classList.add("hidden");
- document.getElementById("transparencyButton").classList.add("hidden");
- };
- Menu.prototype.addSelectTab = function (e) {
- var tabs = document.getElementById("mainMenuTabs");
- var len = mainMenu.children.length;
- for (var i = 0; i < len; ++i) {
- var tab = tabs.children[i];
- tab.classList.remove("selected");
- }
- e.currentTarget.classList.add("selected");
- var container2d = document.getElementById("container2d");
- var container3d = document.getElementById("container3d");
- if (e.currentTarget.id == "draw2D") {
- this.show2D();
- }
- else if (e.currentTarget.id == "furnishing3D") {
- container3d.style.display = "block";
- container3d.style.cursor = "default";
- container2d.style.display = "none";
- document.getElementById("mark").style.marginTop = this.layer.scale.top3d;
- document.getElementById("mainMenuTitle").innerHTML = "家具";
- for (var i = 0; i < this.layer.parameter.draw2DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw2DMenuItemsId[i]).style.display = "none";
- }
- for (var i = 0; i < this.layer.parameter.drawDecorateMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[i]).style.display = "none";
- }
- for (var i = 0; i < this.layer.parameter.draw3DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw3DMenuItemsId[i]).style.display = "block";
- }
- Show3DBase();
- document.getElementById("lock-icon").classList.remove("hidden");
- document.getElementById("transparencyButton").classList.remove("hidden");
- }
- else if (e.currentTarget.id == "decorate3D") {
- if (container2d.style.display == "block") {
- container3d.style.display = "block";
- container3d.style.cursor = "default";
- container2d.style.display = "none";
- document.getElementById("mark").style.marginTop = this.layer.scale.top3d;
- for (var i = 0; i < this.layer.parameter.draw2DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw2DMenuItemsId[i]).style.display = "none";
- }
- Show3DBase();
- }
- else {
- for (var i = 0; i < this.layer.parameter.draw3DMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.draw3DMenuItemsId[i]).style.display = "none";
- }
- }
- for (var i = 0; i < this.layer.parameter.drawDecorateMenuItemsId.length; ++i) {
- document.getElementById(this.layer.parameter.drawDecorateMenuItemsId[i]).style.display = "block";
- }
- document.getElementById("mainMenuTitle").innerHTML = "装修";
- document.getElementById("lock-icon").classList.remove("hidden");
- document.getElementById("transparencyButton").classList.remove("hidden");
- }
- };
- Menu.prototype.closeProduct = function (e) {
- var product = document.getElementById("productList");
- product.style.display = "none";
- };
- Menu.prototype.editProduct = function (e) {
- var product_size = document.getElementById("editsize");
- var product_ptrot = document.getElementById("editptrot");
- var tabSize = document.getElementById("tabSize");
- var tabPtRot = document.getElementById("tabPtRot");
- product_size.addEventListener("click", function () {
- if (product_size.className == "") {
- product_size.className = "active";
- tabSize.classList.add("active");
- product_ptrot.classList.remove("active");
- tabPtRot.classList.remove("active");
- }
- });
- product_ptrot.addEventListener("click", function () {
- if (product_ptrot.className == "") {
- product_ptrot.className = "active";
- tabPtRot.classList.add("active");
- product_size.classList.remove("active");
- tabSize.classList.remove("active");
- }
- });
- /*
- var header=document.getElementById("editproducttitle");
- if(this.productEdit==null)
- {
- this.productEdit={};
- this.productEdit.dragging=false;
- this.productEdit.lastX=null;
- this.productEdit.lastY=null;
- }
- //var dragging=false;
- //var lastX,lastY;
- var configuratorProduct=document.getElementById("configuratorWindow");
-
- header.addEventListener("mousedown", function(e){
- this.productEdit.dragging=true;
- this.productEdit.lastX = e.clientX;
- this.productEdit.lastY = e.clientY;
- e.stopPropagation();
- }.bind(this));
-
- header.addEventListener("mouseup", function(e){
- this.productEdit.dragging=false;
- e.stopPropagation();
- }.bind(this));
-
- document.addEventListener("mousemove", function(e){
- if(this.productEdit.dragging)
- {
- var dx = e.clientX - this.productEdit.lastX;
- var dy = e.clientY - this.productEdit.lastY;
- var top=configuratorProduct.style.top.replace("px","");
- var left=configuratorProduct.style.left.replace("px","");
- top=parseInt(top);
- left=parseInt(left);
- top+=dy;
- left+=dx;
- configuratorProduct.style.top=top+"px";
- configuratorProduct.style.left=left+"px";
- this.productEdit.lastX = e.clientX;
- this.productEdit.lastY = e.clientY;
- }
- e.stopPropagation();
- }.bind(this));
-
- header.childNodes[0].addEventListener("click",function(){
- configuratorProduct.style.display="none";
- });
- */
- var anglevalue = document.getElementById("angleValue");
- var range = document.getElementById("rangeAngle");
- range.addEventListener("input", function () {
- anglevalue.value = range.value;
- var diffangle = range.value / 180 * Math.PI - my3DEngine.action3D.currentModelMesh.rotation.y;
- my3DEngine.action3D.currentModelMesh.rotate(BABYLON.Axis.Y, diffangle, BABYLON.Space.LOCAL);
- my3DEngine.action3D.currentModelMesh.rotation.y += diffangle;
- my3DEngine.action3D.currentModelMesh.angle = my3DEngine.action3D.currentModelMesh.rotation.y;
- for (var i = 0; i < my3DEngine.collectMeshes.arrowMeshes.length; ++i) {
- if (my3DEngine.collectMeshes.arrowMeshes[i] != null && typeof (my3DEngine.collectMeshes.arrowMeshes[i]) != "undefined") {
- my3DEngine.collectMeshes.arrowMeshes[i].dispose();
- my3DEngine.collectMeshes.arrowMeshes[i] = null;
- my3DEngine.collectMeshes.arrowMeshes.splice(i, 1);
- --i;
- }
- }
- }, false);
- var removeMesh = document.getElementById("removeMesh");
- removeMesh.addEventListener("click", function () {
- if (my3DEngine.action3D.currentModelMesh != null) {
- for (var i = 0; i < my3DEngine.collectMeshes.collidableMeshes.length; ++i) {
- if (my3DEngine.collectMeshes.collidableMeshes[i].name == my3DEngine.action3D.currentModelMesh.name) {
- my3DEngine.collectMeshes.collidableMeshes.splice(i, 1);
- --i;
- break;
- }
- }
- my3DEngine.action3D.currentModelMesh.dispose();
- my3DEngine.action3D.currentModelMesh = null;
- }
- if (my3DEngine.modelLoader.currentPhotoMesh != null) {
- my3DEngine.modelLoader.currentPhotoMesh.dispose();
- my3DEngine.modelLoader.currentPhotoMesh = null;
- }
- if (my3DEngine.collectMeshes.arrowMeshes.length > 0) {
- for (var i = 0; i < my3DEngine.collectMeshes.arrowMeshes.length; ++i) {
- my3DEngine.collectMeshes.arrowMeshes[i].dispose();
- my3DEngine.collectMeshes.arrowMeshes[i] = null;
- }
- }
- configuratorProduct.style.display = "none";
- my3DEngine.action3D.editProduct = false;
- });
- var editMesh = document.getElementById("editMesh");
- editMesh.addEventListener("click", function () {
- //var calculateLine=new CalculateLine();
- var calculateLine = layer.calculateLine;
- var length = document.getElementById("params-length").childNodes[1].childNodes[0].value;
- if (!calculateLine.checkRate(length)) {
- alert("输入的长度有误!");
- return;
- }
- length = parseFloat(length);
- var lastlength = document.getElementById("params-length").childNodes[1].childNodes[0].alt;
- var height = document.getElementById("params-height").childNodes[1].childNodes[0].value;
- if (!calculateLine.checkRate(height)) {
- alert("输入的高度有误!");
- return;
- }
- height = parseFloat(height);
- var lastheight = document.getElementById("params-height").childNodes[1].childNodes[0].alt;
- if (my3DEngine.action3D.currentModelMesh != null && my3DEngine.action3D.currentModelMesh.name != "photo") {
- var width = document.getElementById("params-width").childNodes[1].childNodes[0].value;
- if (!calculateLine.checkRate(width)) {
- alert("输入的宽度有误!");
- return;
- }
- width = parseFloat(width);
- var lastwidth = document.getElementById("params-width").childNodes[1].childNodes[0].alt;
- var positionX = document.getElementById("position-x").childNodes[1].childNodes[0].value;
- var positionY = document.getElementById("position-y").childNodes[1].childNodes[0].value;
- var positionZ = document.getElementById("position-z").childNodes[1].childNodes[0].value;
- if (!calculateLine.checkRate2(positionX)) {
- alert("输入的位置X有误!");
- return;
- }
- if (!calculateLine.checkRate2(positionY)) {
- alert("输入的位置Y有误!");
- return;
- }
- if (!calculateLine.checkRate2(positionZ)) {
- alert("输入的位置Z有误!");
- return;
- }
- var mesh = my3DEngine.action3D.currentModelMesh;
- mesh.position.x = parseFloat(positionX);
- mesh.position.y = parseFloat(positionY);
- mesh.position.z = parseFloat(positionZ);
- var newscal = new BABYLON.Vector3(length / lastlength * mesh.scaling.x.toFixed(2), height / lastheight * mesh.scaling.y.toFixed(2), width / lastwidth * mesh.scaling.z.toFixed(2));
- if (width != lastwidth) {
- mesh.scaling.z = newscal.z;
- }
- if (height != lastheight) {
- mesh.scaling.y = newscal.y;
- }
- if (length != lastlength) {
- mesh.scaling.x = newscal.x;
- }
- if (my3DEngine.collectMeshes.arrowMeshes.length > 0) {
- for (var i = 0; i < my3DEngine.collectMeshes.arrowMeshes.length; ++i) {
- my3DEngine.collectMeshes.arrowMeshes[i].dispose();
- my3DEngine.collectMeshes.arrowMeshes[i] = null;
- }
- }
- mesh.computeWorldMatrix(true);
- mesh.refreshBoundingInfo();
- my3DEngine.refreshSelectMesh(mesh);
- }
- else if (my3DEngine.modelLoader.currentPhotoMesh != null) {
- var mesh = my3DEngine.modelLoader.currentPhotoMesh;
- var newscal = new BABYLON.Vector2(length / lastlength * mesh.scaling.x.toFixed(2), height / lastheight * mesh.scaling.y.toFixed(2));
- if (length != lastlength) {
- mesh.scaling.x = newscal.x;
- mesh.length = length;
- }
- if (height != lastheight) {
- mesh.scaling.y = newscal.y;
- mesh.height = height;
- }
- }
- configuratorProduct.style.display = "none";
- my3DEngine.action3D.editProduct = false;
- });
- };
- Menu.prototype.openProduct = function (e) {
- var product = document.getElementById("productList");
- product.style.display = "block";
- var productItems = document.getElementById("productItems");
- while (productItems.hasChildNodes()) //当div下还存在子节点时 循环继续
- {
- productItems.removeChild(productItems.firstChild);
- }
- var load = document.createElement("div");
- load.id = "loadproduct";
- load.innerText = "加载中。。。";
- productItems.appendChild(load);
- var productCount = 0;
- var productDivs = [];
- var addProductItem = function (id, text, type) {
- var div = document.createElement("div");
- div.className = "product-item";
- div.id = "div" + id;
- div.addEventListener("click", function () {
- var div = document.getElementById(this.id);
- if (div != null) {
- div.children[0].className = "selected show";
- }
- });
- var span1 = document.createElement("span");
- span1.className = "selected";
- var oText = document.createTextNode("Added");
- span1.appendChild(oText);
- var span2 = document.createElement("span");
- span2.className = "product-item-image";
- var img = document.createElement("img");
- img.src = "images/product/" + id + ".jpg";
- img.id = "product" + id;
- if (type == 1) {
- img.addEventListener("click", showPhoFrame);
- }
- else if (type == 2) {
- img.addEventListener("click", showPicture);
- }
- else {
- img.addEventListener("click", showProduct3D);
- }
- span2.appendChild(img);
- var span3 = document.createElement("span");
- span3.className = "product-item-description";
- //span3.rel="wnp.engine3D.addProgrammable_"+id;
- var oText2 = document.createTextNode(text);
- span3.appendChild(oText2);
- div.appendChild(span1);
- div.appendChild(span2);
- div.appendChild(span3);
- --productCount;
- productDivs.push(div);
- if (productCount == 0) {
- for (var i = 0; i < productDivs.length; ++i) {
- productItems.appendChild(productDivs[i]);
- }
- productItems.removeChild(productItems.firstChild);
- }
- //return div;
- }
- if (e.target.innerHTML.indexOf(">床</span>") > 0) {
- productCount = 4;
- addProductItem("c1", "床1");
- addProductItem("c2", "床2");
- addProductItem("c3", "床3");
- addProductItem("c4", "床4");
- }
- else if (e.target.innerHTML.indexOf(">沙发</span>") > 0) {
- productCount = 12;
- addProductItem("s1", "沙发1");
- addProductItem("d", "沙发2");
- addProductItem("s3", "沙发3");
- addProductItem("s4", "沙发4");
- addProductItem("s5", "沙发5");
- addProductItem("s6", "沙发6");
- addProductItem("s7", "沙发7");
- addProductItem("s8", "沙发8");
- addProductItem("s9", "沙发9");
- addProductItem("s10", "沙发10");
- addProductItem("s11", "沙发11");
- addProductItem("s12", "沙发12");
- }
- else if (e.target.innerHTML.indexOf(">椅子</span>") > 0) {
- productCount = 10;
- addProductItem("y1", "椅子1");
- addProductItem("y2", "椅子2");
- addProductItem("y3", "椅子3");
- addProductItem("y4", "椅子4");
- addProductItem("y5", "椅子5");
- addProductItem("y6", "椅子6");
- addProductItem("y7", "椅子7");
- addProductItem("y8", "椅子8");
- addProductItem("y9", "椅子9");
- addProductItem("y10", "椅子10");
- }
- else if (e.target.innerHTML.indexOf(">柜子</span>") > 0) {
- productCount = 24;
- addProductItem("g1", "柜子1");
- addProductItem("g2", "柜子2");
- addProductItem("g3", "柜子3");
- addProductItem("g4", "柜子4");
- addProductItem("g5", "柜子5");
- addProductItem("g6", "柜子6");
- addProductItem("g7", "柜子7");
- addProductItem("g8", "柜子8");
- addProductItem("g9", "柜子9");
- addProductItem("g10", "柜子10");
- addProductItem("g11", "柜子11");
- addProductItem("g12", "柜子12");
- addProductItem("g13", "柜子13");
- addProductItem("g14", "柜子14");
- addProductItem("g15", "柜子15");
- addProductItem("g16", "柜子16");
- //addProductItem("g17","柜子17");
- addProductItem("g18", "柜子18");
- addProductItem("g19", "柜子19");
- addProductItem("g20", "柜子20");
- addProductItem("g21", "柜子21");
- addProductItem("g22", "柜子22");
- addProductItem("g23", "柜子23");
- addProductItem("g24", "柜子24");
- addProductItem("g25", "柜子25");
- }
- else if (e.target.innerHTML.indexOf(">桌子</span>") > 0) {
- productCount = 6;
- addProductItem("z1", "桌子1");
- addProductItem("z2", "桌子2");
- addProductItem("z3", "桌子3");
- addProductItem("z4", "桌子4");
- addProductItem("z5", "桌子5");
- addProductItem("gui", "桌子6");
- /*
- addProductItem("d1","桌子6");
- addProductItem("d2","桌子7");
- addProductItem("d3","桌子8");
- addProductItem("w1","桌子9");
- addProductItem("w2","桌子10");
- addProductItem("w3","桌子11");
- addProductItem("test","桌子12");
- addProductItem("test1","桌子13");
- addProductItem("test2","桌子14");
- */
- }
- else if (e.target.innerHTML.indexOf(">古董</span>") > 0) {
- productCount = 17;
- addProductItem("11", "古董1");
- addProductItem("12", "古董2");
- addProductItem("13", "古董3");
- addProductItem("15", "古董4");
- addProductItem("17", "古董5");
- addProductItem("21", "古董6");
- addProductItem("37", "古董7");
- addProductItem("44", "古董8");
- addProductItem("45", "古董9");
- addProductItem("52", "古董11");
- addProductItem("54", "古董12");
- addProductItem("64", "古董13");
- addProductItem("65", "古董14");
- addProductItem("66", "古董15");
- addProductItem("67", "古董16");
- addProductItem("84", "古董17");
- addProductItem("86", "古董18");
- }
- else if (e.target.innerHTML.indexOf(">相框</span>") > 0) {
- //productCount=11;
- productCount = 1;
- addProductItem("h2_11", "相框1", 1);
- /*
- addProductItem("h2_2","相框2",1);
- addProductItem("h2_3","相框3",1);
- addProductItem("h3_1","相框4",1);
- addProductItem("h3_2","相框5",1);
- addProductItem("h3_3","相框6",1);
- addProductItem("h3_4","相框7",1);
- addProductItem("h3_5","相框8",1);
- addProductItem("h4_1","相框9",1);
- addProductItem("h4_2","相框10",1);
- */
- }
- };
- Menu.prototype.deleteWall = function (e) {
- var wallid = this.layer.select.selectWall.wallid;
- var index = this.layer.select.selectWall.index;
- var state = this.layer.vectors[wallid].geometry.state;
- var vector = null;
- //0表示闭合
- if (state == 0) {
- this.layer.vectors[wallid].geometry.state = 1;
- //处理wallInfo
- if (index != this.layer.vectors[wallid].geometry.wallInfo.length - 1) {
- var wallInfo = [];
- var points = [];
- var mapping = {};
- for (var i = 0; i < this.layer.vectors[wallid].geometry.wallInfo.length; ++i) {
- mapping[i] = index + 1;
- wallInfo[i] = this.layer.vectors[wallid].geometry.wallInfo[index + 1];
- points[i] = this.layer.vectors[wallid].geometry.points[index + 1];
- ++index;
- if (index == this.layer.vectors[wallid].geometry.wallInfo.length - 1) {
- index = -1;
- }
- }
- //删除symbols
- for (var key in this.layer.vectors[wallid].symbol2Ds) {
- var symbol2d = this.layer.vectors[id].symbol2Ds[key];
- if (symbol2d.attributes.wallstartindex == index) {
- this.layer.deleteSymbol(symbol2d.id, symbol2d.attributes.wallId);
- }
- else {
- symbol2d.wallstartindex = mapping[symbol2d.wallstartindex];
- symbol2d.wallendindex = mapping[symbol2d.wallendindex];
- }
- }
- this.layer.vectors[wallid].geometry.wallInfo = wallInfo;
- this.layer.vectors[wallid].geometry.points = points;
- }
- //删除symbols
- else {
- for (var key in this.layer.vectors[wallid].symbol2Ds) {
- var symbol2d = this.layer.vectors[id].symbol2Ds[key];
- if (symbol2d.attributes.wallstartindex == index) {
- this.layer.deleteSymbol(symbol2d.id, symbol2d.attributes.wallId);
- }
- }
- }
- //修改border以及wallInfo
- var len = this.layer.vectors[wallid].geometry.wallInfo.length;
- this.layer.vectors[wallid].geometry.wallInfo[len - 1].thick = 0;
- this.layer.vectors[wallid].geometry.wallInfo[len - 1].height = 0;
- this.layer.vectors[wallid].geometry.wallInfo[len - 1].measuredistance = 0;
- }
- //1表示不闭合
- else {
- //删除墙
- if (this.layer.vectors[wallid].geometry.points.length == 2) {
- this.layer.deleteVector(wallid);
- }
- //删除最后一个点
- else if (index == this.layer.vectors[wallid].geometry.wallInfo.length - 2) {
- this.layer.vectors[wallid].geometry.points.pop();
- this.layer.vectors[wallid].geometry.wallInfo.pop();
- //修改border以及wallInfo
- this.layer.vectors[wallid].geometry.wallInfo[index].thick = 0;
- this.layer.vectors[wallid].geometry.wallInfo[index].height = 0;
- this.layer.vectors[wallid].geometry.wallInfo[index].measuredistance = 0;
- }
- //分成两堵墙
- else {
- var points = [];
- var mapping = {};
- //var wallInfo=[];
- //修改border以及wallInfo
- this.layer.vectors[wallid].geometry.wallInfo[index].thick = 0;
- this.layer.vectors[wallid].geometry.wallInfo[index].height = 0;
- this.layer.vectors[wallid].geometry.wallInfo[index].measuredistance = 0;
- //array.splice(start,delCount);//从start的位置开始向后删除delCount个元素
- for (var i = index + 1; i < this.layer.vectors[wallid].geometry.wallInfo.length; ++i) {
- mapping[i] = points.length;
- points.push(this.layer.vectors[wallid].geometry.points[i]);
- //wallInfo.push(this.layer.vectors[wallid].geometry.wallInfo[i]);
- }
- this.layer.vectors[wallid].geometry.wallInfo.splice(index + 1, points.length);
- this.layer.vectors[wallid].geometry.points.splice(index + 1, points.length);
- //新建墙
- var wall = new Wall(points, document.getElementById("imgWall"));
- var vector = new Vector(wall, wallStyle);
- vector.geometry.state = 1;
- vector.geometry.wallInfo[points.length - 1].thick = 0;
- vector.geometry.wallInfo[points.length - 1].height = 0;
- vector.geometry.wallInfo[points.length - 1].measuredistance = 0;
- vector.geometry.floor = this.layer.selectFloor;
- vector.geometry.contextIndex = this.layer.vectors[wallid].geometry.contextIndex;
- //处理symbols
- for (var key in this.layer.vectors[wallid].symbol2Ds) {
- var symbol2d = this.layer.vectors[id].symbol2Ds[key];
- if (symbol2d.attributes.wallstartindex == index) {
- this.layer.deleteSymbol(symbol2d.id, symbol2d.attributes.wallId);
- }
- else if (symbol2d.attributes.wallstartindex > index) {
- symbol2d.wallstartindex = mapping[symbol2d.wallstartindex];
- symbol2d.wallendindex = mapping[symbol2d.wallendindex];
- }
- }
- }
- }
- //更新
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- if (vector != null) {
- this.layer.data2d.wallIds.push(vector.id);
- this.layer.drawSingleVector(vector);
- }
- document.getElementById('configuratorWindow2').style.display = "none";
- e.stopPropagation();
- };
- Menu.prototype.showWallDialog = function () {
- document.getElementById('configuratorWindow2').style.display = "";
- };
- Menu.prototype.changeWall = function (e) {
- var wallid = this.layer.select.selectWall.wallid;
- var index = this.layer.select.selectWall.index;
- var thick = document.getElementById("edit2D1").value;
- var height = document.getElementById("edit2D2").value;
- this.layer.vectors[wallid].geometry.wallInfo[index].height = parseInt(height);
- this.layer.vectors[wallid].geometry.wallInfo[index].thick = parseInt(thick);
- this.layer.control.refreshCanvas = true;
- this.layer.renderer.autoRedraw();
- document.getElementById('configuratorWindow2').style.display = "none";
- e.stopPropagation();
- };
- Menu.prototype.initEdit2D = function (wallid, index) {
- var height = this.layer.vectors[wallid].geometry.wallInfo[index].height;
- var thick = this.layer.vectors[wallid].geometry.wallInfo[index].thick;
- var measuredistance = this.layer.vectors[wallid].geometry.wallInfo[index].measuredistance;
- document.getElementById("edit2D1").value = thick;
- document.getElementById("edit2D11").value = thick;
- document.getElementById("edit2D2").value = height;
- document.getElementById("edit2D22").value = height;
- this.layer.select.selectWall.wallid = wallid;
- this.layer.select.selectWall.index = index;
- };
- Menu.prototype.Events = [["click", Menu.prototype.add2DSymbol], ["click", Menu.prototype.addSelectTab], ["click", Menu.prototype.addGround]];
|