1 line
1.9 KiB
JavaScript
1 line
1.9 KiB
JavaScript
import{addRegisterMxDbEntity}from"../../tools/registerMxDbEntity";import McGeTool from"../McGeTool";import McGiWorldDrawType from"../McGiWorldDrawType";import MxDbEntity from"../MxDbEntity";import MxDbHatch from"../MxDbHatch";import MxFun from"../MxFun";import MxThreeJS from"../MxThreeJS";import drawMxDbArea from"./draw";class MxDbArea extends MxDbEntity{constructor(){super(...arguments),this.points=[],this.isFill=!1,this.fillColor=6697540,this.fillOpacity=.7}getTypeName(){return"MxDbArea"}create(){return new MxDbArea}getDimText(){return McGeTool.calcArea(this.points).toFixed(2)}worldDraw(t){if(this.points.length<3)return void(2==this.points.length&&t.drawLine(this.points[0],this.points[1]));let i=this.points[0],r=i.clone(),e=i.clone(),o=this.points.length;for(let s=1;s<o;s++){let o=this.points[s];r.x>o.x&&(r.x=o.x),r.y>o.y&&(r.y=o.y),e.x<o.x&&(e.x=o.x),e.y<o.y&&(e.y=o.y),t.drawLine(i,o),i=o}t.drawLine(i,this.points[0]);let s=new THREE.Vector3(r.x+.5*(e.x-r.x),r.y+.5*(e.y-r.y));const n=t.getColor();let l=MxFun.screenCoordLong2Doc(20),p=MxThreeJS.creatTextSprite(this.getDimText(),s,l,0,n);if(null!=p&&t.drawEntity(p),t.getType()==McGiWorldDrawType.kWorldDraw&&this.isFill){t.setColor(this.fillColor),t.setOpacity(this.fillOpacity),t.setRenderOrder(t.getRenderOrder()-1);const i=new MxDbHatch;i.points=this.points,i.worldDraw(t)}}getGripPoints(){return this.points}moveGripPointsAt(t,i){return!(t>=this.points.length)&&(this.points[t].add(i),!0)}dwgIn(t){this.onDwgIn(t);let i=t.points;return this.points=[],i.forEach(t=>{this.points.push(new THREE.Vector3(t.x,t.y,t.z))}),this.dwgInHelp(t,["isFill","fillColor","fillOpacity"]),!0}dwgOut(t){return this.onDwgOut(t),t.points=this.points,this.dwgOutHelp(t,["isFill","fillColor","fillOpacity"]),t}addPoint(t){this.points.push(t.clone())}getPoints(){return this.points}clearPoint(){this.points=[]}}MxDbArea.cmd="Mx_Area",MxDbArea.draw=drawMxDbArea,addRegisterMxDbEntity(MxDbArea);export default MxDbArea; |