Home
Reply
Contributor
swapnalir
Posts: 9

Does ACIS have any Mesh Manipulation support??

Hello,

I looked for mesh manipulation features in ACIS but was unable to find much.

 

Can anybody help me getting those

Spatial Employee
vipull
Posts: 7

Re: Does ACIS have any Mesh Manipulation support??

Hi,

 

What kind of mesh manipulation operations are you looking for?

 

Thanks,

 

Contributor
swapnalir
Posts: 9

Re: Does ACIS have any Mesh Manipulation support??

hello,

 

I am looking for following things:

 

1. change the mesh density. (want " more fine" mesh). I tried it setting via facet options. but could nt get any change in output.

2. can i set same number of nodes at shared edge. so that i can get Equivalenced mesh??

 

my first preferences will be above questions.

 

Thanks

Spatial Employee
asdf
Posts: 106

Re: Does ACIS have any Mesh Manipulation support??

Hi.

 

ACIS certainly does have controls which allow you to change how fine the mesh is.  I suggest using facet_options_precise and the methods set_max_edge_length (which causes triangle edges to be split if they are longer than your requested max length) and surface tolerance ( tightening surface tolerance will give more facets where the part is curved.)  Were these the controls you used before?  If so, some more specifics about what you were doing that didn't work would allow me to help you get a better result.

 

Regarding the second requirement: we call this watertightness. Normally you shouldn't have to do anything special to make the facets are watertight.  The easiest workflow is to facet an entire solid all at once using api_facet_entity.  If you facet some but not all of the faces in a body, that should also be watertight as long as you don't delete the attributes which store where the edge facets are.

 

best regards

 

Eric Zenk

Contributor
swapnalir
Posts: 9

Re: Does ACIS have any Mesh Manipulation support??

Thanks,

 

option of setting triangle max length worked.

 

 

Contributor
swapnalir
Posts: 9

Re: Does ACIS have any Mesh Manipulation support??

I did some code for Polygon mesh :  The code worked for values in code.

But nw i m trying with some different values as

 

 

SPAposition * pos_array = ACIS_NEW SPAposition[5];
        pos_array[0] = SPAposition(15.585800,32.236699,0);
        pos_array[1] = SPAposition(15.585800,42.887599,0);
        pos_array[2] = SPAposition(35.254400,42.887599,0);
        pos_array[3] = SPAposition(35.254400,32.236699,0);
        pos_array[4] = SPAposition(15.585800,32.236699,0);
        result = api_make_wire (my_body, 5, pos_array, my_body);

 

 

For those values the code below doesnt give me af_query output.

 

Please help me on this ASAP

 

 

 

following is the code snippet.

API_BEGIN
            
            BODY *body = NULL;
            SPAposition * pos_array = ACIS_NEW SPAposition[7];
        pos_array[0] = SPAposition(1.3341,0.4307,0);
        pos_array[1] = SPAposition(1.3266,-0.1385,0);
        pos_array[2] = SPAposition(0.1852,-0.1610,0);
        pos_array[3] = SPAposition(0.1066,0.5805,0);
        pos_array[4] = SPAposition(0.4958,0.2134,0);
        pos_array[5] = SPAposition(0.7353,0.4943,0);
        pos_array[6] = SPAposition(1.3341,0.4307,0);
 
           
        result = api_make_wire (body, 7, pos_array, body);
          
            ACIS_DELETE [] pos_array;  // De-allocate the array.
 
      
        WIRE * my_wire = body->lump()->shell()->wire();
 
 

        FACE *face = NULL;
        result = api_cover_wire (my_wire, *(surface*)NULL_REF, face);

        result = api_body_to_2d (body);

        MESH_MANAGER * MM = NULL;
        MESH_MANAGER * oldMM;
        
        outcome o1 = api_get_mesh_manager( oldMM );
        check_outcome(o1);
        MM = new INDEXED_MESH_MANAGER;
        
        o1 = api_set_mesh_manager(MM);
        check_outcome(o1);
        REFINEMENT* ref;
        o1 = api_create_refinement(ref);
        
        api_set_entity_refinement((ENTITY *)face, ref, FALSE);
        POLYGON_POINT_MESH *facets = (POLYGON_POINT_MESH*)NULL;

        facet_options_visualization my_opts;
        face_quality_level level;
        level = medium_fine;
        my_opts.set_face_quality(medium_fine);

        facet_options_precise my_opt1;
        my_opt1.set_max_edge_length(0.01);
       

        result = api_facet_entity((ENTITY *)face,&my_opt1);
        result = api_get_face_facets(face,facets);
        check_outcome(result);

        int facetCount = facets->size(); //facets->count();
        
        MESH * face_mesh = NULL;
        af_query((ENTITY*)face, IDX_MESH_APP, IDX_MESH_ID, face_mesh);
        INDEXED_MESH * mesh = (INDEXED_MESH*)face_mesh;