//CLASS:矢量图形类 function Vector(geometry, style, attributes) { this.id = CanvasSketch.getId("vector"); this.geometry = geometry; this.symbol2Ds={}; this.symbol2dsCount=0; this.style = style; /* 墙有这种属性,主要是墙上面的symbol children 主要是针对symbol,其所在墙的id wallId=null; 与墙重合的宽度 width; //所在墙的端点的位置,如果是墙角,则wallendindex没有值 wallstartindex; wallendindex; //门或窗的端点坐标 point1; point2; //朝向 //如果为1,表示当前点对应的直线中的b要大于symbol对应的b //如果为-1,表示小于 //如果当前symbol对应的线是平行于x轴,则1表示对应的y大于symbol对应的y,-1表示小于 //如果当前symbol对应的线是平行于y轴,则1表示对应的x大于symbol对应的x,-1表示小于 toward=1; vectorMeasureid=null; select=false; calculatePoints=false; exist=false; selectSymbolIds=[]; */ if(attributes) { this.attributes = attributes; } else { this.attributes={}; } }; Vector.prototype.setwallInfo = function (wallid,startindex,endindex) { this.attributes.wallId=wallid; this.attributes.wallstartindex=startindex; this.attributes.wallendindex=endindex; }; Vector.prototype.update = function (layer,wallid,startindex,endindex,point){ //向symbol设置墙的信息 this.setwallInfo(wallid,startindex,endindex); //更新其他点 var thick=layer.getThickness(wallid,startindex); this.geometry.wallType=layer.vectors[this.attributes.wallId].geometry.wallType; if(point!=null) { this.attributes.toward = layer.calculateLine.getToward(this.geometry.point1,this.geometry.point2,point); } this.geometry.points=layer.calculateElement.getSymbolPoints(this.geometry.point1,this.geometry.point2,this.geometry.geoType,this.attributes.toward,thick); if(!this.attributes.draw) { layer.drawSingleVector(this); layer.vectors[this.id] = this; this.attributes.draw=true; } }; Vector.prototype.getSymbolLen = function () { /* if(this.geometry.geoType=="Symbol2D_OpeningWindow") { return layer.parameter.windowLength[0]; } else if(this.geometry.geoType=="Symbol2D_OpeningDoor") { return layer.parameter.doorLength[0]; } else if(this.geometry.geoType=="Symbol2D_SimpleDoor") { return layer.parameter.doorLength[1]; } else if(this.geometry.geoType=="Symbol2D_SingleCasement") { return layer.parameter.windowLength[1]; } else if(this.geometry.geoType=="Symbol2D_SlidingDoor") { return layer.parameter.doorLength[2]; } else if(this.geometry.geoType=="Symbol2D_SlidingWindow") { return layer.parameter.windowLength[2]; } */ if(this.geometry.points!=null&&this.geometry.points.length>0) { //return BABYLON.Vector2.Distance(this.points[0],this.points[1]); return BABYLON.Vector2.Distance(this.geometry.point1,this.geometry.point2); } else if(this.geometry.geoType=="OpenDoor") { return 80; } else if(this.geometry.geoType=="OpenWindow") { return 60; } else if(this.geometry.geoType=="SimpleDoor") { return 80; } else if(this.geometry.geoType=="SingleCasement") { return 60; } else if(this.geometry.geoType=="BiFoldDoor") { return 120; } else if(this.geometry.geoType=="DoubleCasement") { return 100; } else if(this.geometry.geoType=="SlidingDoor") { return 120; } else if(this.geometry.geoType=="SlidingWindow") { return 100; } };