hexagon logo

Get Material ID from Element ID

Please suggest an API to get the material ID (24) from the element ID (168126)
 
Attached the sample PCOMPG screenshot.
 
Elements_Material
  • Hi,
    this is an idea of the structure to get the data with pcl.
    note for a single element it has quite a lot of work to do so if called in a big loop one element at a time it is inefficient. However your process can probably be worked with multiple elements/regions etc to minimise the db calls and have fewer larger ones. Or maybe process all laminate data to temporary store the data and then release the storage when you've finished.
    best regards
    Arthur
     
         db_get_region_for_elements
         db_get_region_definition
         db_get_material   
     $ if it is a laminate composite get all the layer materials
         db_get_matl_prop_value_count
     $      size arrays: material word ids,values,fieldids,fieldnames 
           db_get_matl_prop_value
     $ loop over material word ids to find "number of plies" id
     $ get number of plies from the corresponding material word values
     $  size arrays for ply materials,thicknesses,orientations
             db_get_comp_lam_ids_by_id
     $ loop over the ply materials getting their data 
              db_get_material
  • Thanks Arthur and i need to do the same for 1000 elements. Is this optimised method?
  • Hi,
    how you will create the input and use the data will to some extent govern how you would write this. Also the limits on the type of data you want to handle will also give things you must check e.g. your example has a unique material id (24) used for every laminate ply material - layers 1 to 9. In reality each layer could be a different material so how would you handle this.
    In the attached I took some code I had for a similar type of query and quickly modified it to do the type of thing you were asking for. Hopefully it will give you some insight to what is required. This handles multiple ply materials.
    !!Input this PCL function in Patran.
    declare:
    STRING el_list[virtual]
    INTEGER num_elements , max_plys, out_ids(virtual)
    STRING ply_mats[32](virtual)
     
    and call the function:
    ajh_pcomp_ply_mats(el_list, num_elements, out_ids, max_plys, ply_mats)
     

    Attached Files (1)