HOW TO FIND INTERNAL FREE EDGES IN HYPERMESH BY MACRO

Altair Forum User
Altair Forum User
Altair Employee
edited October 2020 in Community Q&A

Hi everyone,

I have been trying lately to develop a macro to isolate or show internal free edges in a model. Lets say, i am modelling a surface with free edges, after modelling some components ( say 20-30), i would like to check if there are internal free edges or gaps within element in my models ( pls note, not the outside boundary free edges). There is ofcourse , shift+f3 function to check and it requires observing for ourselves. Is there a macro that can isolate the internal free edges as such. Like in FE Gate software, it shows the internal free edges. is it possible in hypermesh?

 

 

Thanks for answering in advance.

 

 

Answers

  • tinh
    tinh Altair Community Member
    edited May 2017

    Hi.

    Interior free edges will be closed to other elems so they can be detected by penetration/proximity checking.

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited May 2017

    Hi Sonu,

    There is a similar script which show only free edges of the displayed components. You can download the same from https://connect.altair.com/CP/script-list.html

     

    <?xml version="1.0" encoding="UTF-8"?>script.PNG

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited May 2017

    hi tinh and johson, thank you for your response

    However, i was more looking at an automated script for internal free edges alone. the script that you refer to is equivalent to the shift+f3 function when performed to the displayed functions. and tinh, intersections sometimes fail to show internal edges bcz, the internal elements may not be connected at all.

    Is there an more accurate solution. I wish i could show you , how it works in FE Gate, there is a function itself called internal free edges that isolates only free edges within the components excluding the boundary edges.

     

    May be my explaination to the question helped you understand my question.

     

     

    thanks again in advance for the answers

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited February 2019

    I am very much new to tcl .. It would be highly appreciable if anyone can help me with the logic

     

    I have a model and it somewhat looks like the one shown in the figure. the free space shown at the centre is also not exactly as that shown in the pic. It can be of any shape. The shape of the free space can be an hole or in a zig zag manner also.

     

    My OBJECTIVE is to fill this free space with MESH.


    So my logic is to find the free edges and mesh the center free edge area. Can anyone please give me some clue how to proceed?

    Is there any similar type of tcl available in script exchange?

    <?xml version="1.0" encoding="UTF-8"?>Example.JPG

  • tinh
    tinh Altair Community Member
    edited February 2019

    Use hm_holedetectioninit

    Then use ruled mesh to fill holes

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited February 2019

    Hi Tinh,

     

    What is the output from hm_holedetectioninit?

     

    How can I get the nodelists to be meshed (ruled option), from the abv command?

  • tinh
    tinh Altair Community Member
    edited February 2019

    Hi

    Look it up in hypermesh reference help

    There is an example there

    Some posts on this forum talk about it also, please search.

  • Q.Nguyen-Dai
    Q.Nguyen-Dai Altair Community Member
    edited February 2019

    Here's my test (shell mesh):

    shell_holes.png.d9fc66de3c84319a9e52c9514817020b.png

     

    From the Doc, testing code is:

     hm_holedetectioninit *createmark elems 1 all hm_holedetectionsetentities elems 1 hm_holedetectionsetholeparams hole_shape=31 hm_holedetectionfindholes 1 set n [hm_holedetectiongetnumberofholes]  if { $n > 0 } {     puts 'Number of holes = $n'     puts 'Holes details'     for {set i 0} {$i < $n} {incr i} {         puts 'i = $i [hm_holedetectiongetholedetails $i]'     } } else {     puts 'Holes not detected.' } hm_holedetectionend

    I got output:

     Number of holes = 2 Holes details i = 0 0 0 {-7.5 127.6883985209 -106.066017178} {1 0 0} {nodes 1139 1140 1141 1142 1143 1144 1145 1146} 0 i = 1 0 0 {-7.5 233.7544156988 -150} {1 0 0} {nodes 1187 1188 1189 1190 1191 1192 1193 1194} 0

    So you have coordinates of each center and node list of hole.

    HTH,

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited February 2019

    Thank you tinh for the valuable suggestion

  • Altair Forum User
    Altair Forum User
    Altair Employee
    edited February 2019

    Hi Nguyen-Dai,

    actually my objective is to close the holes. Not only holes but also what ever shape it has. I want to close the internal free edges i.e. not the free edges which is caused because of node equivalence, but all the free edges because of closed loop. 

     

    can u please help me? 

  • Q.Nguyen-Dai
    Q.Nguyen-Dai Altair Community Member
    edited February 2019

    My example code gives you nothing?

    This is help forum, so please try & try & try & give us error message or somethoing you have tried.

    If you do nothing you can wait for 'One-click' solution, it's your choice.

  • tinh
    tinh Altair Community Member
    edited February 2019

    Above sample script can detect holes and internal free edges, too. From each node list of hole you can close it.

  • brahmadev
    brahmadev Altair Community Member
    edited February 2019

    Hi Nguyen-Dai,

    actually my objective is to close the holes. Not only holes but also what ever shape it has. I want to close the internal free edges i.e. not the free edges which is caused because of node equivalence, but all the free edges because of closed loop. 

     

    can u please help me? 

     

    give a try with *findloops

    Hope this one solves your purpose.