NDSStoreView.js 17 KB

1
  1. !function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i():"function"==typeof define&&define.amd?define([],i):"object"==typeof exports?exports.NDSStoreView=i():e.NDSStoreView=i()}(window,function(){return t=[function(e,i,t){t.r(i),t.d(i,"NDSStoreViewExtension",function(){return r});var b={REVISION:"01",toolbarButtonClickedBkgColor:"",toolbarOpacity:.2,dialogOpacity:.2,bodyOpacity:.4,lineOpacity:.2,OES_element_index_uint:!1,avoidCaching:!0,lineSegAnnotationGridCount:200,enableBroadcast:!1,broadcastMajor:!1};b.selectedMaterial=new THREE.MeshStandardMaterial({color:16763200,metalness:.2,roughness:1,side:THREE.DoubleSide,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:2,skinning:!1}),b.BIMselectedMaterial=new THREE.MeshBasicMaterial({opacity:.7,color:4168151,side:THREE.DoubleSide,depthTest:!1,depthWrite:!1,transparent:!0}),b.selectedColor=new THREE.Color(16776960),b.selectedLineMaterial=new THREE.LineBasicMaterial({color:16776960}),b.selectedPointMaterial=new THREE.MeshBasicMaterial({color:16776960,side:THREE.DoubleSide}),b.selectedFaceMaterial=new THREE.MeshBasicMaterial({opacity:.8,color:979390,side:THREE.DoubleSide,transparent:!0}),b.selectedFace2DMaterial=new THREE.MeshBasicMaterial({opacity:.8,color:16763200,side:THREE.DoubleSide,transparent:!0}),b.preSelectedFaceMaterial=new THREE.MeshBasicMaterial({opacity:.8,color:65535,side:THREE.DoubleSide,transparent:!0}),b.selectedEdgeMaterial=new THREE.LineBasicMaterial({color:16744512,opacity:.9,transparent:!0,depthTest:!1,depthWrite:!1,linewidth:1}),b.preSelectedEdgeMaterial=new THREE.LineBasicMaterial({color:65535,opacity:.9,transparent:!0,depthTest:!1,depthWrite:!1,linewidth:1}),b.SelectedEdgeMaterial1=new THREE.LineBasicMaterial({color:16711680,depthTest:!0,depthWrite:!0,linewidth:1}),b.selectedVertexMaterial=new THREE.MeshBasicMaterial({color:16711680,opacity:.8,transparent:!0,depthTest:!1,depthWrite:!1}),b.preSelectedVertexMaterial=new THREE.MeshBasicMaterial({color:65535,opacity:.8,transparent:!0,depthTest:!1,depthWrite:!1}),b.dashedMaterial=new THREE.ShaderMaterial({uniforms:{lineStyle:{value:-1},dashSize:{value:12},dashNum:{value:1},grapSize:{value:3},pointSize:{value:.5},pointNum:{value:1},opacity:{value:.8},diffuse:{value:new THREE.Color(16711680)}},linewidth:1,transparent:!0,fragmentShader:["uniform vec3 diffuse;","uniform float opacity;","uniform float dashSize;","uniform float dashNum;","uniform float pointNum;","uniform float grapSize;","uniform float pointSize;","varying float vLineDistance;","#include <common>","#include <color_pars_fragment>","#include <fog_pars_fragment>","#include <logdepthbuf_pars_fragment>","#include <clipping_planes_pars_fragment>","void main() {","#include <clipping_planes_fragment>","float totalSize = dashSize * dashNum + grapSize * (dashNum + pointNum) + pointSize * pointNum;","float modSize = mod( vLineDistance, totalSize );","bool grap = false;","for(float i = 1.0; i< 4.0; ++i){","if(i > dashNum){","break;","}","if(modSize < i * (grapSize + dashSize) && modSize > i * (grapSize + dashSize) - grapSize){","grap = true;","break;","}","}","if ( grap ) {","discard;","}","float dashlength = dashNum * (grapSize + dashSize);","for(float i = 1.0;i <4.0; ++i){","if(i > pointNum){","break;","}","if(modSize < i * (grapSize + pointSize) + dashlength && ","modSize > i * (grapSize + pointSize) - grapSize + dashlength){","grap = true;","break;","}","}","if ( grap ) {","discard;","}","vec3 outgoingLight = vec3( 0.0 );","vec4 diffuseColor = vec4( diffuse, opacity );","#include <logdepthbuf_fragment>","#include <color_fragment>","outgoingLight = diffuseColor.rgb;","gl_FragColor = vec4( outgoingLight, diffuseColor.a );","#include <premultiplied_alpha_fragment>","#include <tonemapping_fragment>","#include <encodings_fragment>","#include <fog_fragment>","}"].join("\n"),vertexShader:["attribute float lineDistance;","varying float vLineDistance;","#include <common>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <logdepthbuf_pars_vertex>","#include <clipping_planes_pars_vertex>","void main() {","#include <color_vertex>","vLineDistance = lineDistance;","vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );","gl_Position = projectionMatrix * mvPosition;","#include <logdepthbuf_vertex>","#include <clipping_planes_vertex>","#include <fog_vertex>","}"].join("\n")}),b.enableSelect=!1,b.autoSwitchFirstPersonView=!1,b.tangentEdgeVisible=!0,b.enableArrowKeyOp=!0,b.dynamicRotateCenter=!0,b.NdsLoadWorkerUrl="./coreviewer/NDSRequestWorker.min.js",b.enableOutlineEffect=!1,b.enableBodyVolumeMeasure=!1,b.enablePreSelectBrep=!1,b.selectObjectWithPropertyOnly=!1,b.enableDirectMove=!1,b.enableDirectRotate=!1,b.inAssemblyContext=!1,b.inBIMContext=!1,b.ScenarioEditor=!1,b.ScenarioEditorid=-1,b.AnimationEdit=!1,b.StopPMIOcclusion=!0,b.singleHTML=!1,b.HideLeafBody=!1,b.MatrixChange=!1;class o extends NDSWebViewer.Extension{constructor(){super(),this.name="NDSStoreViewExtension",console.log("NDSStoreViewExtension version 0.1"),this.viewer=void 0;let m=e=>{var i=this.viewer.oneKeyColor;null!=i.isActive&&!0===i.isActive?(e.useRandomColor=!0,e.randColor=i.color,this.viewer.oneKeyColor.isActive=!0):null!=i.isActive&&!1===i.isActive&&(e.useRandomColor=!1,e.randColor=null,this.viewer.oneKeyColor.isActive=null)},h=e=>{null!=e.useRandomColor&&!0===e.useRandomColor?this.viewer.autoChangeObjectColor(!0,e.randColor):null!=e.useRandomColor&&!1===e.useRandomColor&&(this.viewer.autoChangeObjectColor(!1,null),e.useRandomColor=null)},i=()=>{var e=void 0;switch(this.viewer.getRenderMode()){case 0:e="lighting";break;case 1:e="primarycolor";break;case 2:e="wireframe";break;case 3:e="whitemold";break;case 4:e="shadedWithEdges";break;case 5:e="shaded";break;case 6:e="hiddenLineRemove";break;case 7:e="hiddenLineVisible";break;case 8:e="transparent"}return e},c=e=>{if(this.viewer.selectionManager.clearSelection(),e.meshVisible?this.viewer.ndsModel.hideBody(this.viewer.ndsModel.rootBodyNode):this.viewer.ndsModel.showBody(this.viewer.ndsModel.rootBodyNode),this.viewer.exitIsolate(),this.viewer.restoreAllDraggedObjects(),this.viewer.autoChangeObjectColor(!1,null),null==e.useRandomColor){var i=this.viewer.exchangeNodeColor.length;for(let e=0;e<i;++e)this.viewer.changeObjectColor(this.viewer.exchangeNodeColor[e].objectUUID,null)}for(var t=0,o=this.viewer.ndsModel.wholeLeafBodyNodes.length;t<o;++t)this.viewer.ndsModel.wholeLeafBodyNodes[t].renderMode="";var r=this.viewer.ndsModel.getMeshSets();for(let e=0;e<r.length;++e)r[e].renderMode=NDSWebViewer.NDS.RENDER_BIT.NORMAL},t=i=>{if(this.viewer.ndsModel){var e=[],t=[],o=[],r=[],n=[],a=[],s=[],l=this.viewer.selectionManager.getSelectedObjects();if(0<l.length){i.meshSel=[];for(var d=0;d<l.length;++d)!this.viewer.ndsModel.objectidTouuid||this.viewer.is2DModel?i.meshSel.push(l[d].id):i.meshSel.push(l[d].uuid)}for(var h=0,c=this.viewer.ndsModel.wholeLeafBodyNodes.length;h<c;++h){var g=this.viewer.ndsModel.wholeLeafBodyNodes[h];""!==g.renderMode&&a.push({index:h,renderMode:g.renderMode}),g.leafBodyAttri&&((g.isHidden()?t:e).push(g.id),this.viewer.ndsModel.inIsolate())&&(!g.isIsolated()&&g.isTransparent()?o:r).push(g.id)}var v=this.viewer.ndsModel.getMeshSets();for(let e=0;e<v.length;++e){var u=v[e];u.renderMode!==NDSWebViewer.NDS.RENDER_BIT.NORMAL&&s.push({index:e,renderMode:u.renderMode})}if(0==t.length?i.meshInvisible=[]:0==e.length&&0<t.length?i.meshVisible=[]:t.length<=e.length?i.meshInvisible=t:i.meshVisible=e,o.length<=r.length?i.meshTrans=o:i.meshNoTrans=r,0<a.length&&0<s.length&&(i.bodyRenderModes=a,i.meshSetRenderModes=s),0<this.viewer.ndsModel.draggedBodies.length)for(h=0;h<this.viewer.ndsModel.draggedBodies.length;++h){var p=this.viewer.ndsModel.draggedBodies[h],w=[p.leafBodyAttri.bodyDragTranslate[0],p.leafBodyAttri.bodyDragTranslate[1],p.leafBodyAttri.bodyDragTranslate[2]];n.push({id:p.id,dragPos:w})}if(0<n.length&&(i.meshDrag=n),m(i),0<this.viewer.exchangeNodeColor.length){var f=this.viewer.exchangeNodeColor;i.exchangeNodeColor=[];for(let e=0;e<f.length;++e)i.exchangeNodeColor.push({color:f[e].color,objectUUID:f[e].objectUUID})}}else console.warn("ndsModel没有正确创建。请检查模型载入状态。")},o=i=>{if(this.viewer.ndsModel){if(c(i),null!=i.meshSel&&0<i.meshSel.length)for(var e,t=0;t<i.meshSel.length;++t)(e=!this.viewer.ndsModel.objectidTouuid||this.viewer.is2DModel?this.viewer.ndsModel.getBodyNode(i.meshSel[t]):(e=i.meshSel[t],this.viewer.ndsModel.getBodyNodeFromUuid(e)))&&this.viewer.selectionManager.selectObject(e);if(this.viewer.ndsModel.sketchModel&&this.viewer.ndsModel.setActiveModel(0),i.meshVisible)for(t=0;t<i.meshVisible.length;++t){var o=i.meshVisible[t];this.viewer.ndsModel.hasHiddenBodies=!0,(a=this.viewer.ndsModel.getBodyNode(o)).show(),this.viewer.ndsModel.RemoveElement(this.viewer.ndsModel.activeModel.hideBodies,a)}else if(i.meshInvisible)for(t=0;t<i.meshInvisible.length;++t){o=i.meshInvisible[t];this.viewer.ndsModel.hasHiddenBodies=!0,(a=this.viewer.ndsModel.getBodyNode(o)).hide(),this.viewer.ndsModel.activeModel.hideBodies.push(a),this.viewer.ndsModel.meshManager.setGeomSameMaterialFlag(a)}if(i.meshTrans&&0<i.meshTrans.length){if(this.viewer.ndsModel){for(var r=[],t=0;t<i.meshTrans.length;++t){o=i.meshTrans[t];r.push(this.viewer.ndsModel.getBodyNode(o))}this.viewer.ndsModel.transparentizeBodies(r)}}else if(i.meshNoTrans)if(0<i.meshNoTrans.length){for(r=[],t=0;t<i.meshNoTrans.length;++t){o=i.meshNoTrans[t];r.push(this.viewer.ndsModel.getBodyNode(o))}this.viewer.ndsModel.isolateBodies(r,b.bodyOpacity,b.lineOpacity)}else{var n;0==i.meshNoTrans.length&&((n=[]).push(this.viewer.ndsModel.rootBodyNode),this.viewer.ndsModel.transparentizeBodies(n))}if(i.meshDrag&&0<i.meshDrag.length)for(t=0;t<i.meshDrag.length;++t){var a=this.viewer.ndsModel.getBodyNode(i.meshDrag[t].id),s=new THREE.Vector3;s.fromArray(i.meshDrag[t].dragPos),a.leafBodyAttri&&(a.isDragged()||(a.setDragged(!0),this.viewer.ndsModel.draggedBodies.push(a),null==this.viewer.draggedObjects&&(this.viewer.draggedObjects=new Array),this.viewer.draggedObjects.push(a)),a.leafBodyAttri.bodyDragTranslate[0]=s.x,a.leafBodyAttri.bodyDragTranslate[1]=s.y,a.leafBodyAttri.bodyDragTranslate[2]=s.z,this.viewer.ndsModel.meshManager.setGeomSameMaterialFlag(a))}if(void 0!==i.bodyRenderModes&&void 0!==i.meshSetRenderModes){var l=this.viewer.ndsModel.wholeLeafBodyNodes;for(let e=0;e<i.bodyRenderModes.length;++e)l[i.bodyRenderModes[e].index].renderMode=i.bodyRenderModes[e].renderMode;var d=this.viewer.ndsModel.getMeshSets();for(let e=0;e<i.meshSetRenderModes.length;++e)d[i.meshSetRenderModes[e].index].renderMode=i.meshSetRenderModes[e].renderMode}if(h(i),i.exchangeNodeColor&&0<i.exchangeNodeColor.length){this.viewer.exchangeNodeColor=[];for(t=0;t<i.exchangeNodeColor.length;t++)this.viewer.changeObjectColor(i.exchangeNodeColor[t].objectUUID,i.exchangeNodeColor[t].color)}}else console.warn("ndsModel没有正确创建。请检查模型载入状态。")},r=e=>{this.viewer.exchangeBackImage&&(e.exchangeBackImage={type:this.viewer.exchangeBackImage.type,value:this.viewer.exchangeBackImage.value})},n=e=>{e.exchangeBackImage&&("Image"===e.exchangeBackImage.type?(this.viewer.setEnvMapTextures(null),this.viewer.setBackGroundImage(e.exchangeBackImage.value)):"EnvMap"===e.exchangeBackImage.type?this.viewer.setEnvMapTextures(e.exchangeBackImage.value):"Color"===e.exchangeBackImage.type&&(this.viewer.setEnvMapTextures(null),this.viewer.setBackGroundImage(null),this.viewer.setBackGroundColor(e.exchangeBackImage.value)))},a=e=>{e.explode={factor:this.viewer.getExplodeFactor(),mode:this.viewer.getExplodeMode(),level:this.viewer.getExplodeLevel(),obj:this.viewer.explodeObjects,selected:NDSWebViewer.NDS.EXPLODEMODE.SELECTED}},s=e=>{null!=e.explode&&(e.explode.mode&e.explode.selected?(this.viewer.explodeObjects=e.explode.obj,this.viewer.setExplodeMode(e.explode.mode,e.explode.level,!0)):this.viewer.setExplodeMode(e.explode.mode,e.explode.level),this.viewer.getExplodeFactor()!=e.explode.factor)&&this.viewer.explodeModel(e.explode.factor)},l=e=>{this.viewer.isSectionViewEnabled()&&(e.clipPlaneInfo=this.viewer.clipPlaneManager&&this.viewer.clipPlaneManager.getClipPlaneInfor())},d=e=>{null!=e.clipPlaneInfo?(this.viewer.onSectionView(!1,!1),this.viewer.onSectionView(!0,!1),this.viewer.clipPlaneManager&&this.viewer.clipPlaneManager.setClipPlaneInfor(e.clipPlaneInfo,!0),this.viewer.clipPlaneManager&&this.viewer.clipPlaneManager.clipTransRotControl&&this.viewer.clipPlaneManager.clipTransRotControl.dispatchEvent({type:"objectChange"})):this.viewer.isSectionViewEnabled()&&this.viewer.onSectionView(!1,!1)},g=function(e){var i;if(e.pmiObject)return i=[],e.pmiObject.traverse(function(e){!e.select||"Mesh"!=e.type&&"Line"!=e.type&&"Line2"!=e.type&&"LineSegments"!=e.type||i.push(e)}),i},v=e=>{this.viewer.AssemblyPMIState&&(e.AssemblyPMIState=this.viewer.AssemblyPMIState,this.viewer.AssemblyPMIState=null),this.viewer.PartPMIState&&(e.PartPMIState=this.viewer.PartPMIState,this.viewer.PartPMIState=null),this.viewer.PartPMIState||this.viewer.AssemblyPMIState||(e.pmiVisible=this.viewer.pmiVisible),e.shouldStopPMIOcclusion=this.viewer.getStopPMIOcclusion();var t=[],o=[];if(void 0!==this.viewer.PMINDSBodys&&0<this.viewer.PMINDSBodys.length){for(let e=0,i=this.viewer.PMINDSBodys.length;e<i;++e)null!==this.viewer.PMINDSBodys[e].uuid&&this.viewer.isPMIObjectOrSomeChildHidden(this.viewer.PMINDSBodys[e])&&o.push(this.viewer.PMINDSBodys[e].uuid);e.PMIObjectVisibleList=o}if(this.viewer.pmiObject&&this.viewer.pmiObject.children){var i=this.viewer.pmiObject.children[0];if(i.version||this.getPMIObject(),2===i.version){var r=this.viewer.getPMINDSBodySelectList();if(r&&0<r.length)for(let e=0,i=r.length;e<i;++e){var n=r[e];n.isHidden()||t.push(n.uuid)}}else if(1===i.version){var a=g(this.viewer);if(a&&0<a.length)for(let e=0,i=a.length;e<i;++e)t.push(a[e].uuid)}e.PMIObjectSelList=t}},u=t=>{if(null!=t.pmiVisible&&this.viewer.setPmiVisible(t.pmiVisible),void 0!==t.shouldStopPMIOcclusion&&this.viewer.stopPMIOcclusion(t.shouldStopPMIOcclusion),void 0!==t.PMIObjectVisibleList){this.viewer.getPMIObject()&&this.viewer.setPMIObjectVisible(this.viewer.getPMIObject(),!1);for(let e=0,i=t.PMIObjectVisibleList.length;e<i;e++)this.viewer.setPMIObjectVisible(this.viewer.PMIUUIDtoPMIObject[t.PMIObjectVisibleList[e]],!0)}if(void 0!==t.PMIObjectSelList){this.viewer.getPMIObject()&&this.viewer.deselectPMIObject(this.viewer.getPMIObject());for(let e=0,i=t.PMIObjectSelList.length;e<i;e++)this.viewer.selectPMIObject(this.viewer.PMIUUIDtoPMIObject[t.PMIObjectSelList[e]])}},p=e=>{var i=this.viewer.getAuxiliaryLineVisible();null!=i&&(e.auxiliaryLineVisible=i)},w=e=>{null!=e.auxiliaryLineVisible&&this.viewer.setAuxiliaryLineVisible(e.auxiliaryLineVisible)},f=e=>{var i=this.viewer.controls.getBoundingBox();let t=this.viewer.cameraControl.getRotateCenter();var o=this.viewer.cameraControl.isViewLockedBySingleBody;t||(t=new THREE.Vector3,this.viewer.ndsModel.getTotalVisibleBoundingBox(!0).getCenter(t)),e.rotationCenterInfo={bound:{min:{x:i.min.x,y:i.min.y,z:i.min.z},max:{x:i.max.x,y:i.max.y,z:i.max.z}},center:{x:t.x,y:t.y,z:t.z},islocked:o}},M=e=>{var i,t;null!=e.rotationCenterInfo&&(t=(e=e.rotationCenterInfo).bound,i=e.center,this.viewer.controls.setBoundingBox(new THREE.Vector3(t.min.x,t.min.y,t.min.z),new THREE.Vector3(t.max.x,t.max.y,t.max.z)),this.viewer.cameraControl.setRotateCenter(new THREE.Vector3(i.x,i.y,i.z)),this.viewer.cameraControl.isViewLockedBySingleBody=e.islocked,t=this.viewer.controls.getOperator())&&t.updateRotateCenterHelper()};this.getModelViewInfo=function(){var e={};return e.operator=this.viewer.getCurrentOperatorID(),e.cameraInfo=this.viewer.getCameraInfo(),e.originalCameraInfo=(this.viewer.viewManager||this.viewer.camera).getOrginalCameraInfo(),e.renderMode=i(),t(e),r(e),a(e),l(e),v(e),p(e),f(e),e},this.setModelViewInfo=function(e){e.renderMode&&this.viewer.setRenderMode(e.renderMode,!0),o(e),M(e),n(e),s(e),d(e),e.cameraInfo&&(this.viewer.setCameraInfo(e.cameraInfo,!0),e.originalCameraInfo&&this.viewer.camera.setOrginalCameraInfo({center:new THREE.Vector3(e.originalCameraInfo.center.x,e.originalCameraInfo.center.y,e.originalCameraInfo.center.z),up:new THREE.Vector3(e.originalCameraInfo.up.x,e.originalCameraInfo.up.y,e.originalCameraInfo.up.z),position:new THREE.Vector3(e.originalCameraInfo.position.x,e.originalCameraInfo.position.y,e.originalCameraInfo.position.z)}),e.cameraInfo.isPerspective?this.viewer.toPerspectiveCamera():this.viewer.toOrthographicCamera()),u(e),w(e)}}load(e){this.viewer||(super.load(e),this.viewer=e)}unload(e){super.unload(e)}}let r=new o;NDSWebViewer.ExtensionManager.addExtension(r)}],o={},r.m=t,r.c=o,r.d=function(e,i,t){r.o(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(i,e){if(1&e&&(i=r(i)),8&e)return i;if(4&e&&"object"==typeof i&&i&&i.__esModule)return i;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:i}),2&e&&"string"!=typeof i)for(var o in i)r.d(t,o,function(e){return i[e]}.bind(null,o));return t},r.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(i,"a",i),i},r.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},r.p="",r(r.s=0);function r(e){var i;return(o[e]||(i=o[e]={i:e,l:!1,exports:{}},t[e].call(i.exports,i,i.exports,r),i.l=!0,i)).exports}var t,o});