DataAJK.js 98 KB

1
  1. var DataAJK=function(){"use strict";var t=function(){this.version="v4.0",this.floors=[]};t.prototype.initFloor=function(t){this.floors[t]={},this.floors[t].points={},this.floors[t].walls={},this.floors[t].symbols={},this.floors[t].components={},this.floors[t].tags={},this.floors[t].furnitures={},this.floors[t].boundingBox={},this.floors[t].rooms=[],this.floors[t].panos=[]};var o=new t;window.floorplanData=o;var r={minPixDistance:10,minPixLen:3,minScreenDis:2,minAdsorbRec:3,furnitureWidth:32,minRealDis:.1,minAdsorb:.1,minAngle:15,maxAngle:165,defaultZoom:100,minSymbolLen:.2,maxSymbolLen:10,ratio:3,miniMap_Width:1200,miniMap_Height:1200},s=function(){};s.prototype.getFixed=function(t,e){return e||(e=5),parseFloat(t.toFixed(e))},s.prototype.getDistance=function(t,e){var n=t.x,o=t.y,i=e.x,r=e.y,s=Math.sqrt(Math.pow(n-i,2)+Math.pow(o-r,2));return this.getFixed(s)},s.prototype.createLine1=function(t,e){if(t.x==e.x&&t.y==e.y)return null;if(0==this.getFixed(Math.abs(t.x-e.x)))return{x:t.x};if(0==this.getFixed(Math.abs(t.y-e.y)))return{y:t.y};var n=(t.y-e.y)/(t.x-e.x),o=(t.x*e.y-e.x*t.y)/(t.x-e.x);return 0==this.getFixed(n)?{y:this.getFixed(o)}:{a:this.getFixed(n),b:this.getFixed(o)}},s.prototype.createLine2=function(t,e){if(e==Math.PI/2||e==1.5*Math.PI)return{x:t.x};var n=Math.tan(e),o=t.y-n*t.x;return 0!=n?{a:n,b:o}:{y:t.y}},s.prototype.createLine3=function(t,e){var n={};return void 0===t.a?void 0!==t.x?n.x=e.x:void 0!==t.y&&(n.y=e.y):(n.a=t.a,n.b=e.y-e.x*t.a),n},s.prototype.create2AngleLine=function(t,e,n){return{line1:this.createLine2(t,e-n/2),line2:this.createLine2(t,e+n/2)}},s.prototype.distanceForPoints=function(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))},s.prototype.getParallelLineForDistance=function(t,e){var n={},o={};if(t.hasOwnProperty("a")){n.a=t.a,n.b=t.b,o.a=t.a,o.b=t.b;var i=Math.atan(t.a),r=Math.abs(e/Math.cos(i)),s=t.b;n.b=s+r,o.b=s-r}else if(t.hasOwnProperty("x")){var a=t.x;n.x=a+e,o.x=a-e}else if(t.hasOwnProperty("y")){var l=t.y;n.y=l+e,o.y=l-e}return{line1:n,line2:o}},s.prototype.getEndpoint=function(t,e,n){var o=this.create2AngleLine(t,e,n),i=this.createLine2(t,e);i=this.getLineForPoint(i,t);var r=this.getParallelLineForDistance(i,15),s=this.getIntersectionPoint(o.line1,r.line1),a=this.getIntersectionPoint(o.line1,r.line2),l=this.getIntersectionPoint(o.line2,r.line1),h=this.getIntersectionPoint(o.line2,r.line2),p=this.Angle(t,s,{x:t.x+1,y:t.y}),c=this.Angle(t,a,{x:t.x+1,y:t.y}),u=this.Angle(t,l,{x:t.x+1,y:t.y}),d=this.Angle(t,h,{x:t.x+1,y:t.y});return e>Math.PI&&(e=2*Math.PI-e),Math.abs((p+u)/2-e)<Math.abs((c+d)/2-e)?{p1:s,p2:l}:{p1:a,p2:h}},s.prototype.isClockwise=function(t){for(var e=0,n=0;n<t.length;n++){var o=(n+1)%t.length;e+=t[n].x*t[o].y,e-=t[o].x*t[n].y}return e/2>0},s.prototype.reverse=function(t){for(var e=[],n=t.length-1;n>-1;--n)e.push(t[n]);return e},s.prototype.getIntersectionPoint=function(t,e){if(this.isParallel(t,e))return null;if(void 0===t.a&&void 0!==e.a){if(t.x)return{x:t.x,y:e.a*t.x+e.b};if(t.y)return{x:(t.y-e.b)/e.a,y:t.y}}else if(void 0===e.a&&void 0!==t.a){if(e.x)return{x:e.x,y:t.a*e.x+t.b};if(e.y)return{x:(e.y-t.b)/t.a,y:e.y}}else if(void 0===e.a&&void 0===t.a)return t.hasOwnProperty("x")&&e.hasOwnProperty("y")?{x:t.x,y:e.y}:t.hasOwnProperty("y")&&e.hasOwnProperty("x")?{x:e.x,y:t.y}:null;return t.a==e.a?null:{x:(e.b-t.b)/(t.a-e.a),y:(t.a*e.b-e.a*t.b)/(t.a-e.a)}},s.prototype.getIntersectionPoint2=function(t,e,n,o){var i=(e.y-t.y)*(o.x-n.x)-(t.x-e.x)*(n.y-o.y);return 0==i?null:{x:((e.x-t.x)*(o.x-n.x)*(n.y-t.y)+(e.y-t.y)*(o.x-n.x)*t.x-(o.y-n.y)*(e.x-t.x)*n.x)/i,y:-((e.y-t.y)*(o.y-n.y)*(n.x-t.x)+(e.x-t.x)*(o.y-n.y)*t.y-(o.x-n.x)*(e.y-t.y)*n.y)/i}},s.prototype.getIntersectionPoint3=function(t,e,n,o){var i=this.getIntersectionPoint2(t,e,n,o);if(i){var r=i.x,s=i.y;return(r-t.x)*(r-e.x)<=.001&&(s-t.y)*(s-e.y)<=.001&&(r-n.x)*(r-o.x)<=.001&&(s-n.y)*(s-o.y)<=.001?{x:r,y:s}:null}return null},s.prototype.getIntersectionPoint4=function(t,e,n){var o=this.createLine1(t,e),i=this.getIntersectionPoint(o,n);return null==i?null:this.PointInSegment(i,t,e)?i:null},s.prototype.isParallel=function(t,e){return void 0===t.a&&void 0===e.a?!(!t.hasOwnProperty("x")||!e.hasOwnProperty("x"))||!(!t.hasOwnProperty("y")||!e.hasOwnProperty("y")):void 0!==t.a&&void 0!==e.a&&this.getFixed(t.a)==this.getFixed(e.a)},s.prototype.Angle=function(t,e,n){var o,i,r=0,s=e.x-t.x,a=e.y-t.y,l=n.x-t.x,h=n.y-t.y;return r=s*l+a*h,i=(s*s+a*a)*(l*l+h*h),(r/=Math.sqrt(i))>=1?0:r<=-1?Math.PI:180*(o=Math.acos(r))/Math.PI<180?o:2*Math.PI-o},s.prototype.getLineForPoint=function(t,e){var n={};return 0==t.a||void 0===t.a?t.hasOwnProperty("x")?n.y=e.y:t.hasOwnProperty("y")&&(n.x=e.x):(n.a=-1/t.a,n.b=e.y-e.x*n.a),n},s.prototype.getJoinLinePoint=function(t,e){var n=this.getVerticalLine(e,t);return this.getIntersectionPoint(e,n)},s.prototype.getDisForPoinLine=function(t,e){var n=this.getJoinLinePoint(t,e);return this.getDistance(t,n)},s.prototype.getVerticalLine=function(t,e){if(void 0===t.a)return t.hasOwnProperty("x")?{y:e.y}:t.hasOwnProperty("y")?{x:e.x}:null;if(0==t.a)return{x:e.x};var n={};return n.a=-1/t.a,this.createLine3(n,e)},s.prototype.isContainForSegment=function(t,e,n,o){o||(o=r.minAdsorb);var i=this.getDistance(e,t)+this.getDistance(n,t),s=this.getDistance(e,n);return Math.abs(i-s)<o},s.prototype.isPointInPoly=function(t,e){for(var n=t.x,o=t.y,i=!1,r=0,s=e.length-1;r<e.length;s=r++){var a=e[r],l=e[s],h=a.x,p=a.y,c=l.x,u=l.y;p>o!=u>o&&n<(c-h)*(o-p)/(u-p)+h&&(i=!i)}return i},s.prototype.getDisForPoinSegment=function(t,e,n,o){var i=this.createLine1(e,n),r=this.getJoinLinePoint(t,i),s=this.getDistance(e,n),a=this.getDistance(r,e),l=this.getDistance(r,n);return this.getDistance(r,e)>s||this.getDistance(r,n)>s?a<l&&a<o?{type:1,join:e}:l<a&&l<o?{type:2,join:n}:null:a<o?{type:1,join:e}:l<o?{type:2,join:n}:this.getDistance(t,r)<o?{type:0,join:r}:void 0},s.prototype.PointInSegment=function(t,e,n,o){if(this.getDistance(t,e)<r.minAdsorb||this.getDistance(t,n)<r.minAdsorb)return!0;o||(o=.1),o/=2;var i=(t.x-e.x)*(n.y-e.y)-(n.x-e.x)*(t.y-e.y),s=Math.min(e.x,n.x)-t.x,a=t.x-Math.max(e.x,n.x),l=Math.min(e.y,n.y)-t.y,h=t.y-Math.max(e.y,n.y);return Math.abs(i)<o&&(s<=0||Math.abs(s)<o)&&(a<=0||Math.abs(a)<o)&&(l<=0||Math.abs(l)<o)&&(h<=0||Math.abs(h)<o)},s.prototype.isPointOnSegment=function(t,e,n){var o=t.x-e.x,i=t.y-e.y,r=t.x-n.x,s=t.y-n.y,a=n.x-e.x,l=n.y-e.y,h=this.getDistance(e,n),p=a/h,c=l/h;return o*p+i*c>=0&&r*p+s*c<=0&&Math.abs(o*s-i*r)<=.001},s.prototype.clonePoint=function(t,e){t.x=e.x,t.y=e.y},s.prototype.equalPoint=function(t,e){return t.x==e.x&&t.y==e.y},s.prototype.crossTwoLines=function(t,e,n,o,i){void 0===i&&(i=r.minAdsorb);var s=this.getIntersectionPoint2(t,e,n,o);if(null!=s){if(this.getDistance(t,s)>i&&this.getDistance(e,s)>i&&this.getDistance(n,s)>i&&this.getDistance(o,s)>i)return this.getDistance(t,s)<this.getDistance(t,e)&&this.getDistance(e,s)<this.getDistance(t,e)&&this.getDistance(n,s)<this.getDistance(n,o)&&this.getDistance(o,s)<this.getDistance(n,o)}else if(this.PointInSegment(t,n,o)||this.PointInSegment(e,n,o))return!0;return!1},s.prototype.getDisPointsLine=function(t,e,n,o){var i={},r={},s={};if(t.hasOwnProperty("x"))i.x=t.x,i.y=e.y-n,r.x=t.x,r.y=e.y+o;else if(t.hasOwnProperty("y"))i.y=t.y,i.x=e.x-n,r.y=t.y,r.x=e.x+o;else{var a=Math.atan(t.a),l={a:-1/t.a},h=this.createLine3(l,e),p=this.getIntersectionPoint(t,h);i.x=p.x-n*Math.cos(a),i.y=p.y-n*Math.sin(a),r.x=p.x+o*Math.cos(a),r.y=p.y+o*Math.sin(a)}return s.newpoint1=i,s.newpoint2=r,s},s.prototype.getBoundingBox=function(t){for(var e=t[0].x,n=t[0].x,o=t[0].y,i=t[0].y,r=1;r<t.length;++r){var s=t[r];e>s.x&&(e=s.x),o>s.y&&(o=s.y),n<s.x&&(n=s.x),i<s.y&&(i=s.y)}var a={};return a.minX=e,a.minY=o,a.maxX=n,a.maxY=i,a},s.prototype.getBoundingBox2=function(t){var e=null,n=null,o=null,i=null;for(var r in t){var s=t[r];(null==e||e>s.x)&&(e=s.x),(null==o||o>s.y)&&(o=s.y),(null==n||n<s.x)&&(n=s.x),(null==i||i<s.y)&&(i=s.y)}var a={};return a.minX=e,a.minY=o,a.maxX=n,a.maxY=i,a},s.prototype.ComputePolygonArea=function(t){var e=t.length;if(e<3)return 0;for(var n=t[0].y*(t[e-1].x-t[1].x),o=1;o<e;++o)n+=t[o].y*(t[o-1].x-t[(o+1)%e].x);return Math.abs(n/2)},s.prototype.getPolygonCore=function(t){function e(t,e,n){return(t.x*e.y+e.x*n.y+n.x*t.y-e.x*t.y-n.x*e.y-t.x*n.y)/2}for(var n=0,o=0,i=0,r=t[1],s=2;s<t.length;s++){var a=t[s],l=e(t[0],r,a);i+=l,n+=(t[0].x+r.x+a.x)*l,o+=(t[0].y+r.y+a.y)*l,r=a}return{x:n/i/3,y:o/i/3}},s.prototype.isPolyInPoly=function(t,e,n){for(var o=0;o<t.length;++o){for(var i=!1,r=0;r<e.length;++r)if(this.equalPoint(t[o],e[r])){i=!0;break}if(i){var s=o==t.length-1?0:o+1,a={x:(t[o].x+t[s].x)/2,y:(t[o].y+t[s].y)/2};if(!this.isPointInPoly(a,e,n))return!1}else if(!this.isPointInPoly(t[o],e,n))return!1}return!0},s.prototype.dotPoints=function(t,e,n,o){var i={},r={};return i.start={},i.end={},i.start.x=0,i.start.y=0,i.end.x=e.x-t.x,i.end.y=e.y-t.y,r.start={},r.end={},r.start.x=0,r.start.y=0,r.end.x=o.x-n.x,r.end.y=o.y-n.y,i.end.x*r.end.x+i.end.y*r.end.y},s.prototype.translate=function(t,e,n,o){var i=e.x-t.x,r=e.y-t.y,s=Math.sqrt(Math.pow(i,2)+Math.pow(r,2));return{x:n.x+i*o/s,y:n.y+r*o/s}},s.prototype.raySegmentIntersection=function(t,e,n,o){var i={x:t.x+e.x,y:t.y-e.z},r=this.createLine1(t,i),s=this.getIntersectionPoint4(n,o,r);return null==s||this.getDistance(i,s)-(this.getDistance(t,s)+this.getDistance(t,i))+.01>0?null:s};var a=new s,l="Point",h="Wall",p="SingleDoor",c="DoubleDoor",u="SlideDoor",d="SingleWindow",y="BayWindow",g="FrenchWindow",f="Pass",x="Tag",m="start",P="end",v="select",I="LEFT",S="RIGHT",b=function(){this.len=null};b.prototype.setId=function(t){null==t||void 0===t?(t=J.getCurrentId(),J.updateCurrentId(),this.vectorId=this.geoType+t):this.vectorId=t},b.prototype.setSymbolPosition=function(t,e){"start"==e?a.clonePoint(this.startPoint,t):"end"==e&&a.clonePoint(this.endPoint,t)},b.prototype.setSymbolParent=function(t){this.parent=t},b.prototype.setPointParent=function(t,e){null==this.parent&&(this.parent={}),this.parent[t]=e},b.prototype.setOpenSide=function(t){var e=[];e.push(this.startPoint),e.push(this.endPoint),e.push(t);var n=null;n=a.isClockwise(e)?I:S,this.openSide=n},b.prototype.rotatePoint=function(t,e,n){n*=-1;var o=e.x,i=e.y,r=t.x,s=t.y;return{x:o+(r-o)*Math.cos(n*Math.PI/180)-(s-i)*Math.sin(n*Math.PI/180),y:i+(r-o)*Math.sin(n*Math.PI/180)+(s-i)*Math.cos(n*Math.PI/180)}};var w=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.openSide=null,this.parent=null,this.enter=null,this.points2d=[],this.position3d={},this.name="单开门",this.geoType=p,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){var t=a.createLine1(this.startPoint,this.endPoint),e=a.getDistance(this.startPoint,this.endPoint),n=a.getParallelLineForDistance(t,e),o=a.getVerticalLine(t,this.startPoint),i=a.getVerticalLine(t,this.endPoint),r=a.getIntersectionPoint(n.line1,o),s=a.getIntersectionPoint(n.line2,o),l=a.getIntersectionPoint(n.line1,i),h=a.getIntersectionPoint(n.line2,i);if(this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint),this.points2d.push(l),this.points2d.push(r),this.openSide==I){if(a.isClockwise(this.points2d))return;this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint),this.points2d.push(h),this.points2d.push(s)}else if(this.openSide==S){if(!a.isClockwise(this.points2d))return;this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint),this.points2d.push(h),this.points2d.push(s)}},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);if(e<r.minAdsorb)return m;if(n<r.minAdsorb)return P;if(a.isContainForSegment(t,this.startPoint,this.endPoint))return v;var o=a.getDistance(this.points2d[0],this.points2d[1]);if(a.getDistance(t,this.points2d[0])>o)return null;var i=a.Angle(this.points2d[0],t,this.points2d[1]),s=a.Angle(this.points2d[0],t,this.points2d[3]);return i<Math.PI/2&&s<Math.PI/2?v:null},e}(b),D=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.openSide=null,this.parent=null,this.enter=null,this.points2d=[],this.position3d={},this.name="双开门",this.geoType=c,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){var t=a.createLine1(this.startPoint,this.endPoint),e=a.getDistance(this.startPoint,this.endPoint),n=a.getParallelLineForDistance(t,e/2),o=a.getVerticalLine(t,this.startPoint),i=a.getVerticalLine(t,this.endPoint),r={x:(this.startPoint.x+this.endPoint.x)/2,y:(this.startPoint.y+this.endPoint.y)/2},s=a.getVerticalLine(t,r),l=a.getIntersectionPoint(n.line1,o),h=a.getIntersectionPoint(n.line2,o),p=a.getIntersectionPoint(n.line1,i),c=a.getIntersectionPoint(n.line2,i),u=a.getIntersectionPoint(n.line1,s),d=a.getIntersectionPoint(n.line2,s);if(this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(r),this.points2d.push(this.endPoint),this.points2d.push(p),this.points2d.push(u),this.points2d.push(l),this.openSide==I){if(a.isClockwise(this.points2d))return;this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(r),this.points2d.push(this.endPoint),this.points2d.push(c),this.points2d.push(d),this.points2d.push(h)}else if(this.openSide==S){if(!a.isClockwise(this.points2d))return;this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(r),this.points2d.push(this.endPoint),this.points2d.push(c),this.points2d.push(d),this.points2d.push(h)}},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);if(e<r.minAdsorb)return m;if(n<r.minAdsorb)return P;if(a.isContainForSegment(t,this.startPoint,this.endPoint))return v;var o=[];if(o.push(this.startPoint),o.push(this.endPoint),o.push(t),this.openSide==I){if(!a.isClockwise(o))return null}else if(this.openSide==S&&a.isClockwise(o))return null;var i={x:(this.points2d[0].x+this.points2d[1].x)/2,y:(this.points2d[0].y+this.points2d[1].y)/2},s=a.getDistance(this.points2d[1],this.points2d[2]),l=a.getDistance(t,this.points2d[0]);if(l<s){var h=a.Angle(this.points2d[0],t,this.points2d[5]),p=a.Angle(this.points2d[0],t,i);if(h<Math.PI/2&&p<Math.PI/2)return v}if((l=a.getDistance(t,this.points2d[2]))<s){var c=a.Angle(this.points2d[2],t,this.points2d[3]),u=a.Angle(this.points2d[2],t,i);if(c<Math.PI/2&&u<Math.PI/2)return v}return null},e}(b),M=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.openSide=null,this.parent=null,this.enter=null,this.points2d=[],this.position3d={},this.name="滑动门",this.geoType=u,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){var t=a.createLine1(this.startPoint,this.endPoint),e=2/Y.res,n=a.getParallelLineForDistance(t,e);if(this.startPoint.x>this.endPoint.x){var o=n.line1;n.line1=n.line2,n.line2=o}var i=a.getVerticalLine(t,this.startPoint),r=a.getVerticalLine(t,this.endPoint),s=n.line1,l=n.line2,h=a.getIntersectionPoint(n.line1,i),p=a.getIntersectionPoint(n.line2,r);this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint),this.points2d.push(h),a.isClockwise(this.points2d)?null==this.openSide||"LEFT"==this.openSide||(s=n.line2,l=n.line1,h=a.getIntersectionPoint(s,i),p=a.getIntersectionPoint(l,r)):null!=this.openSide&&"LEFT"!=this.openSide||(s=n.line2,l=n.line1,h=a.getIntersectionPoint(s,i),p=a.getIntersectionPoint(l,r));var c={x:(this.startPoint.x+this.endPoint.x)/2,y:(this.startPoint.y+this.endPoint.y)/2};this.points2d=[],this.points2d.push(this.startPoint);var u=4/Y.res,d=a.getVerticalLine(t,c),y=a.getParallelLineForDistance(d,u),g=a.getIntersectionPoint(s,y.line1),f=a.getIntersectionPoint(s,y.line2),x=a.getIntersectionPoint(l,y.line1),m=a.getIntersectionPoint(l,y.line2),P=a.getIntersectionPoint(t,y.line1),v=a.getIntersectionPoint(t,y.line2);a.getDistance(this.startPoint,P)<a.getDistance(this.startPoint,v)?(this.points2d.push(v),this.points2d.push(f),this.points2d.push(h),this.points2d.push(this.endPoint),this.points2d.push(P),this.points2d.push(x),this.points2d.push(p)):(this.points2d.push(P),this.points2d.push(g),this.points2d.push(h),this.points2d.push(this.endPoint),this.points2d.push(v),this.points2d.push(m),this.points2d.push(p))},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);return e<r.minAdsorb?m:n<r.minAdsorb?P:a.isContainForSegment(t,this.startPoint,this.endPoint)?v:null},e}(b),F=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.parent=null,this.points2d=[],this.position3d={},this.name="单开窗",this.geoType=d,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint);var t=4/Y.res,e=a.createLine1(this.startPoint,this.endPoint),n=a.getParallelLineForDistance(e,t),o=a.getVerticalLine(e,this.startPoint),i=a.getVerticalLine(e,this.endPoint),r=a.getIntersectionPoint(o,n.line1),s=a.getIntersectionPoint(i,n.line1),l=a.getIntersectionPoint(i,n.line2),h=a.getIntersectionPoint(o,n.line2);this.points2d.push(r),this.points2d.push(s),this.points2d.push(l),this.points2d.push(h)},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);return e<r.minAdsorb?m:n<r.minAdsorb?P:a.isContainForSegment(t,this.startPoint,this.endPoint)?v:null},e}(b),T=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.parent=null,this.points2d=[],this.position3d={},this.name="落地窗",this.geoType=g,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){var t=4/Y.res,e=a.createLine1(this.startPoint,this.endPoint),n=a.getParallelLineForDistance(e,t),o=a.getVerticalLine(e,this.startPoint),i=a.getVerticalLine(e,this.endPoint);this.points2d=[],this.points2d.push(this.startPoint),this.points2d.push(this.endPoint);var r={x:(this.startPoint.x+this.endPoint.x)/2,y:(this.startPoint.y+this.endPoint.y)/2},s=a.getVerticalLine(e,r),l=a.getIntersectionPoint(o,n.line1),h=a.getIntersectionPoint(i,n.line1);this.points2d.push(l),this.points2d.push(h);var p=a.getIntersectionPoint(o,n.line2),c=a.getIntersectionPoint(i,n.line2);this.points2d.push(p),this.points2d.push(c);var u=a.getIntersectionPoint(s,n.line1),d=a.getIntersectionPoint(s,n.line2);this.points2d.push(u),this.points2d.push(d)},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);return e<r.minAdsorb?m:n<r.minAdsorb?P:a.isContainForSegment(t,this.startPoint,this.endPoint)?v:null},e}(b),k=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.openSide="LEFT",this.parent=null,this.thickness=1,this.points2d=[],this.position3d={},this.name="飘窗",this.geoType=y,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){var t,e,n,o,i=a.createLine1(this.startPoint,this.endPoint),r=a.getDistance(this.startPoint,this.endPoint)/2,s=4/Y.res+r,l={x:(this.startPoint.x+this.endPoint.x)/2,y:(this.startPoint.y+this.endPoint.y)/2},h=a.getVerticalLine(i,l),p=a.getParallelLineForDistance(h,r),c=a.getParallelLineForDistance(h,s);a.getDisForPoinLine(this.startPoint,p.line1)>a.getDisForPoinLine(this.startPoint,p.line2)?(t=p.line2,e=c.line2,n=p.line1,o=c.line1):(t=p.line1,e=c.line1,n=p.line2,o=c.line2);var u=a.getParallelLineForDistance(i,2/Y.res),d=a.getParallelLineForDistance(i,this.thickness-2/Y.res),y=a.getParallelLineForDistance(i,this.thickness),g=u.line1,f=u.line2,x=d.line2,m=y.line2,P=u.line2,v=u.line1,I=d.line1,S=y.line1,b=a.getIntersectionPoint(t,g),w=a.getIntersectionPoint(n,g),D=a.getIntersectionPoint(n,x),M=a.getIntersectionPoint(t,x),F=a.getIntersectionPoint(e,f),T=a.getIntersectionPoint(o,f),k=a.getIntersectionPoint(o,m),W=a.getIntersectionPoint(e,m),O=a.getIntersectionPoint(t,P),C=a.getIntersectionPoint(n,P),L=a.getIntersectionPoint(n,I),B=a.getIntersectionPoint(t,I),E=a.getIntersectionPoint(e,v),A=a.getIntersectionPoint(o,v),R=a.getIntersectionPoint(o,S),_=a.getIntersectionPoint(e,S);this.points2d=[],this.points2d.push(b),this.points2d.push(w),this.points2d.push(D),this.points2d.push(M),"LEFT"==this.openSide?a.isClockwise(this.points2d)?(this.points2d.push(F),this.points2d.push(T),this.points2d.push(k),this.points2d.push(W)):(this.points2d=[],this.points2d.push(O),this.points2d.push(C),this.points2d.push(L),this.points2d.push(B),this.points2d.push(E),this.points2d.push(A),this.points2d.push(R),this.points2d.push(_)):"RIGHT"==this.openSide&&(a.isClockwise(this.points2d)?(this.points2d=[],this.points2d.push(O),this.points2d.push(C),this.points2d.push(L),this.points2d.push(B),this.points2d.push(E),this.points2d.push(A),this.points2d.push(R),this.points2d.push(_)):(this.points2d.push(F),this.points2d.push(T),this.points2d.push(k),this.points2d.push(W)))},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);if(e<r.minAdsorb)return m;if(n<r.minAdsorb)return P;var o=a.isContainForSegment(t,this.startPoint,this.endPoint);if(o)return v;var i=[];return i[0]=this.points2d[4],i[1]=this.points2d[5],i[2]=this.points2d[6],i[3]=this.points2d[7],(o=a.isPointInPoly(t,i))?v:null},e}(b),W=function(t){function e(e,n,o,i){t.call(this),this.startPoint=e,this.endPoint=n,this.floor=i,this.parent=null,this.points2d=[],this.name="垭口",this.geoType=f,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPoints2d=function(){this.points2d=[];var t=5/Y.res,e=a.createLine1(this.startPoint,this.endPoint),n=a.getParallelLineForDistance(e,t),o=a.getVerticalLine(e,this.startPoint),i=a.getVerticalLine(e,this.endPoint),r=a.getIntersectionPoint(o,n.line1),s=a.getIntersectionPoint(i,n.line1),l=a.getIntersectionPoint(i,n.line2),h=a.getIntersectionPoint(o,n.line2);this.points2d.push(r),this.points2d.push(s),this.points2d.push(l),this.points2d.push(h),t=2/Y.res,n=a.getParallelLineForDistance(e,t);var p=a.getIntersectionPoint(o,n.line1),c=a.getIntersectionPoint(i,n.line1),u=a.getIntersectionPoint(i,n.line2),d=a.getIntersectionPoint(o,n.line2);this.points2d.push(p),this.points2d.push(c),this.points2d.push(u),this.points2d.push(d)},e.prototype.isContain=function(t){var e=a.getDistance(t,this.startPoint),n=a.getDistance(t,this.endPoint);return e<r.minAdsorb?m:n<r.minAdsorb?P:a.isContainForSegment(t,this.startPoint,this.endPoint)?v:null},e}(b),O=function(t){function e(e,n,o,i){t.call(this),this.x=e,this.y=n,this.display=!1,this.floor=i,this.name=null,this.parent={},this.geoType=l,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setPosition=function(t){this.x=t.x,this.y=t.y},e}(b),C=function(t){function e(e,n,o,i){t.call(this),this.start=e,this.end=n,this.floor=i,this.children=[],this.out=!1,this.important=!1,this.geoType=h,this.setId(o)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getOtherPointId=function(t){return this.start==t?this.end:this.end==t?this.start:null},e.prototype.getPointId=function(t){return"start"==t?this.start:this.end},e.prototype.clearChildren=function(){this.children=[]},e.prototype.setImportant=function(t){this.important=t},e.prototype.setOut=function(t){this.out=t},e.prototype.setChildren=function(t){this.children=t},e}(b),L=function(){};L.prototype.getLine=function(t){var e=J.getPoint(t.start),n=J.getPoint(t.end);return a.createLine1(e,n)},L.prototype.isContain=function(t,e,n){var o=J.getPoint(t.start),i=J.getPoint(t.end);return a.isContainForSegment(e,o,i,n)},L.prototype.addChildren=function(t,e){t.children.indexOf(e)<0&&t.children.push(e)},L.prototype.createWall=function(t,e,n,o){var i=new C(t,e,n,o);return null!=o&&void 0!==o||(o=J.currentFloor),J.addWall(i,o),this.setPointParent(i.vectorId,t,"start",o),this.setPointParent(i.vectorId,e,"end",o),i},L.prototype.createPoint=function(t,e,n,o){var i=new O(t,e,n,o);return null!=o&&void 0!==o||(o=J.currentFloor),J.addPoint(i,o),i},L.prototype.setPointParent=function(t,e,n,o){var i=J.getPoint(e,o),r=J.getWall(t,o);i.setPointParent(t,n),"start"==n?r.start=e:"end"==n&&(r.end=e)},L.prototype.splitWall=function(t,e,n){var o=J.getWall(t),i=J.getPoint(o.start),s=J.getPoint(o.end),l=J.getPoint(e);a.getDistance(i,l)<r.minAdsorb||(a.getDistance(s,l),r.minAdsorb);var h=null;"start"==n?(delete s.parent[t],(h=this.createWall(e,o.end)).setOut(o.out),h.setImportant(o.important),this.setPointParent(t,e,"end"),s.setPointParent(h.vectorId,n)):"end"==n&&(delete i.parent[t],(h=this.createWall(o.start,e)).setOut(o.out),h.setImportant(o.important),this.setPointParent(t,e,"start"),i.setPointParent(h.vectorId,n));for(var p=0;p<o.children.length;++p){var c=o.children[p],u=J.getSymbol(c),d={x:(u.startPoint.x+u.endPoint.x)/2,y:(u.startPoint.y+u.endPoint.y)/2};this.isContain(h,d)&&(u.setSymbolParent(h.vectorId),o.children.splice(p,1),--p,h.children.push(c))}return h.vectorId},L.prototype.getWallId=function(t,e){var n=J.getPoint(t),o=J.getPoint(e);if(!n||!o)return console.log("pointId1或者pointId2不存在"),null;if(t==e)return console.log("给的是同一个point"),null;var i=n.parent,r=o.parent;for(var s in i)if(r.hasOwnProperty(s))return s;return null},L.prototype.isWallLink=function(t,e){var n=J.getWall(t),o=J.getWall(e);return n.start==o.start||n.start==o.end||n.end==o.start||n.end==o.end},L.prototype.AngleForWall=function(t,e){var n=J.getWall(t),o=J.getWall(e);if(null==n||null==o||void 0===n||void 0===o)return null;var i=J.getPoint(n.start),r=J.getPoint(n.end),s=J.getPoint(o.start),l=J.getPoint(o.end),h=a.getDistance(i,s),p=a.getDistance(i,l),c=a.getDistance(r,s),u=a.getDistance(r,l),d=Math.min(h,p,c,u);return null==a.getIntersectionPoint2(i,r,s,l)?Math.PI:h==d?(r.x+=s.x-i.x,r.y+=s.y-i.y,a.Angle(s,r,l)):p==d?(r.x+=l.x-i.x,r.y+=l.y-i.y,a.Angle(l,r,s)):c==d?(i.x+=s.x-r.x,i.y+=s.y-r.y,a.Angle(s,i,l)):u==d?(i.x+=l.x-r.x,i.y+=l.y-r.y,a.Angle(l,i,s)):(console.error("AngleForWall**************************1"),null)},L.prototype.AngleForWall2=function(t,e){var n=J.getWall(t),o=J.getWall(e);if(null==n||null==o||void 0===n||void 0===o)return null;var i=J.getPoint(n.start),r=J.getPoint(n.end),s=J.getPoint(o.start),l=J.getPoint(o.end),h=null,p=[];return p.push(i),p.push(r),n.start==o.start?(h=a.Angle(i,r,l),p.push(l)):n.start==o.end?(h=a.Angle(i,r,s),p.push(s)):n.end==o.start?(h=a.Angle(r,i,l),p[0]=r,p[1]=i,p.push(l)):n.end==o.end&&(h=a.Angle(r,i,s),p[0]=r,p[1]=i,p.push(s)),null==h?null:a.isClockwise(p)?{angle:h,clockwise:1}:{angle:h,clockwise:0}},L.prototype.AngleForWall3=function(t,e){var n=J.getWall(t),o=J.getWall(e);if(null==n||null==o||void 0===n||void 0===o)return null;var i=J.getPoint(n.start),r=J.getPoint(n.end),s=J.getPoint(o.start),l=J.getPoint(o.end),h=a.getDistance(i,s),p=a.getDistance(i,l),c=a.getDistance(r,s),u=a.getDistance(r,l),d=Math.min(h,p,c,u),y={},g={};return h==d?(g.x=r.x+s.x-i.x,g.y=r.y+s.y-i.y,a.Angle(s,g,l)):p==d?(g.x=r.x+l.x-i.x,g.y=r.y+l.y-i.y,a.Angle(l,g,s)):c==d?(y.x=i.x+s.x-r.x,y.y=i.y+s.y-r.y,a.Angle(s,y,l)):u==d?(y.x=i.x+l.x-r.x,y.y=i.y+l.y-r.y,a.Angle(l,y,s)):(console.error("WallService.AngleForWall3************************************1"),null)},L.prototype.wallIdForMinAngle=function(t,e){var n,o,i,r,s=J.getPoint(t).parent,a=null,l=null,h=null,p=null;if(Object.keys(s).length>2){for(var c in s)if(c!=e){var u=this.AngleForWall2(e,c);null==h&&1==u.clockwise?((o=u).wallId=c,h=u.angle,(r=u).wallId=c,p=u.angle):h>u.angle&&1==u.clockwise?((o=u).wallId=c,h=u.angle):p<u.angle&&1==u.clockwise?((r=u).wallId=c,p=u.angle):null==a&&0==u.clockwise?((n=u).wallId=c,a=u.angle,(i=u).wallId=c,l=u.angle):a>u.angle&&0==u.clockwise?((n=u).wallId=c,a=u.angle):l<u.angle&&0==u.clockwise&&((i=u).wallId=c,l=u.angle)}var d={min0:n,min1:o};return d.min0||(d.min0=r,d.min0.angle=360-r.angle),d.min1||(d.min1=i,d.min1.angle=360-i.angle),d}return console.error("wallIdForMinAngle*********************************************************"),null},L.prototype.mergeWall=function(t,e){var n=this.getLinkPointId(t,e),o=J.getWall(e).getOtherPointId(n),i=J.getPoint(o);if(this.changeSymbolsWallToWall(e,t),Object.keys(i.parent).length>1)this.moveTo(n,o);else{J.deleteWall(e);var r=J.getPoint(n);a.clonePoint(r,i)}return o},L.prototype.changeSymbolsWallToWall=function(t,e,n){for(var o=J.getWall(t,n),i=J.getWall(e,n),r=0;r<o.children.length;++r){var s=o.children[r];J.getSymbol(s,n).setSymbolParent(e),this.addChildren(i,s)}o.clearChildren()},L.prototype.mergeWallForPoint=function(t){var e=J.getPoint(t);if(null!=e&&2==Object.keys(e.parent).length&&this.AngleForWall(Object.keys(e.parent)[0],Object.keys(e.parent)[1])>r.maxAngle/180*Math.PI)return this.mergeWall(Object.keys(e.parent)[0],Object.keys(e.parent)[1]);return null},L.prototype.getLinkPointId=function(t,e){var n=J.getWall(t),o=J.getWall(e);return n.start==o.start||n.start==o.end?n.start:n.end==o.start||n.end==o.end?n.end:n.start==o.start?null:void 0},L.prototype.moveTo=function(t,e){var n=this.getWallId(t,e),o=J.getPoint(t),i=J.getPoint(e);o.x,i.x,o.y,i.y;var s=o.parent,l=i.parent;for(var h in s)if(h!=n){var p=J.getWall(h).getOtherPointId(t),c=J.getPoint(p);for(var u in l)if(u!=n){var d=J.getWall(u).getOtherPointId(e),y=J.getPoint(d),g=a.Angle(i,c,y);if(Math.abs(g)<r.minAngle/180*Math.PI)return!1}}if(null!=n&&J.deleteWall(n),o=J.getPoint(t),i=J.getPoint(e),!o||!i)return!1;for(var f in s){var x=J.getWall(f),m=x.getOtherPointId(t);if(null!=this.getWallId(m,e))return!1;x.start==t?(J.deletePoint(x.start,f),x.start=e,i.setPointParent(f,"start")):x.end==t?(J.deletePoint(x.end,f),x.end=e,i.setPointParent(f,"end")):console.error("wallService.moveTo****************************************************")}return!0},L.prototype.getDirction=function(t,e){var n=J.getWall(e);return n.start==t?"start":n.end==t?"end":(console.error("WallService.getDirction*******************************************************************************************"),null)},L.prototype.isOverlapForMergePoint=function(t,e){var n=this.getWallId(t,e),o=J.getPoint(t),i=J.getPoint(e),s=o.x-i.x,l=o.y-i.y,h=o.parent,p=i.parent;for(var c in h)if(c!=n){var u=J.getWall(c).getOtherPointId(t),d=J.getPoint(u),y={x:d.x-s,y:d.y-l};for(var g in p)if(g!=n){var f=J.getWall(g).getOtherPointId(e),x=J.getPoint(f),m=a.Angle(i,y,x);if(Math.abs(m)<r.minAngle/180*Math.PI)return!0}}return!1},L.prototype.subtraWallFromIntersect=function(t,e){var n=J.getPoint(t),o=n.parent,i=this.getDirction(t,e);if(1!=Object.keys(o).length){delete o[e];var r=this.createPoint(n.x,n.y);r.setPointParent(e,i);var s=J.getWall(e);"start"==i?s.start=r.vectorId:"end"==i&&(s.end=r.vectorId)}},L.prototype.setWallInfo=function(t){var e=J.getWall(t.vectorId);return e.start=t.start,e.end=t.end,e.children=t.children,e.out=t.out,e.important=t.important,e},L.prototype.setPointInfo=function(t){var e=J.getPoint(t.vectorId);return a.clonePoint(e,t.position),e.parent=JSON.parse(JSON.stringify(t.parent)),e},L.prototype.getNeighPoints=function(t,e){var n=[],o=J.getPoint(t);for(var i in o.parent){var r=J.getWall(i).getOtherPointId(t);if(!e||e!=r){var s=J.getPoint(r);n.push(s)}}return n},L.prototype.deleteWallCorner=function(t){var e=J.getPoint(t);if(1==Object.keys(e.parent).length)J.deleteWall(Object.keys(e.parent)[0]);else if(Object.keys(e.parent).length>2)for(var n in e.parent)J.deleteWall(n);else if(2==Object.keys(e.parent).length){this.AngleForWall(Object.keys(e.parent)[0],Object.keys(e.parent)[1])>r.maxAngle/180*Math.PI?this.mergeWall(Object.keys(e.parent)[0],Object.keys(e.parent)[1]):(J.deleteWall(Object.keys(e.parent)[0]),J.deleteWall(Object.keys(e.parent)[0]))}};var B=new L,E=function(){this.symbol=null};E.prototype.moveFullSymbol=function(t,e,n){var o=J.getSymbol(e),i=J.getWall(n);if(!i)return null;var r=B.getLine(i),s=a.getVerticalLine(r,t),l=o.len;null==l&&(l=a.getDistance(o.startPoint,o.endPoint));var h=a.getIntersectionPoint(s,r),p=_.getNewPosForSymbol(h,n,e);null!=p&&p.state&&(a.dotPoints(o.startPoint,o.endPoint,p.position1,p.position2)>0?(a.clonePoint(o.startPoint,p.position1),a.clonePoint(o.endPoint,p.position2)):(a.clonePoint(o.endPoint,p.position1),a.clonePoint(o.startPoint,p.position2)),o.parent!=n&&_.changeSymbolForBelong(e,n),o.setOpenSide(t),o.setPoints2d(),_.setPosition3d(o))},E.prototype.moveSymbolPoint=function(t,e,n){var o=_.moveSymbolSinglePoint(t,e,n);if(null==o)return null;var i=J.getSymbol(e),s={x:(i.startPoint.x+i.endPoint.x)/2,y:(i.startPoint.y+i.endPoint.y)/2},l=a.getDistance(s,o.position);if(l<r.minSymbolLen)return null;if(2*l>r.maxSymbolLen)return null;var h=J.getWall(i.parent),p=J.getPoint(h.start),c=J.getPoint(h.end);if(n==m){var u=_.getNewForContainSymbols(i.endPoint,o.position,i.parent,e);if(null==u||u.collision)return null;B.isContain(h,o.position)?_.setPosition(i,o.position,"start"):a.getDistance(i.startPoint,p)<a.getDistance(i.startPoint,c)?_.setPosition(i,p,"start"):_.setPosition(i,c,"start")}else{var d=_.getNewForContainSymbols(i.startPoint,o.position,i.parent,e);if(null==d||d.collision)return null;B.isContain(h,o.position)?_.setPosition(i,o.position,"end"):a.getDistance(i.endPoint,p)<a.getDistance(i.endPoint,c)?_.setPosition(i,p,"end"):_.setPosition(i,c,"end")}i.setPoints2d(),_.setPosition3d(i)};var A=new E,R=function(){this.enterImg=null};R.prototype.createSymbol=function(t,e,n,o,i){var r=null;switch(n){case y:r=new k(t,e,i);break;case g:r=new T(t,e,i);break;case p:r=new w(t,e,i);break;case c:r=new D(t,e,i);break;case u:r=new M(t,e,i);break;case d:r=new F(t,e,i);break;case f:r=new W(t,e,i)}if(null!=r&&(r.setSymbolParent(o),r.setPoints2d(),this.setPosition3d(r),J.addSymbol(r)),o){var s=J.getWall(o);B.addChildren(s,r.vectorId)}return r.len=a.getDistance(t,e),r},R.prototype.addSymbol=function(t,e,n){var o=this.getDefaultSymbolLen(e),i=J.getWall(n),r=B.getLine(i);t=a.getJoinLinePoint(t,r);var s=this.getNewPosForSymbol(t,n,null,o);return s.state?this.createSymbol(s.position1,s.position2,e,n).vectorId:null},R.prototype.setPosition3d=function(t){var e={x:(t.startPoint.x+t.endPoint.x)/2,y:(t.startPoint.y+t.endPoint.y)/2},n=J.getFloorHeight();t.position3d={x:e.x,y:n,z:-1*e.y}},R.prototype.isSymbol=function(t){switch(t){case"BayWindow":case"FrenchWindow":case"SingleDoor":case"DoubleDoor":case"SlideDoor":case"SingleWindow":case"Pass":return!0}return!1},R.prototype.getDefaultSymbolLen=function(t){var e=0;switch(t){case"BayWindow":case"FrenchWindow":e=1.5;break;case"SingleDoor":e=.8;break;case"DoubleDoor":case"SlideDoor":e=1.5;break;case"SingleWindow":case"Pass":e=.8}return e},R.prototype.deleteSymbolForWall=function(t,e){if(t){var n=t.children.indexOf(e);n>-1&&t.children.splice(n,1),J.getSymbol(e).parent=null}},R.prototype.deleteSymbol=function(t){var e=J.getSymbol(t);if(e.parent){var n=J.getWall(e.parent);this.deleteSymbolForWall(n,t)}J.deleteSymbol(t)},R.prototype.changeSymbolForBelong=function(t,e){var n=J.getSymbol(t),o=n.parent,i=J.getWall(o);this.deleteSymbolForWall(i,t),n.setSymbolParent(e);var r=J.getWall(e);B.addChildren(r,t)},R.prototype.reBelongForSplitWall=function(t,e,n){for(var o=J.getWall(t),i=0;i<o.children.length;++i){var r=o.children[i];t!=e&&this.isContainSymbolForWall(r,e)?this.changeSymbolForBelong(r,e):t!=n&&this.isContainSymbolForWall(r,n)&&this.changeSymbolForBelong(r,n)}},R.prototype.isContainSymbolForWall=function(t,e){var n=J.getWall(e),o=J.getSymbol(t),i={x:(o.startPoint.x+o.endPoint.x)/2,y:(o.startPoint.y+o.endPoint.y)/2};if(B.isContain(n,i))return!0},R.prototype.changeSymbolForBelong=function(t,e){var n=J.getSymbol(t),o=n.parent,i=J.getWall(o);this.deleteSymbolForWall(i,t),n.setSymbolParent(e);var r=J.getWall(e);B.addChildren(r,t)},R.prototype.updateSymbolsPositionsForWallCorner=function(t){var e=J.getPoint(t).parent;for(var n in e)this.updateSymbolsPositionsForWall(n)},R.prototype.updateSymbolsPositionsForWall=function(t){for(var e=J.getWall(t).children,n=0;n<e.length;++n){var o=J.getSymbol(e[n]);this.updateSEForChangeWall(o)}},R.prototype.updateSEForChangeWall=function(t){var e=t.vectorId,n=J.getWall(t.parent),o=J.getPoint(n.start),i=J.getPoint(n.end),r=a.createLine1(o,i),s=a.getJoinLinePoint(t.startPoint,r),l=a.getJoinLinePoint(t.endPoint,r),h={x:0,y:0},p=!0;B.isContain(n,s)?B.isContain(n,l)||(a.getDistance(l,o)<a.getDistance(l,i)?(h.x=o.x-l.x,h.y=o.y-l.y):(h.x=i.x-l.x,h.y=i.y-l.y),l.x+=h.x,l.y+=h.y,B.isContain(n,{x:s.x+h.x,y:s.y+h.y})&&(s.x+=h.x,s.y+=h.y),p=!1):(a.getDistance(s,o)<a.getDistance(s,i)?(h.x=o.x-s.x,h.y=o.y-s.y):(h.x=i.x-s.x,h.y=i.y-s.y),s.x+=h.x,s.y+=h.y,B.isContain(n,{x:l.x+h.x,y:l.y+h.y})&&(l.x+=h.x,l.y+=h.y),p=!1),p?(this.setPosition(t,s,"start"),this.setPosition(t,l,"end"),t.setPoints2d()):this.updateSEForCollideSymbols(e,s,l)},R.prototype.updateSEForCollideSymbols=function(t,e,n){var o=J.getSymbol(t),i=this.getNewForContainSymbols(e,n,o.parent,t);null!=i&&(a.getDistance(i.position1,i.position2)<r.minSymbolLen?this.deleteSymbol(t):(this.setPosition(o,i.position1,"start"),this.setPosition(o,i.position2,"end"),o.setPoints2d()))},R.prototype.getNewForContainSymbols=function(t,e,n,o){for(var i=J.getWall(n),s=[],l=0;l<i.children.length;++l){var h=i.children[l];if(h!=o){var p=J.getSymbol(h);s.push({x:p.startPoint.x,y:p.startPoint.y,index:1,vectorId:h}),s.push({x:p.endPoint.x,y:p.endPoint.y,index:2,vectorId:h})}}s.push({x:t.x,y:t.y,index:1,vectorId:o}),s.push({x:e.x,y:e.y,index:2,vectorId:o});var c=J.getPoint(i.start);s=s.sort(function(t,e){return a.getDistance(c,t)-a.getDistance(c,e)}.bind(this));for(var u=0;u<s.length-1;++u)if(s[u].vectorId==o)if(0==u||u==s.length-2){if(a.getDistance(s[u],s[u+1])<r.minSymbolLen)return null;if(s[u+1].vectorId==o)return{position1:t,position2:{x:s[u+1].x,y:s[u+1].y}};if(s[u+1].vectorId!=o)return{position1:t,position2:{x:s[u+1].x,y:s[u+1].y},collision:!0}}else if(s[u+1].vectorId==o&&s[u-1].vectorId!=s[u+2].vectorId)return a.getDistance({x:s[u-1].x,y:s[u-1].y},{x:s[u+2].x,y:s[u+2].y})<r.minSymbolLen?null:{position1:{x:s[u-1].x,y:s[u-1].y},position2:{x:s[u+2].x,y:s[u+2].y}};return null},R.prototype.getNewPosForSymbol=function(t,e,n,o){var i=J.getWall(e),s=J.getPoint(i.start),l=J.getPoint(i.end),p=B.getLine(i),c=a.getVerticalLine(p,t),u=o;n&&(u=J.getSymbol(n).len);var d=a.getParallelLineForDistance(c,u/2),y=a.getIntersectionPoint(d.line1,p),g=a.getIntersectionPoint(d.line2,p);if(a.getDistance(s,l)<u)a.clonePoint(y,s),a.clonePoint(g,l);else{var f,x,m={},P={};B.isContain(i,y)?B.isContain(i,g)||(f=s.x-g.x,x=s.y-g.y,m.x=y.x+f,m.y=y.y+x,B.isContain(i,m)?(y.x+=f,y.y+=x,a.clonePoint(g,s)):(f=l.x-g.x,x=l.y-g.y,y.x+=f,y.y+=x,a.clonePoint(g,l))):(f=s.x-y.x,x=s.y-y.y,P.x=g.x+f,P.y=g.y+x,B.isContain(i,P)?(g.x+=f,g.y+=x,a.clonePoint(y,s)):(f=l.x-y.x,x=l.y-y.y,g.x+=f,g.y+=x,a.clonePoint(y,l)))}for(var v=[],I=0;I<i.children.length;++I){var S=i.children[I];if(S!=n){var b=J.getSymbol(S);v.push({x:b.startPoint.x,y:b.startPoint.y,index:1,vectorId:S}),v.push({x:b.endPoint.x,y:b.endPoint.y,index:2,vectorId:S})}}v.push({x:s.x,y:s.y,index:1,vectorId:e,type:h}),v.push({x:l.x,y:l.y,index:2,vectorId:e,type:h}),v=v.sort(function(t,e){return a.getDistance(s,t)-a.getDistance(s,e)}.bind(this));for(var w=0;w<v.length-1;++w)if(a.isContainForSegment(t,v[w],v[w+1])){if(a.getDistance(v[w],v[w+1])>u){if(v[w].vectorId==v[w+1].vectorId&&v[w].type!=h)return{position1:y,position2:g,collision:!0,state:!1};if(v[w].vectorId==v[w+1].vectorId&&v[w].type==h)return{position1:y,position2:g,collision:!0,state:!0};if(!a.isContainForSegment(y,v[w],v[w+1])||!a.isContainForSegment(g,v[w],v[w+1]))return{position1:y,position2:g,collision:!0,state:!1}}else{if(a.getDistance(v[w],v[w+1])<r.minSymbolLen)return{position1:y,position2:g,collision:!0,state:!1};if(v[w].vectorId!=v[w+1].vectorId)return{position1:{x:v[w].x,y:v[w].y},position2:{x:v[w+1].x,y:v[w+1].y},collision:!0,state:!0};if(v[w].vectorId==v[w+1].vectorId&&v[w].type!=h)return{position1:y,position2:g,collision:!0,state:!1};if(v[w].vectorId==v[w+1].vectorId&&v[w].type==h)return{position1:{x:v[w].x,y:v[w].y},position2:{x:v[w+1].x,y:v[w+1].y},collision:!0,state:!0}}!1}else if(a.getDistance(t,v[w])<r.minAdsorb)return{position1:y,position2:g,collision:!0,state:!1};return{position1:y,position2:g,collision:!1,state:!0}},R.prototype.setPosition=function(t,e,n){"start"==n?a.clonePoint(t.startPoint,e):"end"==n&&a.clonePoint(t.endPoint,e)},R.prototype.updateSymbolsPositionsForNeighWall=function(t){for(var e=J.getWall(t).children,n=0;n<e.length;++n)this.updateSEForWallSize(e[n])},R.prototype.updateSEForWallSize=function(t){var e=J.getSymbol(t),n=J.getWall(e.parent),o=J.getPoint(n.start),i=J.getPoint(n.end),r={x:e.startPoint.x,y:e.startPoint.y},s={x:e.endPoint.x,y:e.endPoint.y},l={x:0,y:0};if(B.isContain(n,r)){if(B.isContain(n,s))return null;a.getDistance(s,o)<a.getDistance(s,i)?(l.x=o.x-s.x,l.y=o.y-s.y):(l.x=i.x-s.x,l.y=i.y-s.y),s.x+=l.x,s.y+=l.y}else a.getDistance(r,o)<a.getDistance(r,i)?(l.x=o.x-r.x,l.y=o.y-r.y):(l.x=i.x-r.x,l.y=i.y-r.y),r.x+=l.x,r.y+=l.y;this.updateSEForCollideSymbols(t,r,s)},R.prototype.updateSymbolForLen=function(t,e){var n=J.getSymbol(t),o=n.startPoint,i=n.endPoint,r=a.createLine1(o,i),s={x:(o.x+i.x)/2,y:(o.y+i.y)/2},l=a.getVerticalLine(r,s),h=J.getWall(n.parent),p=J.getPoint(h.start),c=J.getPoint(h.end);if(null==e||void 0===e){e=a.getDistance(o,i);var u=a.getDistance(p,c);e>u&&(e=u)}var d=a.getParallelLineForDistance(l,e/2),y=a.getIntersectionPoint(d.line1,r),g=a.getIntersectionPoint(d.line2,r),f={};a.getDistance(o,y)<a.getDistance(o,g)?(f.start=y,f.end=g):(f.start=g,f.end=y);var x,m,P=!1,v=!1,I=this.getNearestPosition(n.parent,t,!0);return null!=I.startPosition&&a.PointInSegment(I.startPosition,f.start,f.end)&&(x=f.start.x-I.startPosition.x,m=f.start.y-I.startPosition.y,a.clonePoint(f.start,I.startPosition),f.end.x-=x,f.end.y-=m,P=!0),null!=I.endPosition&&a.PointInSegment(I.endPosition,f.start,f.end)&&(x=f.end.x-I.endPosition.x,m=f.end.y-I.endPosition.y,a.clonePoint(f.end,I.endPosition),P||(f.start.x-=x,f.start.y-=m,a.PointInSegment(I.startPosition,f.start,f.end)&&(a.clonePoint(f.start,I.startPosition),P=!0)),v=!0),f.vectorId=t,a.clonePoint(n.startPoint,f.start),a.clonePoint(n.endPoint,f.end),n.setPoints2d(),{block:P&v,start:f.start,end:f.end}},R.prototype.getNearestPosition=function(t,e,n,o,i){var r=J.getWall(t),s=J.getPoint(r.start),l=J.getPoint(r.end),h=r.children,p=J.getSymbol(e);p||e||(p={},(p={struct:{}}).startPoint=o,p.endPoint=i);for(var c=1e4,u=1e4,d=null,y=null,g=null,f=null,x=0;x<h.length;++x)if(h[x]!=e){var m=J.getSymbol(h[x]),P=a.getDistance(p.startPoint,m.startPoint),v=a.getDistance(p.startPoint,m.endPoint);c>Math.min(P,v)&&(P<v?(d=m.startPoint,g=m.endPoint):(d=m.endPoint,g=m.startPoint),a.getDistance(p.startPoint,d)>a.getDistance(p.endPoint,d)?(d=null,g=null):c=Math.min(P,v));var I=a.getDistance(p.endPoint,m.startPoint),S=a.getDistance(p.endPoint,m.endPoint);u>Math.min(I,S)&&(I<S?(y=m.startPoint,f=m.endPoint):(y=m.endPoint,f=m.startPoint),a.getDistance(p.endPoint,y)>a.getDistance(p.startPoint,y)?(y=null,f=null):u=Math.min(I,S))}return n&&(null==d&&(a.getDistance(s,p.startPoint)>a.getDistance(s,p.endPoint)?(d=l,g=l):(d=s,g=s)),null==y&&(a.getDistance(s,p.startPoint)>a.getDistance(s,p.endPoint)?(y=s,f=s):(y=l,f=l))),{startPosition:d,startPosition2:g,endPosition:y,endPosition2:f}},R.prototype.moveSymbolSinglePoint=function(t,e,n){var o=J.getSymbol(e),i=a.createLine1(o.startPoint,o.endPoint),r=a.getVerticalLine(i,t);t=a.getIntersectionPoint(r,i);var s={x:(o.startPoint.x+o.endPoint.x)/2,y:(o.startPoint.y+o.endPoint.y)/2},l=J.getWall(o.parent),h=J.getPoint(l.start),p=J.getPoint(l.end);if("start"==n){if(!a.PointInSegment(s,t,o.endPoint))return null;a.getDistance(o.startPoint,h)<a.getDistance(o.endPoint,h)?a.getDistance(t,s)>a.getDistance(h,s)&&a.clonePoint(t,h):a.getDistance(t,s)>a.getDistance(p,s)&&a.clonePoint(t,p)}else if("end"==n){if(!a.PointInSegment(s,t,o.startPoint))return null;a.getDistance(o.endPoint,p)<a.getDistance(o.startPoint,p)?a.getDistance(t,s)>a.getDistance(p,s)&&a.clonePoint(t,p):a.getDistance(t,s)>a.getDistance(h,s)&&a.clonePoint(t,h)}return{dir:n,position:t}},R.prototype.setSymbolInfo=function(t){var e=J.getSymbol(t.vectorId);return e.openSide=t.openSide,e.startPoint=t.start,e.endPoint=t.end,e.points2d=JSON.parse(JSON.stringify(t.points2d)),e.enter=t.enter,e.parent=t.parent,e},R.prototype.setEnterImg=function(t){this.enterImg=t},R.prototype.getEnterImg=function(){return this.enterImg},R.prototype.createSymbolFromPanorama=function(t,e,n){var o=[],i={x:t.ray.origin.x,y:-1*t.ray.origin.z},r=J.getWalls();for(var s in r){var l=J.getWall(s),h=J.getPoint(l.start),p=J.getPoint(l.end),c=a.raySegmentIntersection(i,t.ray.direction,h,p);null!=c&&o.push({wallId:s,join:c})}if(o.length>0){function t(t,e){return a.getDistance(i,t.join)-a.getDistance(i,e.join)}o=o.sort(t.bind(this));var u=this.addSymbol(o[0].join,e,o[0].wallId);return null!=u?(A.moveFullSymbol(o[0].join,u,o[0].wallId),J.getSymbol(u),u):(console.error("漫游模式下添加门/窗:门/窗区域太小,加不上"),null)}return console.error("漫游模式下添加门/窗:没有与任何墙相交"),null};var _=new R,j=function(){this.defaultCenter=null,this.center=null,this.zoom=100,this.res=80,this.ratio=1,this.cadImg_Width=1920,this.cadImg_Height=937,this.initRes=null,this.initWidth=null,this.initHeight=null};j.prototype.init=function(t){var e=J.getBoundingBox();this.setCenter(e),this.updateForCanvas(t)},j.prototype.setInitInfo=function(t,e,n){null==this.initRes&&(this.initRes=t),null==this.initWidth&&(this.initWidth=e),null==this.initHeight&&(this.initHeight=n)},j.prototype.updateResForReSize=function(t,e,n){Math.abs(n)<.01||Math.abs(n-2*Math.PI)<.01?this.res=this.initRes*t/this.initWidth:this.res=this.initRes*e/this.initHeight,r.minRealDis=r.minPixDistance/this.res*r.defaultZoom/this.zoom,r.minAdsorb=r.minPixLen/this.res*r.defaultZoom/this.zoom},j.prototype.setCenter=function(t){this.defaultCenter?this.center={x:this.defaultCenter.x,y:this.defaultCenter.y}:(this.cadBoundingbox=JSON.parse(JSON.stringify(t)),null!=this.cadBoundingbox&&(this.center={x:(this.cadBoundingbox.maxX+this.cadBoundingbox.minX)/2,y:(this.cadBoundingbox.maxY+this.cadBoundingbox.minY)/2}))},j.prototype._setDefaultCenter=function(t){this.defaultCenter={x:t.x,y:t.y}},j.prototype.setDefaultCenter=function(t){this.defaultCenter={x:t.x,y:-t.z}},j.prototype._setRes=function(t){this.res=t,r.minRealDis=r.minPixDistance/this.res*r.defaultZoom/this.zoom,r.minAdsorb=r.minPixLen/this.res*r.defaultZoom/this.zoom},j.prototype.setRes=function(t,e){this.res=this.width/Math.abs(e-t),r.minRealDis=r.minPixDistance/this.res*r.defaultZoom/this.zoom,r.minAdsorb=r.minPixLen/this.res*r.defaultZoom/this.zoom},j.prototype.getScreenXY=function(t){if(null==this.width||null==this.height)return null;var e=t.x,n=t.y,o=this.width/2+(e-this.center.x)*this.res*this.zoom/100,i=this.height/2-(n-this.center.y)*this.res*this.zoom/100;return o=.5+(o*=this.ratio)<<0,i=.5+(i*=this.ratio)<<0,{x:Math.floor(o),y:Math.floor(i)}},j.prototype.getXYFromScreen=function(t){var e={};return e.x=(t.x-this.width/2)/this.res*100/this.zoom+this.center.x,e.y=(this.height/2-t.y)/this.res*100/this.zoom+this.center.y,e},j.prototype.getPointForRevRotate=function(t,e){if(Math.abs(e)<.01||Math.abs(e-2*Math.PI)<.01)return t;var n=(t.x-this.center.x)*Math.cos(e)-(t.y-this.center.y)*Math.sin(e)+this.center.x,o=(t.y-this.center.y)*Math.cos(e)+(t.x-this.center.x)*Math.sin(e)+this.center.y;return t.x=n,t.y=o,t},j.prototype.getVectorForRotate=function(t,e){if(e=-e,Math.abs(e)<.01||Math.abs(e-2*Math.PI)<.01)return t;var n=(t.x-this.center.x)*Math.cos(e)-(t.y-this.center.y)*Math.sin(e)+this.center.x,o=(t.y-this.center.y)*Math.cos(e)+(t.x-this.center.x)*Math.sin(e)+this.center.y;return t.x=n,t.y=o,t},j.prototype.updateCenterForRotate=function(t){if(!(Math.abs(t)<.01||Math.abs(t-2*Math.PI)<.01)){var e=this.center.x*Math.cos(t)-this.center.y*Math.sin(t),n=this.center.y*Math.cos(t)+this.center.x*Math.sin(t);return this.center.x=e,this.center.y=n,this.center}},j.prototype.updateForCanvas=function(t){t&&(this.width=t.clientWidth,this.height=t.clientHeight,t.width=t.clientWidth,t.height=t.clientHeight)},j.prototype.updateZoom=function(t){this.zoom=t,r.minRealDis=r.minPixDistance/this.res*r.defaultZoom/this.zoom,r.minAdsorb=r.minPixLen/this.res*r.defaultZoom/this.zoom},j.prototype.moveTo=function(t,e){var n=this.getXYFromScreen(e);this.zoom=t;var o=(100*e.x/this.zoom-this.width/2)/this.res,i=(this.height/2-100*e.y/this.zoom)/this.res;this.center.x=n.x-o,this.center.y=n.y-i},j.prototype.getXYFromScreenForDefaultZoom=function(t){var e={};return e.x=(t.x-this.width/2)/this.res+this.center.x,e.y=(this.height/2-t.y)/this.res+this.center.y,e},j.prototype.getScreenInfoForCAD=function(){var t=this.getXYFromScreen({x:this.width,y:this.height}),e=this.getXYFromScreen({x:0,y:0}),n={x:this.center.x,y:this.center.y};return{width:Math.abs(t.x-e.x),height:Math.abs(t.y-e.y),center:{x:n.x,y:n.y},defaultCenter:this.defaultCenter}},j.prototype.getPixelRatio=function(t){var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},j.prototype.reSet=function(){this.center={x:this.defaultCenter.x,y:this.defaultCenter.y},this.zoom=100},j.prototype.updateForRotate=function(t){void 0===t&&(t=Math.PI/2);for(var e=0;e<o.floors.length;++e){var n=o.floors[e].points;for(var i in n)n[i]=this.getVectorForRotate(n[i],t);var r=o.floors[e].symbols;for(var s in r)r[s].startPoint=this.getVectorForRotate(r[s].startPoint,t),r[s].endPoint=this.getVectorForRotate(r[s].endPoint,t),r[s].setPoints2d(),_.setPosition3d(r[s]);var l=o.floors[e].components;for(var h in l){var p=l[h];p.sideWidth=a.getDistance(p.points2d[0],p.points2d[1]),p.sideThickness=a.getDistance(p.points2d[1],p.points2d[2]),p.center=this.getVectorForRotate(p.center,t),p.angle=(p.angle+t/Math.PI*180)%360,p.setPoints2d()}var c=o.floors[e].tags;for(var u in c)c[u].center=this.getVectorForRotate(c[u].center,t),c[u].setPoints2d();var d=o.floors[e].furnitures;for(var y in d){var g=d[y];g.center=this.getVectorForRotate(g.center,t),g.angle=(g.angle+t/Math.PI*180)%360}}},j.prototype.updatePanosForRotate=function(t){for(var e=o.panos,n=0;n<e.length;++n){var i=JSON.parse(JSON.stringify(e[n]));i=this.getVectorForRotate(i,t),e[n].x=i.x,e[n].y=i.y}},j.prototype.setRadio=function(t){this.ratio=t,this.cadImg_Width=1920*t,this.cadImg_Height=937*t},j.prototype.clear=function(){this.defaultCenter=null,this.center=null,this.zoom=100,this.res=80,this.ratio=1};var Y=new j,N=function(){this.currentId=0,this.currentFloor=0,this.angle=0,this.$app=null,this.cadBoundingBox=null};N.prototype.setCurrentId=function(t){this.currentId=t},N.prototype.getCurrentId=function(){return this.currentId},N.prototype.updateCurrentId=function(){++this.currentId},N.prototype.setCurrentFloor=function(t){1==o.floors.length?this.currentFloor=0:this.currentFloor=t},N.prototype.getCurrentFloor=function(){return this.currentFloor},N.prototype.getCompass=function(){return o.compass},N.prototype.setCompass=function(t){o.compass=t},N.prototype.getFloorNum=function(){return o.floors.length},N.prototype.initFloor=function(t){o.initFloor(t)},N.prototype.getFloors=function(){return o.floors},N.prototype.getPoint=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].points[t]},N.prototype.deletePoint=function(t,e,n){null!=n&&void 0!==n||(n=this.currentFloor);var i=this.getPoint(t);if(i)if(0==Object.keys(i.parent).length)i=null,delete o.floors[n].points[t];else if(1!=Object.keys(i.parent).length||e)if(1==Object.keys(i.parent).length&&i.parent[e])delete o.floors[n].points[t];else{if(1==Object.keys(i.parent).length&&!i.parent[e])return;delete i.parent[e]}else delete o.floors[n].points[t]},N.prototype.getWall=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].walls[t]},N.prototype.deleteWall=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor);for(var n=this.getWall(t,e),i=0;i<n.children.length;++i)this.deleteSymbol(n.children[i],e);this.deletePoint(n.start,t,e),this.deletePoint(n.end,t,e),delete o.floors[e].walls[t]},N.prototype.deleteWallNoSymbol=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor);var n=this.getWall(t,e);this.deletePoint(n.start,t,e),this.deletePoint(n.end,t,e),delete o.floors[e].walls[t]},N.prototype.getAngle=function(){return this.angle},N.prototype.setAngle=function(t){this.angle=t},N.prototype.setBoundingBox=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].boundingBox=JSON.parse(JSON.stringify(t))},N.prototype.getBoundingBox=function(t){if(null==t||void 0===t){for(var e=null,n=null,i=null,r=null,s=0;s<o.floors.length;++s)o.floors[s].boundingBox.hasOwnProperty("maxX")&&o.floors[s].boundingBox.hasOwnProperty("minX")&&o.floors[s].boundingBox.hasOwnProperty("maxY")&&o.floors[s].boundingBox.hasOwnProperty("minY")||this.updateBoundingBox(s),(null==e||e>o.floors[s].boundingBox.minX)&&(e=o.floors[s].boundingBox.minX),(null==n||n<o.floors[s].boundingBox.maxX)&&(n=o.floors[s].boundingBox.maxX),(null==i||i>o.floors[s].boundingBox.minY)&&(i=o.floors[s].boundingBox.minY),(null==r||r<o.floors[s].boundingBox.maxY)&&(r=o.floors[s].boundingBox.maxY);return{minX:e,maxX:n,minY:i,maxY:r}}return o.floors[t].boundingBox},N.prototype.setCadBoundingBox=function(){for(var t=null,e=null,n=null,i=null,r=0;r<o.floors.length;++r){var s=o.floors[r].boundingBox;(null==t||t>s.minX)&&(t=s.minX),(null==e||e>s.minY)&&(e=s.minY),(null==n||n<s.maxX)&&(n=s.maxX),(null==i||i<s.maxY)&&(i=s.maxY)}this.cadBoundingBox={maxX:n,maxY:i,minX:t,minY:e}},N.prototype.getCadBoundingBox=function(){return this.cadBoundingBox},N.prototype.updateBoundingBox=function(t){var e=this.getPoints(t),n=null,o=null,i=null,r=null;for(var s in e){var a=e[s];(null==n||n>a.x)&&(n=a.x),(null==o||o<a.x)&&(o=a.x),(null==i||i>a.y)&&(i=a.y),(null==r||r<a.y)&&(r=a.y)}this.setBoundingBox({minX:n,maxX:o,minY:i,maxY:r},t)},N.prototype.getFloorData=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t]},N.prototype.getWalls=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].walls},N.prototype.getPoints=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].points},N.prototype.getSymbol=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].symbols[t]},N.prototype.addWall=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].walls[t.vectorId]=t},N.prototype.addPoint=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].points[t.vectorId]=t},N.prototype.addSymbol=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].symbols[t.vectorId]=t},N.prototype.addComponent=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].components[t.vectorId]=t},N.prototype.addFurniture=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].furnitures[t.vectorId]=t},N.prototype.deleteSymbol=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),this.getSymbol(t,e),delete o.floors[e].symbols[t]},N.prototype.getComponent=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].components[t]},N.prototype.deleteComponent=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),this.getComponent(t,e),delete o.floors[e].components[t]},N.prototype.getFurniture=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].furnitures[t]},N.prototype.deleteFurniture=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),this.getFurniture(t,e),delete o.floors[e].furnitures[t]},N.prototype.addTag=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].tags[t.vectorId]=t},N.prototype.getTag=function(t,e){return null!=e&&void 0!==e||(e=this.currentFloor),o.floors[e].tags[t]},N.prototype.deleteTag=function(t,e){null!=e&&void 0!==e||(e=this.currentFloor),this.getTag(t,e),delete o.floors[e].tags[t]},N.prototype.getSymbols=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].symbols},N.prototype.getComponents=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].components},N.prototype.getTags=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].tags},N.prototype.getFurnitures=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].furnitures},N.prototype.getAllBoundingBox=function(){for(var t=[],e=0;e<o.floors.length;++e){var n=void 0,i=void 0,r=void 0,s=void 0,a={};for(var l in o.floors[e].points){var h=o.floors[e].points[l].x,p=o.floors[e].points[l].y;(void 0===n||n>h)&&(n=h),(void 0===r||r<h)&&(r=h),(void 0===i||i>p)&&(i=p),(void 0===s||s<p)&&(s=p)}a.left=n,a.top=s,a.right=r,a.bottom=i,t.push(a)}return t},N.prototype.getCadInfo=function(t){for(var e=[],n=this.getAllBoundingBox(),o=0;o<n.length;++o){var i={},r=Y.getScreenXY({x:n[o].left,y:n[o].top}),s=Y.getScreenXY({x:n[o].right,y:n[o].bottom}),a=r.x,l=r.y,h=t.width-s.x,p=t.height-s.y;i.left=a,i.top=l,i.right=h,i.bottom=p,i.bound=n[o],i.bound.top=-1*i.bound.top,i.bound.bottom=-1*i.bound.bottom,e.push(i)}return e},N.prototype.getRooms=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].rooms},N.prototype.clear=function(t){o.floors[this.currentFloor]&&(o.floors[this.currentFloor].points={},o.floors[this.currentFloor].walls={},o.floors[this.currentFloor].symbols={},o.floors[this.currentFloor].components={},o.floors[this.currentFloor].tags={},o.floors[this.currentFloor].furnitures={},t||(o.floors[this.currentFloor].boundingBox={}),o.floors[this.currentFloor].rooms=[])},N.prototype.getBoundingBox2DPosition=function(t){var e=Y.getScreenXY({x:t.min.x,y:t.max.z}),n=Y.getScreenXY({x:t.max.x,y:t.min.z});return{top:e.y,bottom:n.y,left:e.x,right:n.x}},N.prototype.deleteFloorData=function(){o.floors=[]},N.prototype.setFloorName=function(t,e){o.floors[e].name=t},N.prototype.setFloorId=function(t,e){o.floors[e].id=t},N.prototype.setFloorSubgroup=function(t,e){o.floors[e].subgroup=t},N.prototype.setFloorHeight=function(t,e){o.floors[t].height=e},N.prototype.getFloorHeight=function(t){return null!=t&&void 0!==t||(t=this.currentFloor),o.floors[t].height};var J=new N,V=function(){this.pad={top:60,bottom:60,left:265,right:265},this.region={},this.measureLines={top:[],bottom:[],left:[],right:[]},this.minDis=null,this.unit="m",this.defalutMeasurePad={bottom:60,right:265},this.margin={top:60,bottom:60,left:70,right:70}};V.prototype.padding=function(t){void 0===t&&(t={}),Object.assign(this.pad,t),Object.assign(this.defalutMeasurePad,t)},V.prototype.updatePad=function(t){Object.assign(this.pad,t)},V.prototype.updateRegion=function(t){this.region.top=this.pad.top,this.region.bottom=Y.height-this.pad.bottom,this.region.left=this.pad.left,this.region.right=Y.width-this.pad.right},V.prototype.updateNewRegion=function(t,e,n,o){var i=Y.getScreenXY({x:t,y:n}),r=Y.getScreenXY({x:e,y:o});this.region.top=r.y-this.margin.top*Y.ratio,this.region.bottom=i.y+this.margin.bottom*Y.ratio,this.region.left=i.x-this.margin.left*Y.ratio,this.region.right=r.x+this.margin.right*Y.ratio},V.prototype.update=function(t){null==this.minDis&&(this.minDis=100/Y.res);var e=[],n=[],o=[],i=[],r=[];if(J.getFloorData()){var s=J.getPoints();for(var a in s){var l=s[a];r.push({x:l.x,y:l.y})}e=[].concat(r).sort(F.bind(this)),(n=[].concat(e)).reverse(),o=[].concat(r).sort(T.bind(this)),(i=[].concat(o)).reverse(),t?this.updateNewRegion(o[0].x,i[0].x,n[0].y,e[0].y):this.updateRegion();var h=null,p=null;this.measureLines.top=[];for(var c=0;c<e.length;++c)if(0==c)h=e[0].x,p=e[0].x,this.measureLines.top.push({x:e[0].x,y:this.region.top});else{if(e[c].x>=h&&e[c].x<=p)continue;(h=Math.min(h,e[c].x))!=(p=Math.max(p,e[c].x))&&this.measureLines.top.push({x:e[c].x,y:this.region.top})}e=this.measureLines.top.sort(T.bind(this)),this.measureLines.top=[],this.measureLines.top.push(e[0]);for(var u=0;u<e.length-1;++u){h=e[u],p=null;for(var d=u+1;d<e.length&&(p=e[d],Math.abs(h.x-p.x)<this.minDis);++d)p=null,++u;if(null!=p)this.measureLines.top.push(p);else if(u==e.length-1){var y=this.measureLines.top.length;this.measureLines.top[y-1]=e[u];break}}this.measureLines.bottom=[];for(var g=0;g<n.length;++g)if(0==g)h=n[0].x,p=n[0].x,this.measureLines.bottom.push({x:n[0].x,y:this.region.bottom});else{if(n[g].x>=h&&n[g].x<=p)continue;(h=Math.min(h,n[g].x))!=(p=Math.max(p,n[g].x))&&this.measureLines.bottom.push({x:n[g].x,y:this.region.bottom})}n=this.measureLines.bottom.sort(T.bind(this)),this.measureLines.bottom=[],this.measureLines.bottom.push(n[0]);for(var f=0;f<n.length-1;++f){h=n[f],p=null;for(var x=f+1;x<n.length&&(p=n[x],Math.abs(h.x-p.x)<this.minDis);++x)p=null,++f;if(null!=p)this.measureLines.bottom.push(p);else if(f==n.length-1){var m=this.measureLines.bottom.length;this.measureLines.bottom[m-1]=n[f];break}}this.measureLines.left=[];for(var P=0;P<o.length;++P)if(0==P)h=o[0].y,p=o[0].y,this.measureLines.left.push({x:this.region.left,y:o[0].y});else{if(o[P].y>=h&&o[P].y<=p)continue;(h=Math.min(h,o[P].y))!=(p=Math.max(p,o[P].y))&&this.measureLines.left.push({x:this.region.left,y:o[P].y})}o=this.measureLines.left.sort(F.bind(this)),this.measureLines.left=[],this.measureLines.left.push(o[0]);for(var v=0;v<o.length-1;++v){h=o[v],p=null;for(var I=v+1;I<o.length&&(p=o[I],Math.abs(h.y-p.y)<this.minDis);++I)p=null,++v;if(null!=p)this.measureLines.left.push(p);else if(v==o.length-1){var S=this.measureLines.left.length;this.measureLines.left[S-1]=o[v];break}}this.measureLines.right=[];for(var b=0;b<i.length;++b)if(0==b)h=i[0].y,p=i[0].y,this.measureLines.right.push({x:this.region.right,y:i[0].y});else{if(i[b].y>=h&&i[b].y<=p)continue;(h=Math.min(h,i[b].y))!=(p=Math.max(p,i[b].y))&&this.measureLines.right.push({x:this.region.right,y:i[b].y})}i=this.measureLines.right.sort(F.bind(this)),this.measureLines.right=[],this.measureLines.right.push(i[0]);for(var w=0;w<i.length-1;++w){h=i[w],p=null;for(var D=w+1;D<i.length&&(p=i[D],Math.abs(h.y-p.y)<this.minDis);++D)p=null,++w;if(null!=p)this.measureLines.right.push(p);else if(w==i.length-1){var M=this.measureLines.right.length;this.measureLines.right[M-1]=i[w];break}}}function F(t,e){return e.y-t.y}function T(t,e){return t.x-e.x}};var X=new V,U=function(t){function e(e,n){t.call(this),this.center=e,this.points2d=[],this.title="",this.des="",this.unit="m",this.name="标注",this.adding=!0,this.sideWidth=30,this.sideThickness=30,this.geoType=x,this.setId(n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isContain=function(t){var e=[];return e.push(this.points2d[0]),e.push(this.points2d[1]),e.push(this.points2d[2]),e.push(this.points2d[3]),a.isPointInPoly(t,e)},e.prototype.setPoints2d=function(){this.points2d=[];var t=this.center.x-this.sideWidth/Y.res*r.defaultZoom/Y.zoom/2,e=this.center.y-this.sideThickness/Y.res*r.defaultZoom/Y.zoom/2,n=this.center.x+this.sideWidth/Y.res*r.defaultZoom/Y.zoom/2,o=this.center.y+this.sideThickness/Y.res*r.defaultZoom/Y.zoom/2,i={x:t,y:o},s={x:n,y:o},a={x:n,y:e},l={x:t,y:e};this.points2d.push(i),this.points2d.push(s),this.points2d.push(a),this.points2d.push(l);var h=(i.x-this.center.x)/2,p=(i.y-this.center.y)/2;this.points2d.push({x:i.x-h,y:i.y-p}),this.points2d.push({x:s.x+h,y:i.y-p}),this.points2d.push({x:this.center.x,y:i.y-p}),this.points2d.push({x:this.center.x,y:a.y+p})},e.prototype.setTitle=function(t){this.title=t},e.prototype.setDes=function(t){this.des=t},e.prototype.setUnit=function(t){this.unit=t},e.prototype.setAdding=function(t){this.adding=t},e}(b),z=["","⅛","¼","⅜","½","⅝","¾","⅞"],H=function(t,e,n,o){this.name=t,this.symbol=e,this.base=n,this.factor=o};H.prototype.toBase=function(t){return t*this.factor},H.prototype.fromBase=function(t){return t/this.factor};var G={MILLIMETER:["Millimeter","mm"],CENTIMETER:["Centimeter","cm"],METER:["Meter","m"],KILOMETER:["Kilometer","km"],INCH:["Inch","in"],FOOT:["Foot","ft"],MILE:["Mile","mi"],SQUAREMETER:["SquareMeter","m²"],SQUAREFOOT:["SquareFoot","ft²"],CUBICMETER:["CubicMeter","m³"],CUBICFOOT:["CubicFoot","ft³"],BYTE:["Byte","B"],KILOBYTE:["Kilobyte","kB"],MEGABYTE:["Megabyte","MB"],GIGABYTE:["Gigabyte","GB"],TERABYTE:["Terabyte","TB"],PETABYTE:["Petabyte","PB"],init:function(){var t,e,n,o,i,r,s,a,l,h,p,c=new H(G.METER[0],G.METER[1],void 0,1),u=new H(G.SQUAREMETER[0],G.SQUAREMETER[1],void 0,1),d=new H(G.CUBICMETER[0],G.CUBICMETER[1],void 0,1),y=new H(G.BYTE[0],G.BYTE[1],void 0,1);G.DISTANCE=((t={}).metric=((e={})[G.MILLIMETER[0]]=new H(G.MILLIMETER[0],G.MILLIMETER[1],c,.001),e[G.CENTIMETER[0]]=new H(G.CENTIMETER[0],G.CENTIMETER[1],c,.01),e[G.METER[0]]=c,e[G.KILOMETER[0]]=new H(G.KILOMETER[0],G.KILOMETER[1],c,1e3),e),t.imperial=((n={})[G.INCH[0]]=new H(G.INCH[0],G.INCH[1],c,.0254),n[G.FOOT[0]]=new H(G.FOOT[0],G.FOOT[1],c,.3048),n[G.MILE[0]]=new H(G.MILE[0],G.MILE[1],c,1609.344),n),t),G.AREA=((o={}).metric=((i={})[G.SQUAREMETER[0]]=u,i),o.imperial=((r={})[G.SQUAREFOOT[0]]=new H(G.SQUAREFOOT[0],G.SQUAREFOOT[1],u,.092903),r),o),G.VOLUME=((s={}).metric=((a={})[G.CUBICMETER[0]]=d,a),s.imperial=((l={})[G.CUBICFOOT[0]]=new H(G.CUBICFOOT[0],G.CUBICFOOT[1],d,.0283168),l),s);var g=((h={})[G.BYTE[0]]=y,h[G.KILOBYTE[0]]=new H(G.KILOBYTE[0],G.KILOBYTE[1],y,1e3),h[G.MEGABYTE[0]]=new H(G.MEGABYTE[0],G.MEGABYTE[1],y,1e6),h[G.GIGABYTE[0]]=new H(G.GIGABYTE[0],G.GIGABYTE[1],y,1e9),h[G.TERABYTE[0]]=new H(G.TERABYTE[0],G.TERABYTE[1],y,1e12),h[G.PETABYTE[0]]=new H(G.PETABYTE[0],G.PETABYTE[1],y,1e15),h);G.DATA=((p={}).metric=g,p.imperial=g,p)},getUnitsOfMeasurementByDomain:function(t){return this[t.toUpperCase()]},getUnitsOfMeasurementByDomainAndSystem:function(t,e){var o=this.getUnitsOfMeasurementByDomain(t);if(o.hasOwnProperty(e.toLowerCase()))return o[e.toLowerCase()];console.error(n+" measurement system is not supported.")},getDefaultUnitByDomainAndSystem:function(t,e){switch(t.toUpperCase()){case"DISTANCE":switch(e.toLowerCase()){case"metric":return this.DISTANCE.metric[this.METER[0]];case"imperial":return this.DISTANCE.imperial[this.FOOT[0]];default:console.error(e+" measurement system is not supported.")}case"AREA":switch(e.toLowerCase()){case"metric":return this.AREA.metric[this.SQUAREMETER[0]];case"imperial":return this.AREA.imperial[this.SQUAREFOOT[0]];default:console.error(e+" measurement system is not supported.")}case"VOLUME":switch(e.toLowerCase()){case"metric":return this.VOLUME.metric[this.CUBICMETER[0]];case"imperial":return this.VOLUME.imperial[this.CUBICFOOT[0]];default:console.error(e+" measurement system is not supported.")}case"DATA":switch(e.toLowerCase()){case"metric":return this.DATA.metric[this.BYTE[0]];case"imperial":return this.DATA.imperial[this.BYTE[0]];default:console.error(e+" measurement system is not supported.")}default:console.error(t+" measurement domain is not supported.")}}},K=function(){this.LOCAL_STORAGE_KEY="iv_unit_key",G.init(),this.unitSystems=["metric","imperial"],this.defaultSystem="metric"},Z=function(){this.UnitService=new K};Z.prototype.scopedConvert=function(t,n,o,i,r){return void 0===o&&(o=2),e.convert(t,n,o,i,r)},Z.prototype.convert=function(t,e,n,o,i,r){if(void 0===n&&(n=2),void 0===r&&(r=!1),!t)return"";var s=this.getMostRelevantMeasurement(e,o||this.UnitService.currentSystem,t,i);return this.getFormattedMeasurementString(s[0],s[1],n,r)},Z.prototype.getFormattedMeasurementString=function(t,e,n,o){return o&&e.name===G.FOOT[0]?this.formatImperialDistance(12*t):o&&e.name===G.INCH[0]?this.formatImperialDistance(t):t.toLocaleString(void 0,{minimumFractionDigits:n,maximumFractionDigits:n})+" "+e.symbol},Z.prototype.formatImperialDistance=function(t){var e=Math.round(8*t),n=Math.floor(e/8),o=Math.floor(n/12),i=n-12*o,r=z[e%8],s=0===i&&""!==r?"":i;return""!==s&&""!==r&&(r=" "+r),0!==o?o+"' "+s+r+'"':""+s+r+'"'},Z.prototype.getMostRelevantMeasurement=function(t,e,n,o){void 0===o&&(o=0);var i=[],r=G.getUnitsOfMeasurementByDomainAndSystem(t,e);for(var s in r)i.push(r[s]);var a=i.filter((function(t){return t.factor>=o})).reduce((function(t,e){return e.fromBase(n)<t.fromBase(n)&&e.fromBase(n)>=1?e:t}));return a?[a.fromBase(n),a]:void 0},Z.prototype.getMostRelevantMeasurement2=function(t,e,n,o){void 0===o&&(o=0);var i=[],r=G.getUnitsOfMeasurementByDomainAndSystem(t,e);for(var s in r)i.push(r[s]);var a=i.filter((function(t){return t.factor>=o})).reduce((function(t,e){return e.toBase(n)<t.toBase(n)&&e.toBase(n)>=1?e:t}));return a?[a.toBase(n),a]:void 0},Z.prototype.convertBack=function(t,e,n,o,i){if(void 0===n&&(n=2),!t)return"";t=t.trim().replace(",","");var r=G.getDefaultUnitByDomainAndSystem(e,"metric"),s=this.getMostRelevantMeasurement2(e,o,t,i);return this.getFormattedMeasurementString(s[0],r,n)};var q=new Z,Q=function(){};Q.prototype.createTag=function(t,e,n){var o=new U(t,e);return o.setPoints2d(),J.addTag(o,n),o},Q.prototype.setTagInfo=function(t){var e=J.getTag(t.vectorId);e.vectorId=t.vectorId,e.center=JSON.parse(JSON.stringify(t.center)),e.points2d=JSON.parse(JSON.stringify(t.points2d)),e.title=t.title,e.des=t.des,e.unit=t.unit,e.adding=t.adding},Q.prototype.deleteTag=function(t,e){J.deleteTag(t,e)},Q.prototype.clearDefaultTags=function(){for(var t=0;t<o.floors.length;++t){var e=o.floors[t].tags;for(var n in e){var i=e[n];null!=i.title&&""!=i.title.trim()||null!=i.des&&""!=i.des||this.deleteTag(i.vectorId,t)}}},Q.prototype.convertUnit=function(t){for(var e=0;e<o.floors.length;++e){var n=o.floors[e].tags;for(var i in n){var r=n[i];r.unit!=t&&(r.des&&(r.unit=t,"m"==t?(r.des=q.convertBack(r.des,"area",7,"imperial",.01,!1),r.des=parseFloat(r.des)):(r.des=q.convert(r.des,"area",7,"imperial",.01,!1),r.des=r.des.replace("ft²",""))))}}},Q.prototype.getTags=function(t){return o.floors[t].tags};var $=new Q,tt=function(t,e,n){this.name=n||"未命名",this.floor=e,this.roomId=t,this.center=null,this.area=null,this.wallIds=[],this.wallPointIDs=[],this.childrenRooms=[],this.childrenWalls=[],this.parent=null,this.tagName=null,this.backgroundImg_src="default",this.boundingBox={}};tt.prototype.setInfo=function(t){this.wallIds=t.wallIds,this.wallPointIDs=t.wallPointIDs,this.area=t.area,this.center=t.center,this.boundingBox=t.boundingBox,this.parent=t.parent,this.childrenWalls=t.childrenWalls,this.childrenRooms=t.childrenRooms},tt.prototype.containPoint=function(t){for(var e=[],n=0;n<this.wallPointIDs.length;++n){var o=J.getPoint(this.wallPointIDs[n],this.floor);e.push({x:o.x,y:o.y})}return a.isPointInPoly(t,e)};var et=function(t,e,n){this.pointIds=e,this.segmentIds=t,this.childrenPolygonIds=[],this.childrenSegmentIds=[],this.id=n,this.parent=null,this.center=null,this.boundingBox=null,this.area=0,this.floor=1,this.geoType="Polygon"},nt=function(){this.segments={},this.points={},this.polygons=[],this.matrix={},this.maxPolygons=[],this.pre="",this.currentId=1};nt.prototype.init=function(){this.segments={},this.points={},this.polygons=[],this.matrix={},this.maxPolygons=[]},nt.prototype.start=function(t,e,n){this.pre=n||"",this.init(),this.segments=JSON.parse(JSON.stringify(t)),this.points=JSON.parse(JSON.stringify(e)),this.createPolygon(null,this.segments,this.points),this.segments=JSON.parse(JSON.stringify(t)),this.points=JSON.parse(JSON.stringify(e)),this.getIncludePolygonInfos(),this.updateChildrenSegmentIds(this.segments,this.points,this.polygons)},nt.prototype.getStartPoint=function(t,e){var n=null,o=null;for(var i in t)if(i!==e){var r=t[i];(null===n||n.x>r.x||n.x===r.x&&n.y>r.y)&&(n={x:r.x,y:r.y},o=i)}return o},nt.prototype.createPolygon=function(t,e,n){if(0!==Object.keys(n).length&&0!==Object.keys(e).length){this.matrix={};var o=[];this.preHandle(n,e);var i=Object.keys(e).length;if(0!==Object.keys(n).length&&0!==Object.keys(e).length){null!==t&&n[t]||(t=this.getStartPoint(n)),o.push(t);var r=this.getNextForMinAngleX(t,n,e);if(null!==r){o.push(r);var s=this.getMaxPolygon(o,n,e);this.checkPolygonSegmentIds(s,n,e);var a=this.splitPolygon(s);if(a){var l=this.getPolygonData(a,n,e),h=Object.keys(l.points),p=Object.keys(l.segments);if(l.segments=this.getChildSegments(l.points,l.segments,e),this.createPolygon(a[0],l.segments,l.points),this.updateMartix2(h,p,n,e),this.preHandle(n,e),0===Object.keys(n).length||0===Object.keys(e).length)return;this.createPolygon(t,e,n)}else if(0!==Object.keys(n).length&&0!==Object.keys(e).length){this.maxPolygons.push(s),this.updateMartix(s,n,e),n[t]||(t=this.getStartPoint(n),r=this.getNextForMinAngleX(t,n,e));var c=[];c.push(t),c.push(r);var u=this.getMinPolygon(c,n,e);if(this.checkPolygonSegmentIds(u,n,e),a=this.splitPolygon(u)){var d=this.getPolygonData(a,n,e),y=Object.keys(d.points),g=Object.keys(d.segments);if(this.createPolygon(a[0],d.segments,d.points),this.updateMartix2(y,g,n,e),this.preHandle(n,e),0===Object.keys(n).length||0===Object.keys(e).length)return;this.createPolygon(t,e,n)}else if(0!==s.length&&0!==u.length){if(this.addPolygon(u,n,e)){var f=u.slice(0);if(f.push(u[0]),this.updateMartix(f,n,e),this.preHandle(n,e),0===Object.keys(n).length||0===Object.keys(e).length)return}if(i===Object.keys(e).length){this.addPolygon(s,n,e);var x=s.slice(0);if(x.push(s[0]),this.updateMartix(x,n,e),this.updateMartix(x,n,e),this.preHandle(n,e),0===Object.keys(n).length||0===Object.keys(e).length)return}var m=this.getStartPoint(n,t);this.createPolygon(m,e,n)}else console.error("createPolygon——————————————————————————————————————————————————————————————出错!")}}}}},nt.prototype.splitPolygon=function(t){for(var e=[],n=0;n<t.length-1;++n){if(-1!==e.indexOf(t[n])){var o=t.slice(0,n+1),i=t.indexOf(t[n]);return o=o.splice(i)}e.push(t[n])}return null},nt.prototype.getPolygonData=function(t,e,n){for(var o={},i={},r=[],s=0;s<t.length;++s)o[t[s]]=e[t[s]],r.push(e[t[s]]);for(var l=this.checkPolygonSegmentIds(t,e,n),h=0;h<l.length;++h)i[l[h]]=n[l[h]];var p=[],c=[];for(var u in e)if(!(t.indexOf(u)>-1||p.indexOf(u)>-1)){var d=e[u];if(a.isPointInPoly(d,r)){p.push(u);var y=d.parent;for(var g in y)if(n[g]&&!i[g]&&-1===c.indexOf(g)){var f=null;n[g].start===u?f=n[g].end:n[g].end===u&&(f=n[g].start);var x=e[f];t.indexOf(f)>-1||p.indexOf(f)>-1?c.push(g):a.isPointInPoly(x,r)&&(c.push(g),p.push(f))}}}for(var m=0;m<p.length;++m)o[p[m]]||(o[p[m]]=e[p[m]]);for(var P=0;P<c.length;++P)i[c[P]]||(i[c[P]]=n[c[P]]);return{points:o,segments:i}},nt.prototype.getChildSegments=function(t,e,n){var o=[];for(var i in t)o.push(i);for(var r=0;r<o.length-1;++r)for(var s=r+1;s<o.length;++s){var a=this.getSegmentId2(t[o[r]],t[o[s]]);null==a||e[a]||(e[a]=n[a])}return e},nt.prototype.updateMartix2=function(t,e,n,o){for(var i=0;i<e.length;++i){var r=e[i];delete this.matrix[r],delete o[r],this.deleteSegment(r,o,n)}for(var s=0;s<t.length;++s){var a=t[s],l=n[a];l&&0!==Object.keys(l.parent).length||delete n[a]}},nt.prototype.addPolygon=function(t,e,n){var o=[],i=[];o[0]=this.getPoint(t[0],e);for(var r=0;r<t.length-1;++r){var s=t[r],l=t[r+1],h=this.getSegmentId(s,l,e,n);i.push(h);var p=this.getPoint(l,e);o.push(p)}var c=this.getId();t.pop();var u=new et(i,t,c);return u.area=this.getArea(u),u.center=this.getCenter(u),u.boundingBox=a.getBoundingBox(o),this.polygons.push(u),!0},nt.prototype.getMaxPolygon=function(t,e,n){var o=t[t.length-2],i=t[t.length-1],r=this.getNextForMaxMinAngle(o,i,e,n);return t[0]===r.min?(t.push(r.min),t):(t.push(r.min),this.getMaxPolygon(t,e,n))},nt.prototype.getMinPolygon=function(t,e,n){var o=t[t.length-2],i=t[t.length-1],r=this.getNextForMaxMinAngle(o,i,e,n);return t[0]===r.max?(t.push(r.max),t):(t.push(r.max),this.getMinPolygon(t,e,n))},nt.prototype.getNextForMinAngleX=function(t,e,n){for(var o=e[t],i=this.getAllLinkedPoint(t,e,n),r=null,s=null,l=0;l<i.length;++l){var h=e[i[l]];if(h){var p=a.Angle(o,{x:o.x+1,y:o.y},h);h.y-o.y<0&&(p*=-1),(null===r||r>p)&&(r=p,s=i[l])}}return s},nt.prototype.getNextForMaxMinAngle=function(t,e,n,o){var i=n[t],r=n[e];i&&r||console.error("getNextForMaxMinAngle******************************************");for(var s=r.x-i.x,l=r.y-i.y,h={x:r.x+s,y:r.y+l},p=this.getAllLinkedPoint(e,n,o),c=null,u=null,d=null,y=null,g=0;g<p.length;++g)if(p[g]!==t){var f=n[p[g]];if(f){var x=a.Angle(r,h,f);s*(f.y-r.y)-(f.x-r.x)*l<0&&(x*=-1),(null===c||c<x)&&(c=x,u=p[g]),(null===d||d>x)&&(d=x,y=p[g])}}return{max:u,min:y}},nt.prototype.updateMartix=function(t,e,n){for(var o=0;o<t.length-1;++o){var i=o===t.length-1?0:o+1,r=this.getSegmentId(t[o],t[i],e,n);this.matrix[r]?(delete this.matrix[r],this.deleteSegment(r,n,e)):this.matrix[r]=1}},nt.prototype.getSegmentId=function(t,e,n,o){var i=n[t];if(!i)return null;var r=i.parent;for(var s in r){var a=o[s];if(a&&(a.start===e||a.end===e))return s}return null},nt.prototype.getSegmentId2=function(t,e){var n=t.parent,o=e.parent;for(var i in n)if(o[i])return i;return null},nt.prototype.getAllLinkedPoint=function(t,e,n){var o=[],i=e[t];i||console.error("getAllLinkedPoint");var r=i.parent;for(var s in r){var a=n[s];a&&(a.start===t?o.push(a.end):a.end===t&&o.push(a.start))}return o},nt.prototype.deleteLinksSegment=function(t,e,n){var o=e[t];if(o&&0!==Object.keys(o.parent).length&&n[Object.keys(o.parent)[0]]){var i=this.getOtherPointId(Object.keys(o.parent)[0],t,n);this.deleteSegment(Object.keys(o.parent)[0],n,e);var r=e[i];r&&Object.keys(r.parent).length<2&&this.deleteLinksSegment(i,e,n)}},nt.prototype.deleteSegment=function(t,e,n){if(t&&e[t]){var o=e[t];this.deletePoint(o.start,t,n),this.deletePoint(o.end,t,n),delete e[t]}},nt.prototype.deletePoint=function(t,e,n){if(t&&n[t]){var o=this.getPoint(t,n);delete o.parent[e],0===Object.keys(o.parent).length&&delete n[t]}},nt.prototype.getOtherPointId=function(t,e,n){var o=n[t];return o||console.error("getOtherPointId**********************************************************************"),o.start===e?o.end:o.end===e?o.start:void console.error("getOtherPointId**********************************************************************")},nt.prototype.preHandle=function(t,e){var n=!1;for(var o in t){var i=t[o];if(Object.keys(i.parent).length<2)this.deleteLinksSegment(o,t,e),n=!0;else{var r=0;for(var s in i.parent)e[s]&&++r;if(r>1)continue;delete t[o]}}return n},nt.prototype.getPoint=function(t,e){return e[t]},nt.prototype.isClockwise=function(t,e){for(var n=[],o=0;o<t.length;++o){var i=e[t[o]];n.push({x:i.x,y:i.y})}return a.isClockwise(n)},nt.prototype.getId=function(){var t=this.currentId;return++this.currentId,"Polygon"+t},nt.prototype.getArea=function(t){for(var e=[],n=0;n<t.pointIds.length;++n){var o=this.points[t.pointIds[n]];e.push(o)}return a.ComputePolygonArea(e)},nt.prototype.getCenter=function(t){for(var e=[],n=0;n<t.pointIds.length;++n){var o=this.points[t.pointIds[n]];e.push(o)}return a.getPolygonCore(e)},nt.prototype.getIncludePolygonInfos=function(){this.polygons=this.polygons.sort((function(t,e){return t.area-e.area}));for(var t=0;t<this.polygons.length-1;++t){for(var e=null,n=t+1;n<this.polygons.length;++n)if(n!==t&&this.isContain(this.polygons[t],this.polygons[n])){e=this.polygons[n];break}null!=e&&(this.polygons[t].parent=e.id,e.childrenPolygonIds.push(this.polygons[t].id),e=null)}},nt.prototype.updateChildrenSegmentIds=function(t,e,n){for(var o=[],i=0;i<n.length;++i){var r=n[i];o=o.concat(r.segmentIds)}for(var s in t)if(!(o.indexOf(s)>-1))for(var a=t[s],l=e[a.start],h=e[a.end],p=0;p<n.length;++p){var c=!1,u=!1,d=n[p];(d.pointIds.indexOf(a.start)>-1||this.containPoint(d,l))&&(c=!0),(d.pointIds.indexOf(a.end)>-1||this.containPoint(d,h))&&(u=!0),c&&u&&d.childrenSegmentIds.push(s)}},nt.prototype.isContain=function(t,e){for(var n=[],o=[],i=0;i<t.pointIds.length;++i){var r=this.points[t.pointIds[i]];n.push(r)}for(var s=0;s<e.pointIds.length;++s){var l=this.points[e.pointIds[s]];o.push(l)}return a.isPolyInPoly(n,o,.01)},nt.prototype.containPoint=function(t,e){for(var n=[],o=0;o<t.pointIds.length;++o){var i=this.points[t.pointIds[o]];n.push(i)}return a.isPointInPoly(e,n)},nt.prototype.checkPolygonSegmentIds=function(t,e,n){for(var o=[],i=0;i<t.length;++i){var r=i===t.length-1?0:i+1;if(t[i]!==t[r]){if(!t[i]||!t[r])return;var s=this.getSegmentId(t[i],t[r],e,n);if(!s)return;o.push(s)}}return o},nt.prototype.setCaves=function(){for(var t=0;t<this.polygons.length;++t){var e=this.polygons[t],n=e.childrenPolygonIds.slice(0);this.getChildMaxPolygons(e,n)}},nt.prototype.getChildPolygonInfo=function(t){if(t.length<2)return null;for(var e=[],n=[],o=0;o<this.polygons.length;++o){var i=this.polygons[o];t.indexOf(i.id)>-1&&(e=e.concat(i.pointIds),n=n.concat(i.segmentIds))}for(var r={},s={},a=0;a<e.length;++a)r[e[a]]=this.points[e[a]];for(var l=0;l<n.length;++l)s[n[l]]=this.segments[n[l]];return{points:r,segments:s}},nt.prototype.getChildMaxPolygons=function(t,e){var n=this.getChildPolygonInfo(e);if(null!=n){var o=this.getStartPoint(n.points),i=[];i.push(o);var r=this.getNextForMinAngleX(o,n.points,n.segments);i.push(r);var s=this.getMaxPolygon(i,n.points,n.segments);s.pop(),t.caves.push(s);for(var a=0;a<e.length;++a)for(var l=this.getPolygon(e[a]),h=0;h<l.pointIds.length;++h)if(s.indexOf(l.pointIds[h])>-1){e.splice(a,1),--a;break}this.getChildMaxPolygons(t,e)}else if(1===e.length){var p=this.getPolygon(e[0]);t.caves.push(p.pointIds)}},nt.prototype.getPolygon=function(t){for(var e=0;e<this.polygons.length;++e){var n=this.polygons[e];if(n.id===t)return n}return console.error("找不到多边形!"),null};var ot=new nt,it=function(){this.room_hallImg=null,this.room_defaultImg=null,this.room_other_White_Img=null,this.room_other_Black_Img=null};it.prototype.addRoom=function(t,e){o.floors[e].rooms.push(t)},it.prototype.getRoom=function(t,e){return o.floors[e].rooms[t]},it.prototype.getRooms=function(t){return o.floors[t].rooms},it.prototype.clearRooms=function(t){o.floors[t].rooms=[]},it.prototype.setHallImg=function(t){this.room_hallImg=t},it.prototype.getHallImg=function(){return this.room_hallImg},it.prototype.setDefaultImg=function(t){this.room_defaultImg=t},it.prototype.getDefaultImg=function(){return this.room_defaultImg},it.prototype.setOtherWhiteImg=function(t){this.room_other_White_Img=t},it.prototype.getOtherWhiteImg=function(){return this.room_other_White_Img},it.prototype.setOtherBlackImg=function(t){this.room_other_Black_Img=t},it.prototype.getOtherBlackImg=function(){return this.room_other_Black_Img};var rt=new it,st=function(){this.points={},this.segments={},this.polygons=[],this.tempRooms=[]};st.prototype.start=function(){var t=o.floors;console.log("从头开始分房间!");for(var e=0;e<t.length;++e){var n=t[e].walls,i=t[e].points;rt.clearRooms(e),this.getRoomForSingleFloor(n,i,e)}this.updateRoomsTagName()},st.prototype.getRoomForSingleFloor=function(t,e,n){this.getRooms(t,e,n);for(var o=0;o<this.tempRooms.length;++o){var i=this.tempRooms[o];i.floor=n;var r=new tt(i.roomId,i.floor);r.setInfo({wallIds:i.wallIds,wallPointIDs:i.wallPointIDs,area:i.area,center:i.center,boundingBox:i.boundingBox,parent:i.parent,childrenWalls:i.childrenWalls,childrenRooms:i.childrenRooms}),rt.addRoom(r,n)}this.tempRooms=[]},st.prototype.getRooms=function(t,e,n){this.convertToSegments(t,n),this.convertToPoints(e,n),ot.start(this.segments,this.points),this.convertToRoomForPolygon(n),this.points={},this.segments={},this.polygons=[]},st.prototype.convertToPoints=function(t,e){for(var n in t){var o=J.getPoint(n,e),i={pointId:o.vectorId,x:o.x,y:o.y,parent:JSON.parse(JSON.stringify(o.parent))};this.points[o.vectorId]=i}},st.prototype.convertToSegments=function(t,e){for(var n in t){var o=J.getWall(n,e),i={segmentId:o.vectorId,start:o.start,end:o.end};this.segments[o.vectorId]=i}},st.prototype.convertToRoomForPolygon=function(){for(var t=0;t<ot.polygons.length;++t){var e=ot.polygons[t],n={};n.roomId=e.id.replace("Polygon","Room"),console.log("房间:"+n.roomId),n.wallIds=e.segmentIds,n.wallPointIDs=e.pointIds,n.area=e.area,n.center=e.center,n.boundingBox=e.boundingBox,null!=e.parent?n.parent=e.parent.replace("Polygon","Room"):n.parent=null,n.childrenRooms=[];for(var o=0;o<e.childrenPolygonIds.length;++o)n.childrenRooms.push(e.childrenPolygonIds[o].replace("Polygon","Room"));n.childrenWalls=[];for(var i=0;i<e.childrenSegmentIds.length;++i)n.childrenWalls.push(e.childrenSegmentIds[i]);this.tempRooms.push(n)}ot.polygons=[]},st.prototype.updateRoomsName=function(){for(var t=0;t<o.floors.length;++t){var e=rt.getRooms(t),n=$.getTags(t);n=JSON.parse(JSON.stringify(n));for(var i=0;i<e.length;++i)e[i]}},st.prototype.updateRoomsTagName=function(){function t(t,e){return t.area-e.area}for(var e=0;e<o.floors.length;++e){var n=rt.getRooms(e),i=$.getTags(e);i=JSON.parse(JSON.stringify(i)),n=n.sort(t);for(var r=0;r<n.length;++r){for(var s=n[r],l=[],h=0;h<s.wallPointIDs.length;++h){var p=J.getPoint(s.wallPointIDs[h],e);l.push(p)}for(var c in i)if(a.isPointInPoly(i[c].center,l)){s.tagName=i[c].title,delete i[c];break}}}};var at=new st,lt={export:{Wall:{strokeStyle:"#70707a",fillStyle:"#70707a",lineWidth:3,lineWidth_out:5},Symbol:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1},Component:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1}},cover:{Wall:{strokeStyle:"#70707a",fillStyle:"#70707a"},Symbol:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1},Component:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1}},default:{Wall:{strokeStyle:"#70707a",fillStyle:"#70707a"},Symbol:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1},Component:{strokeStyle:"rgba(37,40,40,0.5)",fillStyle:"rgba(0,0,0,0.1)",lineWidth:1}},Font:{font:"12px Microsoft YaHei",fillStyle:"rgba(0,0,0,1)",textAlign:"center",textBaseline:"middle",miterLimit:10,direction:"ltr"},Measure:{strokeStyle:"#70707a"}},ht=function(){this.context=null};ht.prototype.initContext=function(t){this.context=t},ht.prototype.clear=function(){this.context.clearRect(0,0,this.context.canvas.width,this.context.canvas.height)},ht.prototype.drawWall=function(t,e){var n=J.getPoint(t.start),o=J.getPoint(t.end),i=[];i.push(n);for(var r=0;r<t.children.length;++r){var s=J.getSymbol(t.children[r]);i.push(s.startPoint),i.push(s.endPoint)}i.push(o),i=i.sort(function(t,e){return mathUtil.getDistance(n,t)-mathUtil.getDistance(n,e)}.bind(this)),this.context.save(),this.context.beginPath(),"export"==e?(t.out||t.important?this.context.lineWidth=lt.export.Wall.lineWidth_out:this.context.lineWidth=lt.export.Wall.lineWidth,this.context.strokeStyle=lt.export.Wall.strokeStyle,this.context.fillStyle=lt.export.Wall.fillStyle):"cover"==e?(t.out||t.important?this.context.lineWidth=lt.cover.Wall.lineWidth_out:this.context.lineWidth=lt.cover.Wall.lineWidth,this.context.strokeStyle=lt.cover.Wall.strokeStyle,this.context.fillStyle=lt.cover.Wall.fillStyle):"default"==e&&(t.out||t.important?this.context.lineWidth=lt.default.Wall.lineWidth_out:this.context.lineWidth=lt.default.Wall.lineWidth,this.context.strokeStyle=lt.default.Wall.strokeStyle,this.context.fillStyle=lt.default.Wall.fillStyle),this.context.lineCap="round";for(var a=0;a<i.length-1;a+=2){var l=coordinate.getScreenXY(i[a]),h=coordinate.getScreenXY(i[a+1]);this.context.moveTo(l.x,l.y),this.context.lineTo(h.x,h.y)}this.context.stroke(),this.context.restore();var p={x:(n.x+o.x)/2,y:(n.y+o.y)/2};this.drawText(p,t.vectorId)},ht.prototype.drawText=function(t,e,n,o){this.context.save(),this.setCanvasStyle(lt.Font),coordinate.ratio==Constant.ratio?this.context.font="36px Microsoft YaHei":this.context.font="12px Microsoft YaHei";var i={x:t.x,y:t.y};n||(i=coordinate.getScreenXY({x:t.x,y:t.y})),o?(this.context.translate(i.x,i.y),this.context.rotate(o),this.context.strokeText(e,0,0),this.context.fillText(e,0,0)):(this.context.strokeText(e,i.x,i.y),this.context.fillText(e,i.x,i.y)),this.context.restore()},ht.prototype.drawSingleDoor=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});var i=mathUtil.getDistance(n[0],n[1]);this.context.save(),this.context.lineCap="square",this.context.lineWidth=1,"export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.arcTo(n[2].x,n[2].y,n[3].x,n[3].y,i),this.context.closePath(),this.context.stroke(),this.context.restore(),null!=t.enter&&this.drawImg(t)},ht.prototype.drawDoubleDoor=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});var i=mathUtil.getDistance(n[0],n[1]);this.context.save(),this.context.lineWidth=1,this.context.lineCap="square","export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.arcTo(n[4].x,n[4].y,n[5].x,n[5].y,i),this.context.closePath(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(n[2].x,n[2].y),this.context.lineTo(n[1].x,n[1].y),this.context.arcTo(n[4].x,n[4].y,n[3].x,n[3].y,i),this.context.closePath(),this.context.stroke(),this.context.restore(),null!=t.enter&&this.drawImg(t)},ht.prototype.drawSlideDoor=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});this.context.save(),this.context.lineWidth=1,this.context.lineCap="square","export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.lineTo(n[2].x,n[2].y),this.context.lineTo(n[3].x,n[3].y),this.context.closePath(),this.context.stroke(),this.context.beginPath(),this.context.moveTo(n[4].x,n[4].y),this.context.lineTo(n[5].x,n[5].y),this.context.lineTo(n[6].x,n[6].y),this.context.lineTo(n[7].x,n[7].y),this.context.closePath(),this.context.stroke(),this.context.restore(),null!=t.enter&&this.drawImg(t)},ht.prototype.drawSingleWindow=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});this.context.save(),this.context.lineWidth=1,this.context.lineCap="square","export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.stroke(),this.context.beginPath(),this.context.moveTo(n[2].x,n[2].y),this.context.lineTo(n[3].x,n[3].y),this.context.lineTo(n[4].x,n[4].y),this.context.lineTo(n[5].x,n[5].y),this.context.closePath(),this.context.stroke(),this.context.restore()},ht.prototype.drawBayWindow=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});this.context.save(),this.context.lineWidth=1,this.context.lineCap="square","export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.lineTo(n[2].x,n[2].y),this.context.lineTo(n[3].x,n[3].y),this.context.closePath(),this.context.stroke(),this.context.fill(),this.context.beginPath(),this.context.moveTo(n[4].x,n[4].y),this.context.lineTo(n[5].x,n[5].y),this.context.lineTo(n[6].x,n[6].y),this.context.lineTo(n[7].x,n[7].y),this.context.closePath(),this.context.stroke(),this.context.restore()},ht.prototype.drawFrenchWindow=function(t){for(var e=t.points2d,n=[],o=0;o<e.length;++o)n[o]=coordinate.getScreenXY({x:e[o].x,y:e[o].y});this.context.save(),this.context.lineWidth=1,this.context.lineCap="square","export"==type?(this.context.strokeStyle=lt.export.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"cover"==type?(this.context.strokeStyle=lt.cover.strokeStyle,this.context.fillStyle=lt.export.fillStyle):"default"==type&&(this.context.strokeStyle=lt.default.strokeStyle,this.context.fillStyle=lt.export.fillStyle),this.context.beginPath(),this.context.moveTo(n[0].x,n[0].y),this.context.lineTo(n[1].x,n[1].y),this.context.moveTo(n[2].x,n[2].y),this.context.lineTo(n[3].x,n[3].y),this.context.moveTo(n[4].x,n[4].y),this.context.lineTo(n[5].x,n[5].y),this.context.moveTo(n[2].x,n[2].y),this.context.lineTo(n[4].x,n[4].y),this.context.moveTo(n[3].x,n[3].y),this.context.lineTo(n[5].x,n[5].y),this.context.moveTo(n[6].x,n[6].y),this.context.lineTo(n[7].x,n[7].y),this.context.stroke(),this.context.restore()},ht.prototype.drawMeasure=function(){};var pt=new ht,ct=function(){this.cadBoundingBox=null,this.padding={export:165,cover:35,default:102},this.type=null};ct.prototype.init=function(){this.cadBoundingBox=J.getBoundingBox()},ct.prototype.start=function(){this.setType("export"),this.test(),this.setType("cover"),this.test(),this.setType("default"),this.test(),this.recovery()},ct.prototype.setType=function(t){this.type=t},ct.prototype.autoDraw=function(){var t=J.getFloorData(),e=t.walls;for(var n in e)this.drawGeometry(e[n]);var o=t.symbols;for(var i in o)this.drawGeometry(o[i])},ct.prototype.getSize=function(){if("export"==this.type)Y.width=900,Y.height=900;else if("cover"==this.type){var t=50*Math.abs(this.cadBoundingBox.maxX-this.cadBoundingBox.minX)*1.42+2*this.padding.cover,e=50*Math.abs(this.cadBoundingBox.maxY-this.cadBoundingBox.minY)*1.42+2*this.padding.cover;lt.cover.Wall.lineWidth_out=Math.ceil(.0055*Math.max(t,e)),lt.cover.Wall.lineWidth=Math.ceil(.0055*Math.max(t,e)/1.5),t=Math.ceil(t+lt.cover.Wall.lineWidth_out/2),e=Math.ceil(e+lt.cover.Wall.lineWidth_out/2),Y.width=t,Y.height=e}else if("default"==this.type){var n=50*Math.abs(this.cadBoundingBox.maxX-this.cadBoundingBox.minX)*1.42+2*this.padding.default,o=50*Math.abs(this.cadBoundingBox.maxY-this.cadBoundingBox.minY)*1.42+2*this.padding.default;lt.default.Wall.lineWidth_out=Math.ceil(.0055*Math.max(n,o)),lt.cover.Wall.lineWidth=Math.ceil(.0055*Math.max(n,o)/1.5),n=Math.ceil(n+lt.cover.Wall.lineWidth_out/2),o=Math.ceil(o+lt.cover.Wall.lineWidth_out/2),Y.width=n,Y.height=o}},ct.prototype.test=function(){this.layer.uiControl.menu_flex(),$.clearDefaultTags(),this.layer.history.save(),at.start(),X.updateRegion(!0),X.update(!1);var t,e,n=this.layer.canvas;this.getSize(),("export"==this.type||"cover"==this.type||"default"==this.type)&&(t=(Y.width-pad.left-pad.right)/Math.abs(this.cadBoundingBox.maxX-this.cadBoundingBox.minX),e=(Y.height-pad.top-pad.bottom)/Math.abs(this.cadBoundingBox.maxY-this.cadBoundingBox.minY),Y.res=Math.min(t,e),n.width=Y.width,n.height=Y.height),this.autoDraw(),this.downloadCadImg(n,"floorPlan.png")},ct.prototype.recovery=function(){var t=this.layer.app.core.get("CameraControls").activeControl.camera;Y.updateForCanvas(canvas),Y.setRes(t.left,t.right),this.layer.renderer.autoRedraw()},ct.prototype.downloadCadImg=function(t,e){var n=t.toDataURL("png",3);n=n.replace(this._fixType("png"),"image/octet-stream"),this.saveFile(n,e)},ct.prototype.saveFile=function(t,e){var n=document.createElementNS("http://www.w3.org/1999/xhtml","a");n.href=t,n.download=e;var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),n.dispatchEvent(o)},ct.prototype._fixType=function(t){return"image/"+(t=t.toLowerCase().replace(/jpg/i,"jpeg")).match(/png|jpeg|bmp|gif/)[0]},ct.prototype.drawGeometry=function(t){if(null!=pt.context)switch(t.geoType){case VectorType.Wall:pt.drawWall(t,this.type);break;case VectorType.SingleDoor:pt.drawSingleDoor(t);break;case VectorType.DoubleDoor:pt.drawDoubleDoor(t);break;case VectorType.SlideDoor:pt.drawSlideDoor(t);break;case VectorType.SingleWindow:pt.drawSingleWindow(t);break;case VectorType.FrenchWindow:pt.drawFrenchWindow(t);break;case VectorType.BayWindow:pt.drawBayWindow(t);break;case VectorType.Beam:pt.drawBeam(t,this.type);break;case VectorType.Flue:pt.drawFlue(t,this.type);break;case VectorType.Corridor:pt.drawCorridor(t,this.type);break;case VectorType.Tag:pt.drawTag(t,this.type)}};var ut=new ct,dt=function(t,e){this.app=t,this.ajkJson={},this.cameraJson={},this.floorPlanJson={},this.file1=null,this.file2=null,this.file3=null,this.cameraJson.sweepLocations=e.sweepLocations};return dt.prototype.init=function(){},dt.prototype.startSync=function(){var t=this;this.getFloorPlanJson().then((function(e){J.updateBoundingBox(),t.getAJKRooms(),t.getEntrance(),t.getSceneName(),t.getPictureRotate(),t.getImgInfo()})),ut.layer=this.app.CadManager.cad(),ut.layer.renderer.clear(),ut.start()},dt.prototype.getAJKRooms=function(){var t=[],e=J.getTags(),n=JSON.parse(JSON.stringify(J.getRooms()));for(var o in e){var r={},s=e[o],a={};r.area=s.des,r.name=s.title,r.tagId=s.vectorId,r.floor=i;var l=null;l=this.cameraJson.sweepLocations[0].puck;for(var h=1;h<this.cameraJson.sweepLocations.length;++h)mathUtil.getDistance(s.center,this.cameraJson.sweepLocations[h].puck)<mathUtil.getDistance(s.center,l)&&(l=this.cameraJson.sweepLocations[h]),this.cameraJson.sweepLocations.group=-1;a.x=l.x,a.y=l.y,a.z=0;for(var p=1;p<n.length;++p){if(n[p].containPoint(a)){r.group=n[p].replace("Room",""),n.splice(p,1),l.group=r.group;break}}r.labelPos=a,r.group&&t.push(r)}this.ajkJson.rooms=t},dt.prototype.getCameraJson=function(){},dt.prototype.getFloorPlanJson=function(){var t=this;return this.app.store.get("floor",(function(e){return t.floorPlanJson=e,e}))},dt.prototype.getEntrance=function(t){var e=J.getSymbols(t),n=null;for(var o in e)if((n=e[o]).enter)break;if(null!=n&&n.enter){var i=this.layer.app.core.get("Player").model.floors[t].boundingBox.min.y+.1,r=new THREE.Vector3(n.start.x,i+.4*.2,-n.start.y),s=new THREE.Vector3(n.end.x,i+.4*.2,-n.end.y),a=r.clone().add(s).multiplyScalar(.5),l=new THREE.Vector3(n.points2d[3].x,i+.4*.2,n.points2d[3].y);l.z*=-1;var h=this.getFootPoint(l,r,s),p=l.clone().sub(h).normalize();a.clone().negate().angleTo(p)>Math.PI/2&&(a.add(p.clone().multiplyScalar(r.distanceTo(s))),p.multiplyScalar(-1)),a.add(p.clone().multiplyScalar(-.5));var c={Position:new THREE.Vector3(a.x,-a.z,a.y),Direction:new THREE.Vector3(p.x,-p.z,p.y)};this.ajkJson.Entrance=c}},dt.prototype.getSceneName=function(){var t=this.app.store.getValue("metadata");this.ajkJson.scene_name=t.title},dt.prototype.getPictureRotate=function(){var t=J.getAngle(),e=new THREE.Euler(0,t,0),n=new THREE.Vector3(0,0,-1);n.applyEuler(e),n=new THREE.Vector3(n.x,-n.z,n.y),this.ajkJson.picture_rotate=n},dt.prototype.getFootPoint=function(t,e,n,o){var i=t.clone().sub(e),r=e.clone().sub(n),s=r.length(),a=i.dot(r)/s,l=e.clone().add(r.multiplyScalar(a/s));return o&&l.clone().sub(e).dot(l.clone().sub(n))>0&&(l=l.distanceTo(e)<l.distanceTo(n)?e.clone():n.clone()),l},dt.prototype.getImgInfo=function(){var t=J.getCadInfo(this.layer.canvas),e={};e.bound=t.bound,e.margin=51,e.marginReal=e.margin/coordinate.res,e.width=Math.abs(t.bound.left-t.bound.right),e.center={x:(t.bound.left+t.bound.right)/2,y:(t.bound.top+t.bound.bottom)/2},this.ajkJson.img_info=e},function(t,e){void 0===e&&(e={});var n=KanKan.Deferred();return t.Scene.on("loaded",(function(){var o=new dt(t,e);o.$name="DataAJK",o.$load=function(){t.DataSYNC.install(o)},n.resolve(o)})),n}}();