Reducemesh


#1

I need a c++ sdk function to reduce mesh just like reducemesh command do,but I can’t find this funciton
in c++ sdk .


(Menno Deij - van Rijswijk) #2

See rhinoSdkMeshUtilities.h

/*
Description:
  RhinoReduceMesh reduces mesh polygon count.

Parameters:
  mesh                 - Triangular mesh to be reduced
  iDesiredPolygonCount - Target polygon count
  bAllowDistortion     - If true mesh appearance is not changed even if the target polygon count is not reached
  iAccuracy            - Integer from 1 to 10 telling how accurate reduction algorithm to use. Greater number gives
                         more accurate results.
  bNormalizeMeshSize   - If true mesh is fitted to an axis aligned unit cube until reduction is complete
  pProgressContext     - Null or a pointer to a CRhinoReduceMeshProgressContext object. Provides progress information to caller.
  pStrProblemOut       - Null or a pointer to an ON_wString object. Reports possible problems.
  pFaceTagArray        - Null or a pointer to an ON_SimpleArray<int> object with element count equal to mesh face count.
                         Each element is a user defined tag for the mesh face with the same index. Can be used to identify
                         mesh faces before and after calling RhinoReduceMesh.

Returns:
  True if mesh is successfully reduced and false if mesh could not be reduced for some reason. If return value is false
  then pStrProblemOut may have information what went wrong.
*/
RHINO_SDK_FUNCTION
bool RhinoReduceMesh(ON_Mesh & mesh,
                     int iDesiredPolygonCount,
                     bool bAllowDistortion = true,
                     int iAccuracy = 10,
                     bool bNormalizeMeshSize = true,
                     CRhinoReduceMeshProgressContext * pProgressContext = 0,
                     ON_wString * pStrProblemOut = 0,
                     ON_SimpleArray<int> * pFaceTagArray = 0);

#3

thanks .
I have a mesh with 2000000 faces,and I need using RhinoReduceMesh function to reduce
the face to 20000.
but this will using long time
so I need get the progress just like rhino’s windows hints.
how can I get it using c++ sdk function?


(Menno Deij - van Rijswijk) #4

Please look in rhinoSdkApp.h for functions with StatusBarProgressMeter in them.

StatusBarProgressMeterStart
StatusBarProgressMeterPos
StatusBarProgressMeterEnd

(Menno Deij - van Rijswijk) #5

I can really recommend this utility

http://www.mythicsoft.com/agentransack

to search header files for information. That is what I use all the time.


(Andrew le Bihan) #6

And, of course, you need to derive a class from CRhinoReduceMeshProgressContext and pass in a pointer to an object of that type to get the callbacks.