com.supermap.realspace.threeddesigner
类 MeshOperator

java.lang.Object
  继承者 com.supermap.realspace.threeddesigner.MeshOperator

public class MeshOperator
extends java.lang.Object

布尔运算,支持带纹理


构造方法摘要
MeshOperator()
           
 
方法摘要
static void addSteppedListener(SteppedListener l)
          添加一个用于接收进度条事件(SteppedEvent)的监听器。
static java.util.ArrayList<Geometry3D> booleanOperation(Geometry3D geometry3D1, Geometry3D geometry3D2, BooleanOperatorType operatorType)
          带纹理的布尔运算
static GeoLine3D intersectionLine(Geometry3D geometry3D1, Geometry3D geometry3D2)
          模型进行布尔运算-求交时,求交边界输出成三维线。
static java.util.ArrayList<Geometry3D> meshClip(java.util.ArrayList<Geometry3D> geometrysList, Geometry clipRegion, MeshClipParameter parameter)
          模型裁剪 支持是否合并结果以及是否保留裁剪面下方的模型部分。
static java.util.ArrayList<Geometry3D> meshClip(java.util.ArrayList<Geometry3D> geometrysList, Geometry clipRegion, MeshKeepType meshKeepType)
          模型裁剪功能。
static java.util.HashMap<MeshOperationFilterType,java.util.ArrayList<Geometry3D>> meshCut(Geometry3D sourceGeometry, Geometry3D cutGeometry3D, java.util.ArrayList<MeshOperationFilterType> meshFilterTypes)
          模型切割,可根据保留类型达到相互切割、CSG布尔运算、平面切割模型等目的。
static java.util.ArrayList<Geometry3D> meshSplit(Geometry3D geometry3D, Plane plane, java.util.ArrayList<MeshSplitType> splitTypes, boolean bClose)
          根据指定平面分割模型。
static java.util.HashMap<TopologyErrorType,java.util.ArrayList<java.lang.String>> meshTopologyCheck(Skeleton skeleton, double distolerence, double normalTolorence)
          骨架拓扑检查。
static java.util.ArrayList<Skeleton> removeMeshSelfIntersection(Skeleton skeleton)
          移除模型骨架中由于自相交产生的三角形。
static void removeSteppedListener(SteppedListener l)
          移除一个用于接收进度条事件(SteppedEvent)的监听器。
static void reverseMesh(Skeleton skeleton)
          翻转骨架,用于处理模型数据。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

MeshOperator

public MeshOperator()
方法详细信息

addSteppedListener

public static void addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

removeSteppedListener

public static void removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

booleanOperation

public static java.util.ArrayList<Geometry3D> booleanOperation(Geometry3D geometry3D1,
                                                               Geometry3D geometry3D2,
                                                               BooleanOperatorType operatorType)
带纹理的布尔运算

参数:
geometry3D1 - 参与布尔运算的几何体1
geometry3D2 - 参与布尔运算的几何体2
operatorType - 布尔运算类型类型包括求差,求和,求并
返回:

removeMeshSelfIntersection

public static java.util.ArrayList<Skeleton> removeMeshSelfIntersection(Skeleton skeleton)
移除模型骨架中由于自相交产生的三角形。

参数:
skeleton - 模型骨架
返回:
移除自相交骨架后输出的结果

meshClip

public static java.util.ArrayList<Geometry3D> meshClip(java.util.ArrayList<Geometry3D> geometrysList,
                                                       Geometry clipRegion,
                                                       MeshKeepType meshKeepType)
模型裁剪功能。

仅考虑裁剪区域的水平区域,在Z方向上的数据都被裁剪。

参数:
geometrysList - 需要裁减的模型集合
clipRegion - 裁剪范围
meshKeepType - 裁剪类型

meshClip

public static java.util.ArrayList<Geometry3D> meshClip(java.util.ArrayList<Geometry3D> geometrysList,
                                                       Geometry clipRegion,
                                                       MeshClipParameter parameter)
模型裁剪

支持是否合并结果以及是否保留裁剪面下方的模型部分。

参数:
geometrysList - 需要裁减的模型集合
clipRegion - 裁剪范围
parameter - 模型裁剪参数
返回:
保留的模型对象集合 // *
//       * public void TestmeshClip() {
//                      Datasource datasource =
//              }
//       * 

meshCut

public static java.util.HashMap<MeshOperationFilterType,java.util.ArrayList<Geometry3D>> meshCut(Geometry3D sourceGeometry,
                                                                                                 Geometry3D cutGeometry3D,
                                                                                                 java.util.ArrayList<MeshOperationFilterType> meshFilterTypes)
模型切割,可根据保留类型达到相互切割、CSG布尔运算、平面切割模型等目的。

参数:
sourceGeometry - 模型对象1
cutGeometry3D - 模型对象2
meshFilterTypes - 模型切割的保留类型
返回:
模型对象集合,键值为模型切割类型,值为模型对象集合。

meshTopologyCheck

public static java.util.HashMap<TopologyErrorType,java.util.ArrayList<java.lang.String>> meshTopologyCheck(Skeleton skeleton,
                                                                                                           double distolerence,
                                                                                                           double normalTolorence)
骨架拓扑检查。

参数:
skeleton - 待拓扑检查的骨架
distolerence - 距离阈值(单位:骨架单位,检查=>NonPlanarPolygonDistancePlane)
normalTolorence - 法线阈值(单位:角度,检查=>NonPlanarPolygonNormalsDeviation)
返回:

intersectionLine

public static GeoLine3D intersectionLine(Geometry3D geometry3D1,
                                         Geometry3D geometry3D2)
模型进行布尔运算-求交时,求交边界输出成三维线。

参数:
geometry3D1 - 布尔运算-求交的模型对象1。
geometry3D2 - 布尔运算-求交的模型对象2。
返回:
求交边界输出的三维线。

reverseMesh

public static void reverseMesh(Skeleton skeleton)
翻转骨架,用于处理模型数据。

对于模型数据布尔运算或获取截面崩溃或结果不对的情况,都可以使用该方法进行处理。

参数:
skeleton - 模型骨架

meshSplit

public static java.util.ArrayList<Geometry3D> meshSplit(Geometry3D geometry3D,
                                                        Plane plane,
                                                        java.util.ArrayList<MeshSplitType> splitTypes,
                                                        boolean bClose)
根据指定平面分割模型。

参数:
geometry3D - 原始模型
plane - 平面,如果原始模型为经纬度的数据,plane需要伪坐标(同ModelBuidler3D.sectionProjection一样)。可用Scene.sphericalToPseudoCartesian()将经纬度转为伪坐标。
splitTypes - 分割类型,保留平面法向量正方向还是法向量反方向的模型部分(可同时保留)。
bClose - 是否封边
返回:
分割后的模型对象集合。若同时保留平面两侧模型,第一个始终为平面法向量正方向的模型部分。