hexagon logo

PCL; how to get reference csys id (CID) for CONM2 element?

Hello!
I created a group with CONM2 elements. I would like to printout CID for each EID. I cannot figure out how to go from region ID to specific property field.
 
This is piece of code I have:
 
db_get_current_group_id(group_id)
db_get_group_name( group_id,s_name )
   db_count_elems_in_group(group_id, num_elems)
SYS_ALLOCATE_ARRAY(elem_ids, 1, num_elems)
db_get_elem_ids_in_group(num_elems, group_id, elem_ids)
 
FOR (i=1 to num_elems)
eid(1) = elem_ids(i)
db_get_region_for_elements(1, eid, region_ids)
###get_CID
dump str_from_integer(eid(1)) // " - " // ###CID
 
END FOR 
 
Regards,
Adam
Parents
  • Hi! Thank you for the code. I deleted post because I have found a workaround. It is not as elegant as your solution.
     
    FUNCTION get_field_val(field_id, eid)
    INTEGER field_id, eid
    INTEGER ia_method(VIRTUAL)
    INTEGER ia_eid(VIRTUAL)
    INTEGER ia_elem_face(VIRTUAL)
    INTEGER ia_elem_edge(VIRTUAL)
    INTEGER ia_node_pos(VIRTUAL)
    INTEGER ia_nodeid(VIRTUAL)
    REAL   ra_vals(VIRTUAL)
    INTEGER offset_idx 
    INTEGER geom_id, extrap_opt, data_type1, coord_id1, field_type
    INTEGER num_vars, var_type_1, var_type_2, var_type_3, func_1_size
    INTEGER func_2_size, func_3_size, num_var_1, num_var_2, num_var_3
    LOGICAL lin_def
    STRING field_name[31]
    INTEGER field_dim, geom_type, field_var
    db_get_field(field_id, field_name, field_var, field_dim, geom_type,@
    geom_id, extrap_opt, data_type1, coord_id1, field_type, @
    num_vars, var_type_1, var_type_2, var_type_3, func_1_size, @
    func_2_size, func_3_size, lin_def, num_var_1, num_var_2, num_var_3)
    SYS_ALLOCATE_ARRAY(ia_method,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_eid,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_elem_face,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_elem_edge,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_node_pos,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_nodeid,1,num_vars)
    SYS_ALLOCATE_ARRAY(ra_vals,1,num_vars)
    db_get_field_dfem                   @
          (field_id,                       @
          num_vars,                       @
          ia_method,                       @
          ia_eid,                        @
          ia_elem_face,                     @
          ia_elem_edge,                     @
          ia_node_pos,                      @
          ia_nodeid,                       @
          ra_vals )
    offset_idx=mth_array_search(ia_eid, eid, TRUE)
    RETURN ra_vals(offset_idx)
    END FUNCTION
Reply
  • Hi! Thank you for the code. I deleted post because I have found a workaround. It is not as elegant as your solution.
     
    FUNCTION get_field_val(field_id, eid)
    INTEGER field_id, eid
    INTEGER ia_method(VIRTUAL)
    INTEGER ia_eid(VIRTUAL)
    INTEGER ia_elem_face(VIRTUAL)
    INTEGER ia_elem_edge(VIRTUAL)
    INTEGER ia_node_pos(VIRTUAL)
    INTEGER ia_nodeid(VIRTUAL)
    REAL   ra_vals(VIRTUAL)
    INTEGER offset_idx 
    INTEGER geom_id, extrap_opt, data_type1, coord_id1, field_type
    INTEGER num_vars, var_type_1, var_type_2, var_type_3, func_1_size
    INTEGER func_2_size, func_3_size, num_var_1, num_var_2, num_var_3
    LOGICAL lin_def
    STRING field_name[31]
    INTEGER field_dim, geom_type, field_var
    db_get_field(field_id, field_name, field_var, field_dim, geom_type,@
    geom_id, extrap_opt, data_type1, coord_id1, field_type, @
    num_vars, var_type_1, var_type_2, var_type_3, func_1_size, @
    func_2_size, func_3_size, lin_def, num_var_1, num_var_2, num_var_3)
    SYS_ALLOCATE_ARRAY(ia_method,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_eid,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_elem_face,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_elem_edge,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_node_pos,1,num_vars)
    SYS_ALLOCATE_ARRAY(ia_nodeid,1,num_vars)
    SYS_ALLOCATE_ARRAY(ra_vals,1,num_vars)
    db_get_field_dfem                   @
          (field_id,                       @
          num_vars,                       @
          ia_method,                       @
          ia_eid,                        @
          ia_elem_face,                     @
          ia_elem_edge,                     @
          ia_node_pos,                      @
          ia_nodeid,                       @
          ra_vals )
    offset_idx=mth_array_search(ia_eid, eid, TRUE)
    RETURN ra_vals(offset_idx)
    END FUNCTION
Children
No Data