====== XViewData ====== **//Inherited from//** NULL **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XViewData封装了文档的视图数据,用于协调应用程序的数据模型(Model)、用户界面视图(View)和用户交互(Controller)。该数据类扮演着连接文档数据和视图之间的重要角色,它通过提供数据的访问接口,使得视图能够获取并显示数据。同时,当用户在视图上进行操作时,文档视图数据类以观察者模式,使得视图能够注册对数据更新的监听。当数据发生改变时,数据类会通知相关的视图,使其可以及时更新显示,从而实现良好的用户体验和数据的可靠管理。 一个文档可以以多种形式的视图展现给用户并和用户交互,视图所需要的数据由XViewData准备组织完成,视图的各种设定也由XViewData管理并提供访问接口,因此XViewData是用户与文档进行交互的必要接口。 XViewData为主流的视图形式提供了大量的方法接口,如三维视图,提供了包括视角、拾取方法、拾取对象类型、显示模式、渲染模式等多种设定接口,提供了三维模型的面渲染数据、边渲染数据、体渲染数据、点渲染数据以及云图值渲染数据等的访问接口;二维曲线视图,提供了曲线数据访问接口。 XViewData与XDocument是一一对应的关系,原则上XViewData由所对应的文档类创建和销毁。 **//Members//** * XDocument * [[xviewdata#m_pdoc|m_pDoc]] * int [[xviewdata#m_isearchtype|m_iSearchType]] * int [[xviewdata#m_icurmoduleindex|m_iCurModuleIndex]] * int [[xviewdata#m_iviewmid|m_iViewMid]] * XPicker * [[xviewdata#m_ppicker|m_pPicker]] * ulong [[xviewdata#m_ulupdateflag|m_ulUpdateFlag]] * ulong [[xviewdata#m_ulglmode|m_ulGLMode]] * WorkScene [[xviewdata#m_workscene|m_WorkScene]] * int [[xviewdata#m_idisplayfilter|m_iDisplayFilter]] * int [[xviewdata#m_iseconddisplayfilter|m_iSecondDisplayFilter]] * int [[xviewdata#m_ianimationspeed|m_iAnimationSpeed]] * int [[xviewdata#m_ianimationmode|m_iAnimationMode]] * int [[xviewdata#m_icurframeindex|m_iCurFrameIndex]] * int [[xviewdata#m_iviewanglemode|m_iViewAngleMode]] * int [[xviewdata#m_ipickmethod|m_iPickMethod]] * bool [[xviewdata#m_benablerotate|m_bEnableRotate]] * bool [[xviewdata#m_benablesecond|m_bEnableSecond]] * bool [[xviewdata#m_blighton|m_bLightOn]] * real [[xviewdata#m_dviewangle[3]|m_dViewAngle[3]]] * real [[xviewdata#m_dviewbox[6]|m_dViewBox[6]]] * TMatrix44 [[xviewdata#m_ftrmatrix|m_fTrMatrix]] * XMap * [[xviewdata#m_pmarkermap|m_pMarkerMap]] * int [[xviewdata#m_icontourdiv|m_iContourDiv]] * int [[xviewdata#m_icontourscheme|m_iContourScheme]] * float [[xviewdata#m_fcontourmax|m_fContourMax]] * float [[xviewdata#m_fcontourmin|m_fContourMin]] * float [[xviewdata#m_fcontourscale|m_fContourScale]] * bool [[xviewdata#m_benforcecontourmaxmin|m_bEnforceContourMaxMin]] * vector * [[xviewdata#m_plocalcontouritems|m_pLocalContourItems]] * vector * [[xviewdata#m_plocalcontourgeoms|m_pLocalContourGeoms]] * float [[xviewdata#m_fvectorscale|m_fVectorScale]] * int [[xviewdata#m_ivectorindex[3]|m_iVectorIndex[3]]] * vector [[xviewdata#m_arcmddata|m_arCmdData]] * vector * [[xviewdata#m_pfragmentelems|m_pFragmentElems]] * int [[xviewdata#m_ifragboundarycount|m_iFragBoundaryCount]] * vector * [[xviewdata#m_ptransformviewdata|m_pTransformViewData]] * vector [[xviewdata#m_pshadercontexts|m_pShaderContexts]] * vector [[xviewdata#m_pselecteditems|m_pSelectedItems]] * static unsigned [[xviewdata#char|char]] * static unsigned [[xviewdata#m_ubcolorscheme[drawcolorcount][4]|m_ubColorScheme[DrawColorCount][4]]] * XPlane [[xviewdata#m_clipplane[max_clip_plane_count]|m_ClipPlane[MAX_CLIP_PLANE_COUNT]]] * int [[xviewdata#m_clipplanecount|m_ClipPlaneCount]] * XCurve [[xviewdata#m_curve|m_Curve]] * XVisualAngle [[xviewdata#m_visualangle|m_VisualAngle]] **//Public interface//** * [[xviewdata#xviewdata1|XViewData]](XDocument * pDoc) * virtual void [[xviewdata#reset|reset]]() * virtual void [[xviewdata#builddata|buildData]]() * void [[xviewdata#bindpicker|bindPicker]](XPicker * picker) * virtual void [[xviewdata#updatedata|updateData]](ulong update_flag) * virtual void [[xviewdata#clear|clear]]() * const real * [[xviewdata#getviewbox|getViewBox]]() * void [[xviewdata#setviewbox|setViewBox]](const real * box) * virtual void [[xviewdata#updateviewbox|updateViewBox]]() * XDocument * [[xviewdata#getdocument|getDocument]]() * virtual [[xviewdata#~xviewdata|~XViewData]]() * virtual void [[xviewdata#setrenderstate|setRenderState]](RenderStateTypeID type, void * value) * virtual void [[xviewdata#getrenderstate|getRenderState]](RenderStateTypeID type, void * value) * void [[xviewdata#setsearchtype|setSearchType]](TypeID type) * TypeID [[xviewdata#getsearchtype|getSearchType]]() const * void [[xviewdata#setcurrentmodule|setCurrentModule]](int i) * int [[xviewdata#getcurrentmodule|getCurrentModule]]() const * ulong [[xviewdata#getrendermode|getRenderMode]]() const * void [[xviewdata#setrendermode|setRenderMode]](ulong m) * bool [[xviewdata#checkrendermode|checkRenderMode]](ulong m) * void [[xviewdata#enablerendermode|enableRenderMode]](TypeID mode) * void [[xviewdata#disablerendermode|disableRenderMode]](TypeID mode) * TypeID [[xviewdata#getpicktype|getPickType]]() const * void [[xviewdata#setpicktype|setPickType]](TypeID tid) * int [[xviewdata#getdisplayfilter|getDisplayFilter]]() const * void [[xviewdata#setdisplayfilter|setDisplayFilter]](int f) * bool [[xviewdata#checkdisplayfilter|checkDisplayFilter]](ulong m) * void [[xviewdata#enabledisplayfilter|enableDisplayFilter]](TypeID mode) * void [[xviewdata#disabledisplayfilter|disableDisplayFilter]](TypeID mode) * ulong [[xviewdata#getenitycolor|getEnityColor]](const XGeometry * g) * WorkScene [[xviewdata#getworkscene|getWorkScene]]() const * void [[xviewdata#setworkscene|setWorkScene]](WorkScene ws) * int [[xviewdata#getanimationspeed|getAnimationSpeed]]() const * void [[xviewdata#setanimationspeed|setAnimationSpeed]](int s) * int [[xviewdata#getanimationmode|getAnimationMode]]() const * void [[xviewdata#setanimationmode|setAnimationMode]](int m) * virtual int [[xviewdata#getanimationframecount|getAnimationFrameCount]]() const * int [[xviewdata#getcurrentanimationframe|getCurrentAnimationFrame]]() const * void [[xviewdata#setcurrentanimationframe|setCurrentAnimationFrame]](int fid) * virtual void [[xviewdata#nextanimationframe|nextAnimationFrame]]() * virtual void [[xviewdata#prevanimationframe|prevAnimationFrame]]() * void [[xviewdata#resetanimationframe|resetAnimationFrame]]() * virtual void [[xviewdata#clearanimationframe|clearAnimationFrame]]() * virtual bool [[xviewdata#prepareanimationdata|prepareAnimationData]](int mode) * int [[xviewdata#getpickmethod|getPickMethod]]() const * void [[xviewdata#setpickmethod|setPickMethod]](int m) * int [[xviewdata#getviewangle|getViewAngle]](real * a = 0) const * void [[xviewdata#setviewangle|setViewAngle]](int m, const real * a = 0) * ulong [[xviewdata#getupdateflag|getUpdateFlag]]() const * void [[xviewdata#resetupdateflag|resetUpdateFlag]]() * void [[xviewdata#showall|showAll]]() * void [[xviewdata#hideitems|hideItems]](vector * items) * void [[xviewdata#showitems|showItems]](vector * items) * void [[xviewdata#hideitems|hideItems]](vector * items) * void [[xviewdata#showitems|showItems]](vector * items) * void [[xviewdata#showrelateditems|showRelatedItems]](vector * items) * void [[xviewdata#setcolorscheme|setColorScheme]](ColorScheme cs, uint8 r, uint8 g, uint8 b, uint8 a) * ulong [[xviewdata#getcontourcolor|getContourColor]](real v, real maxLimit, real minLimit) * const unsigned char * [[xviewdata#getcolorscheme|getColorScheme]](ColorScheme ds) * bool [[xviewdata#isrotateenable|isRotateEnable]]() * void [[xviewdata#setrotateenable|setRotateEnable]](bool b) * const XPlane * [[xviewdata#getclipplane|getClipPlane]](int idx = 0) const * void [[xviewdata#setlightstate|setLightState]](bool b) * bool [[xviewdata#getlightstate|getLightState]]() * bool [[xviewdata#iscontourenable|isContourEnable]]() const * float [[xviewdata#getcontourmax|getContourMax]]() * float [[xviewdata#getcontourmin|getContourMin]]() * float [[xviewdata#getcontourscale|getContourScale]]() * int [[xviewdata#getcontourdiv|getContourDiv]]() * int [[xviewdata#getcontourscheme|getContourScheme]]() * void [[xviewdata#setcontourscheme|setContourScheme]](TypeID type) * void [[xviewdata#setcontourscale|setContourScale]](float s) * void [[xviewdata#setcontour|setContour]](float fMax, float fMin, int div) * virtual const char * [[xviewdata#getcontourlabel|getContourLabel]]() * void [[xviewdata#setcontourmaxminenforced|setContourMaxMinEnforced]](bool b) * bool [[xviewdata#iscontourmaxminenforced|isContourMaxMinEnforced]]() * vector * [[xviewdata#getlocalcontourgeometry|getLocalContourGeometry]]() * vector * [[xviewdata#getlocalcontouritems|getLocalContourItems]]() * void [[xviewdata#setlocalcontouritems|setLocalContourItems]](vector * items) * void [[xviewdata#clearlocalcontouritems|clearLocalContourItems]]() * void [[xviewdata#resetmodelfacecontourdata|resetModelFaceContourData]](XModel * mdl, float v = XREAL_MAX) * void [[xviewdata#updatelocalcontourmaxmin|updateLocalContourMaxMin]]() * float [[xviewdata#getvectorscale|getVectorScale]]() * void [[xviewdata#setvectorscale|setVectorScale]](float v) * void [[xviewdata#setvectorviewindex|setVectorViewIndex]](int i0, int i1, int i2) * int [[xviewdata#getvectorviewindex|getVectorViewIndex]](int i) * void [[xviewdata#setclipplane|setClipPlane]](const double * base, const double * normal, int idx = 0) * void [[xviewdata#getclipplaneequation|getClipPlaneEquation]](double *eqn, int idx = 0) * void [[xviewdata#setclipplanecount|setClipPlaneCount]](int cnt) * int [[xviewdata#getclipplanecount|getClipPlaneCount]]() * void [[xviewdata#setclipplane|setClipPlane]](const XPlane * fp, bool bUpdateViewData = true, int idx = 0) * void [[xviewdata#resetclipplane|resetClipPlane]](const real * box, int idx = 0) * virtual ulong [[xviewdata#updatepickeditemcolor|updatePickedItemColor]](const XUniqueObjectID * ue = NULL, UpdateItemColorMode updateMode = UpdateColor_UnpickItem) * vector * [[xviewdata#getcmdrenderdataarray|getCmdRenderDataArray]]() * XRenderData * [[xviewdata#getcmdrenderdata|getCmdRenderData]](ulong cid) * void [[xviewdata#bindbuffer|bindBuffer]](XRenderData * r, int vBuf, int elBuf) * virtual int [[xviewdata#getvertexbuffersize|getVertexBufferSize]](TypeID bufType, bool bSecond = false) * int [[xviewdata#getvertexbuffersize|getVertexBufferSize]](XModel * mdl, TypeID bufType) * virtual XBoundBox [[xviewdata#getboundboxofitems|getBoundBoxOfItems]](vector * items) * bool [[xviewdata#ismarkerautoscale|isMarkerAutoScale]]() const * bool [[xviewdata#issecondenable|isSecondEnable]]() const * void [[xviewdata#enablesecond|enableSecond]](int showFlag) * void [[xviewdata#disablesecond|disableSecond]]() * int [[xviewdata#getseconddisplayfilter|getSecondDisplayFilter]]() const * void [[xviewdata#updateresulttovff|updateResultToVFF]](XModel * mdl, const XResult * rlt, const XResult * deformRlt, int comp, int cid, VertexFrameFile * vff) * XCurve * [[xviewdata#getcurvedata|getCurveData]]() * virtual void [[xviewdata#updatecurvedata|updateCurveData]](int updateFlag) * XVisualAngle * [[xviewdata#getvisualangle|getVisualAngle]]() * void [[xviewdata#getviewboxbymodel|getViewBoxByModel]](XModel * mdl, bool bCheckInvisible, double * viewbox) * void [[xviewdata#updateconditionmarker|updateConditionMarker]](XModel * mdl, TypeID type, float scale) * virtual void [[xviewdata#initmarkerrenderdata|initMarkerRenderData]](TypeID type, XRenderData * rd) * XRenderData * [[xviewdata#getmarkerrenderdata|getMarkerRenderData]](TypeID type) * vector * [[xviewdata#gettransformviewdata|getTransformViewData]]() * void [[xviewdata#settransformviewdata|setTransformViewData]](vector * geoms) * const float * [[xviewdata#gettransformmatrix|getTransformMatrix]]() const * void [[xviewdata#settransformmatrix|setTransformMatrix]](const double * mat) * vector * [[xviewdata#getfragmentelems|getFragmentElems]]() * void [[xviewdata#setfragmentelems|setFragmentElems]](vector * els) * int [[xviewdata#getfragmentelemcount|getFragmentElemCount]]() * void [[xviewdata#clearfragmentelems|clearFragmentElems]]() * virtual const XRenderData * [[xviewdata#getfragmentviewdata|getFragmentViewData]]() * virtual const XRenderData * [[xviewdata#getsectionviewdata|getSectionViewData]]() * virtual void [[xviewdata#updateshadercontextvar|updateShaderContextVar]](const char * name) * XShaderContext * [[xviewdata#getshadercontext|getShaderContext]](const char * name) * void [[xviewdata#setshadercontext|setShaderContext]](const char * name, const char * vert, const char * frag) * void [[xviewdata#setshadercontextenable|setShaderContextEnable]](const char * name, bool bEnable) * void [[xviewdata#buildviewdatafornodes|buildViewDataForNodes]](XModel * mdl, XRenderData * rd) * void [[xviewdata#buildviewdataforelems|buildViewDataForElems]](vector * elems, XRenderData * rd, bool bEnableNormal = false) * void [[xviewdata#buildviewdataforelemswithindex|buildViewDataForElemsWithIndex]](vector * els, XRenderData * rd, bool bEnableNormal) * void [[xviewdata#buildrenderdataforpickedelems|buildRenderDataForPickedElems]](XRenderData * rd, bool bUseIndex = false) * virtual void [[xviewdata#refresh|refresh]]() * XModel * [[xviewdata#getviewmodel|getViewModel]]() * void [[xviewdata#setviewmodel|setViewModel]](ulong mid) * void [[xviewdata#updatesectionrenderdata|updateSectionRenderData]](const XPlane * fp, vector * sectionPoints, const float ** deform, const float * v, XRenderData * rd, ResultIndexMap * rim, int colorID = -1) * void [[xviewdata#buildsectionfacets|buildSectionFacets]](XModel * mdl, const XPlane * fp, vector * sectionPoints) ---- {{anchor:m_pdoc}} **XDocument * m_pDoc** 视图数据所绑定的文档类 {{anchor:m_isearchtype}} **int m_iSearchType** 搜索的对象类型 {{anchor:m_icurmoduleindex}} **int m_iCurModuleIndex** 当前Ribbon模块序号 {{anchor:m_iviewmid}} **int m_iViewMid** 当前视图模型ID {{anchor:m_ppicker}} **XPicker * m_pPicker** 选择器 {{anchor:m_ulupdateflag}} **ulong m_ulUpdateFlag** 视图更新标志 {{anchor:m_ulglmode}} **ulong m_ulGLMode** openGL渲染模式 {{anchor:m_idisplayfilter}} **int m_iDisplayFilter** 显示模式 {{anchor:m_iseconddisplayfilter}} **int m_iSecondDisplayFilter** 第二显示模式 {{anchor:m_ianimationspeed}} **int m_iAnimationSpeed** 动画速度 {{anchor:m_ianimationmode}} **int m_iAnimationMode** 动画模式 {{anchor:m_icurframeindex}} **int m_iCurFrameIndex** 当前动画帧ID {{anchor:m_iviewanglemode}} **int m_iViewAngleMode** 视角模式 {{anchor:m_ipickmethod}} **int m_iPickMethod** 选择方法 {{anchor:m_benablerotate}} **bool m_bEnableRotate** 是否支持旋转 {{anchor:m_benablesecond}} **bool m_bEnableSecond** 知否支持显示第二模型 {{anchor:m_blighton}} **bool m_bLightOn** 是否激活光照模式 {{anchor:m_dviewangle[3]}} **real m_dViewAngle[3]** 视角转动角度 {{anchor:m_dviewbox[6]}} **real m_dViewBox[6]** 三维视图视域盒 {{anchor:m_ftrmatrix}} **TMatrix44 m_fTrMatrix** 三维视图变换矩阵 {{anchor:m_pmarkermap}} **XMap * m_pMarkerMap** 对象标记渲染数据映射器 {{anchor:m_icontourdiv}} **int m_iContourDiv** 云图色带数 {{anchor:m_icontourscheme}} **int m_iContourScheme** 云图色带方案 {{anchor:m_fcontourmax}} **float m_fContourMax** 云图最大值 {{anchor:m_fcontourmin}} **float m_fContourMin** 云图最小值 {{anchor:m_fcontourscale}} **float m_fContourScale** 云图值比例系数 {{anchor:m_benforcecontourmaxmin}} **bool m_bEnforceContourMaxMin** 是否强制云图最大最小值 {{anchor:m_plocalcontouritems}} **vector * m_pLocalContourItems** 局部云图对象数组 {{anchor:m_plocalcontourgeoms}} **vector * m_pLocalContourGeoms** 局部云图几何数组 {{anchor:m_fvectorscale}} **float m_fVectorScale** 变形向量比例系数 {{anchor:m_ivectorindex[3]}} **int m_iVectorIndex[3]** 向量数据序列号(用于后处理显示变形),默认为0,1,2 {{anchor:m_arcmddata}} **vector m_arCmdData** 功能运行过程中预览视图数据数组 {{anchor:m_pfragmentelems}} **vector * m_pFragmentElems** 实体单元数组 {{anchor:m_ifragboundarycount}} **int m_iFragBoundaryCount** 实体单元数组的边界单元个数 {{anchor:m_ptransformviewdata}} **vector * m_pTransformViewData** 变形视图数据(用于前处理的变形预览) {{anchor:m_pshadercontexts}} **vector m_pShaderContexts** 着色器上下文数组 {{anchor:m_pselecteditems}} **vector m_pSelectedItems** 选择对象数组 {{anchor:m_clipplane[max_clip_plane_count]}} **XPlane m_ClipPlane[MAX_CLIP_PLANE_COUNT]** 裁剪平面数组 {{anchor:m_clipplanecount}} **int m_ClipPlaneCount** 裁剪平面个数 {{anchor:m_curve}} **XCurve m_Curve** 曲线数据 {{anchor:m_visualangle}} **XVisualAngle m_VisualAngle** 视角数据 ---- {{anchor:xviewdata1}} **XViewData(XDocument * pDoc)** *function: 构造函数 *parameters: - [i]XDocument * pDoc: 文档对象 *return value: 无 {{anchor:reset}} **virtual void reset()** *function: 重置视图数据 *parameters: NULL *return value: 无 {{anchor:builddata}} **virtual void buildData()** *function: 构建视图数据 *parameters: NULL *return value: 无 {{anchor:bindpicker}} **void bindPicker(XPicker * picker)** *function: 绑定选择器 *parameters: - [i]XPicker * picker: 选择器 *return value: 无 {{anchor:updatedata}} **virtual void updateData(ulong update_flag)** *function: 更新视图数据 *parameters: - [i]ulong update_flag: 更新标志 *return value: 无 {{anchor:clear}} **virtual void clear()** *function: 清空视图数据 *parameters: NULL *return value: 无 {{anchor:getviewbox}} **const real * getViewBox()** *function: 获取三维视图视域包围盒 *parameters: NULL *return value: 三维视图视域包围盒 {{anchor:setviewbox}} **void setViewBox(const real * box)** *function: 设置三维视图视域包围盒 *parameters: - [i]const real * box: 三维视图视域包围盒 *return value: 无 {{anchor:updateviewbox}} **virtual void updateViewBox()** *function: 更新三维视图视域包围盒 *parameters: NULL *return value: 无 {{anchor:getdocument}} **XDocument * getDocument()** *function: 获取视图所属的文档对象 *parameters: NULL *return value: 文档对象指针 {{anchor:~xviewdata}} **virtual ~XViewData()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:setrenderstate}} **virtual void setRenderState(RenderStateTypeID type, void * value)** *function: 设置渲染状态 *parameters: - [i]RenderStateTypeID type: 渲染状态类型 - [i] void * value: 状态参数 *return value: 无 {{anchor:getrenderstate}} **virtual void getRenderState(RenderStateTypeID type, void * value)** *function: 获取渲染状态 *parameters: - [i]RenderStateTypeID type: 渲染状态类型 - [i] void * value: 状态参数值 *return value: 无 {{anchor:setsearchtype}} **void setSearchType(TypeID type)** *function: 设置搜索对象类型 *parameters: - [i]TypeID type: 对象类型 *return value: 无 {{anchor:getsearchtype}} **TypeID getSearchType() const** *function: 获取搜索对象类型 *parameters: NULL *return value: 搜索对象类型 {{anchor:setcurrentmodule}} **void setCurrentModule(int i)** *function: 设置当前Ribbon模块索引号 *parameters: - [i]int i: 当前Ribbon模块索引号 *return value: 无 {{anchor:getcurrentmodule}} **int getCurrentModule() const** *function: 获取当前Ribbon模块索引号 *parameters: NULL *return value: 当前Ribbon模块索引号 {{anchor:getrendermode}} **ulong getRenderMode() const** *function: 获取渲染模式 *parameters: NULL *return value: 渲染模式 {{anchor:setrendermode}} **void setRenderMode(ulong m)** *function: 设置渲染模式 *parameters: - [i]ulong m: 渲染模式 *return value: 无 {{anchor:checkrendermode}} **bool checkRenderMode(ulong m)** *function: 检查当前渲染模式是否匹配给定模式 *parameters: - [i]ulong m: 给定渲染模式 *return value: 匹配则返回true,否则返回false {{anchor:enablerendermode}} **void enableRenderMode(TypeID mode)** *function: 激活渲染模式 *parameters: - [i]TypeID mode: 渲染模式 *return value: 无 {{anchor:disablerendermode}} **void disableRenderMode(TypeID mode)** *function: 使给定渲染模式失效 *parameters: - [i]TypeID mode: 失效的渲染模式 *return value: 无 {{anchor:getpicktype}} **TypeID getPickType() const** *function: 获取拾取对象类型 *parameters: NULL *return value: 拾取对象类型 {{anchor:setpicktype}} **void setPickType(TypeID tid)** *function: 设置拾取对象类型 *parameters: - [i]TypeID tid: 拾取对象类型 *return value: 无 {{anchor:getdisplayfilter}} **int getDisplayFilter() const** *function: 获取显示模式 *parameters: NULL *return value: 显示模式 {{anchor:setdisplayfilter}} **void setDisplayFilter(int f)** *function: 设置显示模式 *parameters: - [i]int f: 显示模式 *return value: 无 {{anchor:checkdisplayfilter}} **bool checkDisplayFilter(ulong m)** *function: 检查当前显示模式是否匹配给定显示模式 *parameters: - [i]ulong m: 给定显示模式 *return value: 匹配则返回true,否则返回false {{anchor:enabledisplayfilter}} **void enableDisplayFilter(TypeID mode)** *function: 激活显示模式 *parameters: - [i]TypeID mode: 显示模式 *return value: 无 {{anchor:disabledisplayfilter}} **void disableDisplayFilter(TypeID mode)** *function: 抑制给定显示模式 *parameters: - [i]TypeID mode: 给定显示模式 *return value: 无 {{anchor:getenitycolor}} **ulong getEnityColor(const XGeometry * g)** *function: 获取几何体颜色 *parameters: - [i]const XGeometry * g: 几何体对象 *return value: 几何体颜色 {{anchor:getanimationspeed}} **int getAnimationSpeed() const** *function: 获取动画速度 *parameters: NULL *return value: 动画速度 {{anchor:setanimationspeed}} **void setAnimationSpeed(int s)** *function: 设置动画速度 *parameters: - [i]int s: 动画速度 *return value: 无 {{anchor:getanimationmode}} **int getAnimationMode() const** *function: 获取动画模式 *parameters: NULL *return value: 动画模式 {{anchor:setanimationmode}} **void setAnimationMode(int m)** *function: 设置动画模式 *parameters: - [i]int m: 动画模式 *return value: 无 {{anchor:getanimationframecount}} **virtual int getAnimationFrameCount() const** *function: 获取动画总帧数 *parameters: NULL *return value: 动画总帧数 {{anchor:getcurrentanimationframe}} **int getCurrentAnimationFrame() const** *function: 获取当前动画帧序号 *parameters: NULL *return value: 当前动画帧序号 {{anchor:setcurrentanimationframe}} **void setCurrentAnimationFrame(int fid)** *function: 设置当前动画帧序号 *parameters: - [i]int fid: 当前动画帧序号 *return value: 无 {{anchor:nextanimationframe}} **virtual void nextAnimationFrame()** *function: 转到下一动画帧 *parameters: NULL *return value: 无 {{anchor:prevanimationframe}} **virtual void prevAnimationFrame()** *function: 转到上一动画帧 *parameters: NULL *return value: 无 {{anchor:resetanimationframe}} **void resetAnimationFrame()** *function: 重置动画帧 *parameters: NULL *return value: 无 {{anchor:clearanimationframe}} **virtual void clearAnimationFrame()** *function: 清空动画帧数据 *parameters: NULL *return value: 无 {{anchor:prepareanimationdata}} **virtual bool prepareAnimationData(int mode)** *function: 准备动画帧数据 *parameters: - [i]int mode: 动画模式 *return value: 无 {{anchor:getpickmethod}} **int getPickMethod() const** *function: 获取拾取方法 *parameters: NULL *return value: 拾取方法 {{anchor:setpickmethod}} **void setPickMethod(int m)** *function: 设置拾取方法 *parameters: - [i]int m: 拾取方法 *return value: 无 {{anchor:getviewangle}} **int getViewAngle(real * a = 0) const** *function: 获取视角类型 *parameters: - [i]real * a = 0: 存放视角角度,默认不获取角度 *return value: 视角类型 {{anchor:setviewangle}} **void setViewAngle(int m, const real * a = 0)** *function: 设置视角类型 *parameters: - [i]int m: 视角类型 - [i] const real * a = 0: 视角角度 *return value: 无 {{anchor:getupdateflag}} **ulong getUpdateFlag() const** *function: 获取视图数据更新标志 *parameters: NULL *return value: 数据更新标志 {{anchor:resetupdateflag}} **void resetUpdateFlag()** *function: 重置视图数据更新标志 *parameters: NULL *return value: 无 {{anchor:showall}} **void showAll()** *function: 显示所有对象 *parameters: NULL *return value: 无 {{anchor:hideitems}} **void hideItems(vector * items)** *function: 隐藏指定对象 *parameters: - [i]vector * items: 隐藏的对象数组 *return value: 无 {{anchor:showitems}} **void showItems(vector * items)** *function: 显示指定对象 *parameters: - [i]vector * items: 显示的对象数组 *return value: 无 {{anchor:hideitems}} **void hideItems(vector * items)** *function: 隐藏指定对象 *parameters: - [i]vector * items: 隐藏的对象数组 *return value: 无 {{anchor:showitems}} **void showItems(vector * items)** *function: 显示指定对象 *parameters: - [i]vector * items: 显示的对象数组 *return value: 无 {{anchor:showrelateditems}} **void showRelatedItems(vector * items)** *function: 显示指定对象数组的相邻对象 *parameters: - [i]vector * items: 指定对象数组 *return value: 无 {{anchor:setcolorscheme}} **void setColorScheme(ColorScheme cs, uint8 r, uint8 g, uint8 b, uint8 a)** *function: 设置颜色方案 *parameters: - [i]ColorScheme cs: 颜色方案类型 - [i] uint8 r: 颜色red分量 - [i] uint8 g: 颜色green分量 - [i] uint8 b: 颜色blue分量 - [i] uint8 a: 颜色alpha分量 *return value: {{anchor:getcontourcolor}} **ulong getContourColor(real v, real maxLimit, real minLimit)** *function: 获取云图颜色 *parameters: - [i]real v: 云图值 - [i] real maxLimit: 云图最大值 - [i] real minLimit: 云图最小值 *return value: 颜色RGBA值 {{anchor:getcolorscheme}} **const unsigned char * getColorScheme(ColorScheme ds)** *function: 获取颜色方案字符串 *parameters: - [i]ColorScheme ds: 颜色方案类型 *return value: 颜色方案字符串 {{anchor:isrotateenable}} **bool isRotateEnable()** *function: 视图是否可旋转 *parameters: NULL *return value: 可旋转返回true,否则返回false {{anchor:setrotateenable}} **void setRotateEnable(bool b)** *function: 设置视图可旋转 *parameters: - [i]bool b: 是否是否可旋转 *return value: 无 {{anchor:getclipplane}} **const XPlane * getClipPlane(int idx = 0) const** *function: 获取第idx个裁剪平面 *parameters: - [i]int idx = 0: 裁剪平面序号 *return value: 第idx个裁剪平面 {{anchor:setlightstate}} **void setLightState(bool b)** *function: 设置是否激活光照模式 *parameters: - [i]bool b: 光照是否激活 *return value: 无 {{anchor:getlightstate}} **bool getLightState()** *function: 获取光照模式是否激活 *parameters: NULL *return value: 激活返回true,否则返回false {{anchor:iscontourenable}} **bool isContourEnable() const** *function: 云图是否激活 *parameters: NULL *return value: 云图激活返回true,否则返回false {{anchor:getcontourmax}} **float getContourMax()** *function: 获取云图最大值 *parameters: NULL *return value: 云图最大值 {{anchor:getcontourmin}} **float getContourMin()** *function: 获取云图最小值 *parameters: NULL *return value: 云图最小值 {{anchor:getcontourscale}} **float getContourScale()** *function: 获取云图值比例系数 *parameters: NULL *return value: 云图值比例系数 {{anchor:getcontourdiv}} **int getContourDiv()** *function: 获取云图色带数 *parameters: NULL *return value: 云图色带数 {{anchor:getcontourscheme}} **int getContourScheme()** *function: 获取云图颜色方案 *parameters: NULL *return value: 云图颜色方案类型 {{anchor:setcontourscheme}} **void setContourScheme(TypeID type)** *function: 设置云图颜色方案 *parameters: - [i]TypeID type: 云图颜色方案类型 *return value: 无 {{anchor:setcontourscale}} **void setContourScale(float s)** *function: 设置云图值比例系数 *parameters: - [i]float s: 云图值比例系数 *return value: 无 {{anchor:setcontour}} **void setContour(float fMax, float fMin, int div)** *function: 设置云图 *parameters: - [i]float fMax: 云图最大值 - [i] float fMin: 云图最小值 - [i] int div: 云图色带数 *return value: 无 {{anchor:getcontourlabel}} **virtual const char * getContourLabel()** *function: 获取云图标签字符串 *parameters: NULL *return value: 云图标签字符串 {{anchor:setcontourmaxminenforced}} **void setContourMaxMinEnforced(bool b)** *function: 设置是否强制云图极值 *parameters: - [i]bool b: 是否强制云图极值 *return value: 无 {{anchor:iscontourmaxminenforced}} **bool isContourMaxMinEnforced()** *function: 云图极值是否被强制指定 *parameters: NULL *return value: 云图极值被强制指定返回true,否则返回false {{anchor:getlocalcontourgeometry}} **vector * getLocalContourGeometry()** *function: 获取局部云图几何对象数组 *parameters: NULL *return value: 局部云图几何对象数组 {{anchor:getlocalcontouritems}} **vector * getLocalContourItems()** *function: 获取局部云图对象数组 *parameters: NULL *return value: 局部云图对象数组 {{anchor:setlocalcontouritems}} **void setLocalContourItems(vector * items)** *function: 设置局部云图对象数组 *parameters: - [i]vector * items: 局部云图对象数组 *return value: 无 {{anchor:clearlocalcontouritems}} **void clearLocalContourItems()** *function: 清空局部云图对象数组 *parameters: NULL *return value: 无 {{anchor:resetmodelfacecontourdata}} **void resetModelFaceContourData(XModel * mdl, float v = XREAL_MAX)** *function: 重置模型的所有面云图数据 *parameters: - [i]XModel * mdl: 模型对象 - [i] float v = XREAL_MAX: 重置的默认面云图值 *return value: 无 {{anchor:updatelocalcontourmaxmin}} **void updateLocalContourMaxMin()** *function: 更新局部云图的极值 *parameters: NULL *return value: 无 {{anchor:getvectorscale}} **float getVectorScale()** *function: 获取变形向量的比例系数 *parameters: NULL *return value: 变形向量的比例系数 {{anchor:setvectorscale}} **void setVectorScale(float v)** *function: 设置变形向量的比例系数 *parameters: - [i]float v: 变形向量的比例系数 *return value: 无 {{anchor:setvectorviewindex}} **void setVectorViewIndex(int i0, int i1, int i2)** *function: 设置变形向量的分量序号 *parameters: - [i]int i0: 第一个向量序号 - [i] int i1: 第二个向量序号 - [i] int i2: 第三个向量序号 *return value: 无 {{anchor:getvectorviewindex}} **int getVectorViewIndex(int i)** *function: 获取变形向量的分量序号 *parameters: - [i]int i: 分量 *return value: 分量序号 {{anchor:setclipplane}} **void setClipPlane(const double * base, const double * normal, int idx = 0)** *function: 设置裁剪平面 *parameters: - [i]const double * base: 裁剪平面基点 - [i] const double * normal: 裁剪平面法向 - [i] int idx = 0: 裁剪平面序号 *return value: 无 {{anchor:getclipplaneequation}} **void getClipPlaneEquation(double *eqn, int idx = 0)** *function: 获取裁剪平面方程 *parameters: - [i]double *eqn: 方程系数数组(大小为4) - [i] int idx = 0: 裁剪平面序号 *return value: 无 {{anchor:setclipplanecount}} **void setClipPlaneCount(int cnt)** *function: 设置裁剪平面个数 *parameters: - [i]int cnt: 裁剪平面个数 *return value: 无 {{anchor:getclipplanecount}} **int getClipPlaneCount()** *function: 获取裁剪平面个数 *parameters: NULL *return value: 裁剪平面个数 {{anchor:setclipplane}} **void setClipPlane(const XPlane * fp, bool bUpdateViewData = true, int idx = 0)** *function: 设置裁剪平面 *parameters: - [i]const XPlane * fp: 平面对象 - [i] bool bUpdateViewData = true: 是否更新视图 - [i] int idx = 0: 裁剪平面序号 *return value: 无 {{anchor:resetclipplane}} **void resetClipPlane(const real * box, int idx = 0)** *function: 重置裁剪平面 *parameters: - [i]const real * box: 视图包围盒,用于计算裁剪平面的中心 - [i] int idx = 0: 裁剪平面序号 *return value: 无 {{anchor:updatepickeditemcolor}} **virtual ulong updatePickedItemColor(const XUniqueObjectID * ue = NULL, UpdateItemColorMode updateMode = UpdateColor_UnpickItem)** *function: 更新拾取对象的颜色 *parameters: - [i]const XUniqueObjectID * ue = NULL: 拾取对象,若为空更新所有被拾取的对象 - [i] UpdateItemColorMode updateMode = UpdateColor_UnpickItem: 更新策略 *return value: 视图数据的更新标志,用于指示XRender更新相关视图显示 {{anchor:getcmdrenderdataarray}} **vector * getCmdRenderDataArray()** *function: 获取功能预览视图数据数组 *parameters: NULL *return value: 功能预览视图数据数组 {{anchor:getcmdrenderdata}} **XRenderData * getCmdRenderData(ulong cid)** *function: 获取指定功能命令的预览数据 *parameters: - [i]ulong cid: 命令ID *return value: 指定功能命令的预览数据 {{anchor:bindbuffer}} **void bindBuffer(XRenderData * r, int vBuf, int elBuf)** *function: 将渲染数据绑定到给定ID号的VBO中 *parameters: - [i]XRenderData * r: 渲染数据 - [i] int vBuf: 顶点VBO ID号 - [i] int elBuf: 单元索引VBO ID号 *return value: 无 {{anchor:getvertexbuffersize}} **virtual int getVertexBufferSize(TypeID bufType, bool bSecond = false)** *function: 获取顶点数组的大小 *parameters: - [i]TypeID bufType: 顶点数组类型 - [i] bool bSecond = false: 是否第二模型 *return value: 顶点数组的大小 {{anchor:getvertexbuffersize}} **int getVertexBufferSize(XModel * mdl, TypeID bufType)** *function: 获取模型顶点数组的大小 *parameters: - [i]XModel * mdl: 模型对象 - [i] TypeID bufType: 顶点数组类型 *return value: 模型顶点数组的大小 {{anchor:getboundboxofitems}} **virtual XBoundBox getBoundBoxOfItems(vector * items)** *function: 获取指定对象的包围盒 *parameters: - [i]vector * items: 指定数据对象数组 *return value: 指定对象的包围盒 {{anchor:ismarkerautoscale}} **bool isMarkerAutoScale() const** *function: 标记是否自动缩放 *parameters: NULL *return value: 自动缩放返回true,否则返回false {{anchor:issecondenable}} **bool isSecondEnable() const** *function: 是否激活第二模型显示模式 *parameters: NULL *return value: 激活返回true,否则返回false {{anchor:enablesecond}} **void enableSecond(int showFlag)** *function: 激活第二模型渲染模式 *parameters: - [i]int showFlag: 第二模型的渲染模式 *return value: 无 {{anchor:disablesecond}} **void disableSecond()** *function: 抑制第二模型渲染 *parameters: NULL *return value: 无 {{anchor:getseconddisplayfilter}} **int getSecondDisplayFilter() const** *function: 获取第二模型的显示模式 *parameters: NULL *return value: 第二模型的显示模式 {{anchor:updateresulttovff}} **void updateResultToVFF(XModel * mdl, const XResult * rlt, const XResult * deformRlt, int comp, int cid, VertexFrameFile * vff)** *function: 更新结果数据的顶点帧文件中 *parameters: - [i]XModel * mdl: 模型对象 - [i] const XResult * rlt: 结果对象 - [i] const XResult * deformRlt: 变形结果对象 - [i] int comp: 结果分量 - [i] int cid: 参考坐标系 - [i] VertexFrameFile * vff: 顶点帧文件 *return value: 无 {{anchor:getcurvedata}} **XCurve * getCurveData()** *function: 获取视图的曲线数据 *parameters: NULL *return value: 视图的曲线数据 {{anchor:updatecurvedata}} **virtual void updateCurveData(int updateFlag)** *function: 更新曲线数据 *parameters: - [i]int updateFlag: 更新标志 *return value: 无 {{anchor:getvisualangle}} **XVisualAngle * getVisualAngle()** *function: 获取视角设置 *parameters: NULL *return value: 视角设置 {{anchor:getviewboxbymodel}} **void getViewBoxByModel(XModel * mdl, bool bCheckInvisible, double * viewbox)** *function: 获取模型对象的包围盒 *parameters: - [i]XModel * mdl: 模型对象 - [i] bool bCheckInvisible: 是否检查不可视对象 - [i] double * viewbox: 视图包围盒 *return value: 无 {{anchor:updateconditionmarker}} **void updateConditionMarker(XModel * mdl, TypeID type, float scale)** *function: *parameters: 更新条件的标记 - [i]XModel * mdl: 模型对象 - [i] TypeID type: 条件类型 - [i] float scale: 缩放比例 *return value: 无 {{anchor:initmarkerrenderdata}} **virtual void initMarkerRenderData(TypeID type, XRenderData * rd)** *function: 初始化标记渲染数据 *parameters: - [i]TypeID type: 标记类型 - [i] XRenderData * rd: 渲染数据结构体 *return value: 无 {{anchor:getmarkerrenderdata}} **XRenderData * getMarkerRenderData(TypeID type)** *function: 获取标记渲染数据 *parameters: - [i]TypeID type: 标记类型 *return value: 渲染数据结构体 {{anchor:gettransformviewdata}} **vector * getTransformViewData()** *function: 获取变形渲染数据数组 *parameters: NULL *return value: 变形渲染数据数组 {{anchor:settransformviewdata}} **void setTransformViewData(vector * geoms)** *function: 设置变形渲染数据 *parameters: - [i]vector * geoms: 变形渲染数据数组 *return value: 无 {{anchor:gettransformmatrix}} **const float * getTransformMatrix() const** *function: 获取变形视图变换矩阵 *parameters: NULL *return value: 变形视图变换矩阵 {{anchor:settransformmatrix}} **void setTransformMatrix(const double * mat)** *function: 设置变形视图变换矩阵 *parameters: - [i]const double * mat: 变形视图变换矩阵 *return value: 无 {{anchor:getfragmentelems}} **vector * getFragmentElems()** *function: 获取实体单元对象数组 *parameters: NULL *return value: 实体单元对象数组 {{anchor:setfragmentelems}} **void setFragmentElems(vector * els)** *function: 设置实体单元对象数组 *parameters: - [i]vector * els: 实体单元对象数组 *return value: 无 {{anchor:getfragmentelemcount}} **int getFragmentElemCount()** *function: 获取实体单元对象个数 *parameters: NULL *return value: 实体单元对象个数 {{anchor:clearfragmentelems}} **void clearFragmentElems()** *function: 清空实体单元对象数组 *parameters: NULL *return value: 无 {{anchor:getfragmentviewdata}} **virtual const XRenderData * getFragmentViewData()** *function: 获取实体单元对象渲染数据 *parameters: NULL *return value: 实体单元对象渲染数据 {{anchor:getsectionviewdata}} **virtual const XRenderData * getSectionViewData()** *function: 获取截面视图数据 *parameters: NULL *return value: 截面视图数据 {{anchor:updateshadercontextvar}} **virtual void updateShaderContextVar(const char * name)** *function: 更新着色器上下文变量参数 *parameters: - [i]const char * name: 着色器名字 *return value: 无 {{anchor:getshadercontext}} **XShaderContext * getShaderContext(const char * name)** *function: 获取指定名字的着色器上下文 *parameters: - [i]const char * name: 着色器名字 *return value: 着色器上下文 {{anchor:setshadercontext}} **void setShaderContext(const char * name, const char * vert, const char * frag)** *function: 设置着色器上下文 *parameters: - [i]const char * name: 着色器名字 - [i] const char * vert: vert着色器程序文件名 - [i] const char * frag: frag着色器程序文件名 *return value: {{anchor:setshadercontextenable}} **void setShaderContextEnable(const char * name, bool bEnable)** *function: 设置着色器是否可用 *parameters: - [i]const char * name: 着色器名字 - [i] bool bEnable: 可用设置true,否则设为false *return value: 无 {{anchor:buildviewdatafornodes}} **void buildViewDataForNodes(XModel * mdl, XRenderData * rd)** *function: 构建顶点的视图数据 *parameters: - [i]XModel * mdl: 模型对象 - [i] XRenderData * rd: 顶点的视图数据 *return value: 无 {{anchor:buildviewdataforelems}} **void buildViewDataForElems(vector * elems, XRenderData * rd, bool bEnableNormal = false)** *function: 构建单元的视图数据 *parameters: - [i]vector * elems: 单元对象数组 - [i] XRenderData * rd: 渲染数据结构体 - [i] bool bEnableNormal = false: 是否构建法线数据 *return value: 无 {{anchor:buildviewdataforelemswithindex}} **void buildViewDataForElemsWithIndex(vector * els, XRenderData * rd, bool bEnableNormal)** *function: 构建使用索引的单元视图数据 *parameters: - [i]vector * els: 单元对象数组 - [i] XRenderData * rd: 渲染数据结构体 - [i] bool bEnableNormal: 是否构建法线数据 *return value: 无 {{anchor:buildrenderdataforpickedelems}} **void buildRenderDataForPickedElems(XRenderData * rd, bool bUseIndex = false)** *function: 构建拾取单元的渲染数据 *parameters: - [i]XRenderData * rd: 渲染数据结构体 - [i] bool bUseIndex = false: 使用单元索引(ELEMENT INDEX),表示使用glDrawElements渲染,否则使用glDrawArray渲染 *return value: 无 {{anchor:refresh}} **virtual void refresh()** *function: 更新视图 *parameters: NULL *return value: 无 {{anchor:getviewmodel}} **XModel * getViewModel()** *function: 获取视图模型对象 *parameters: NULL *return value: 视图模型对象 {{anchor:setviewmodel}} **void setViewModel(ulong mid)** *function: 设置视图模型对象 *parameters: - [i]ulong mid: 模型对象ID *return value: 无 {{anchor:updatesectionrenderdata}} **void updateSectionRenderData(const XPlane * fp, vector * sectionPoints, const float ** deform, const float * v, XRenderData * rd, ResultIndexMap * rim, int colorID = -1)** *function: 更新截面视图数据 *parameters: - [i]const XPlane * fp: 截平面 - [i] vector * sectionPoints: 截面交点数组(按三角片来组织) - [i] const float ** deform: 变形向量数组 - [i] const float * v: 场数组 - [i] XRenderData * rd: 渲染数据 - [i] ResultIndexMap * rim: 结果编号索引 - [i] int colorID = -1: 默认颜色值 *return value: 无 {{anchor:buildsectionfacets}} **void buildSectionFacets(XModel * mdl, const XPlane * fp, vector * sectionPoints)** *function: 构建截面三角片数据 *parameters: - [i]XModel * mdl: 模型对象 - [i] const XPlane * fp: 截平面 - [i] vector * sectionPoints: 三角片的顶点(交点)数组 *return value: 无