Element generation on point clouds


I want to automatically generate a meshed model in APDL. Since my geometry is irregular and I do not want to use a CAD system, it seems the way to go is to generate a list of nodes and then create elements out of them. I have two questions on that:

1) I know I can use EN and ENGEN to create the elements using a pattern. Is there an alternative that does not require a regular pattern (i. e. that just accepts an array of nodes and arranges the elements suitably) ?

2) With EN and EMORE, we can specify up to 16 nodes for an element, which is insufficient for higher order elements like SOLID186. It is possible to create a SOLID186 using the 8 corner nodes, but when displaying the element list, the remaining 12 nodes are assigned the number 0 and are not shown when activating the displaying of nodes under PlotCtrls. Is there a way to get it right?



  • Elements must have shapes that comply with limits on shape metrics such as skewness, aspect ratio and a lot of other metrics. The ANSYS meshing algorithms are very good at filling a volume with elements that have acceptable shapes. There are geometry algorithms that are very good at fitting geometry to point clouds. I recommend you go this route.

  • So what you say is I should first generate a volume from my point cloud, generate an iges or something and then mesh that volume with Ansys? My problem is that I want to avoid using a separate (non Ansys) program for geometry generation. But Ansys itself seems to support only primitive geometries (cube, sphere, cylinder...) or direct element generation via node numbers which is tedious...

  • Ansys has SpaceClaim and DesignModeler for geometry generation. SpaceClaim is newer and has a scripting language.

    I would like to see what your point cloud looks like, so please attach a zip file with the data if you are willing to share it.

  • Sorry for my late response, I was on holiday for the past week. Thank you for your answer. Here is an exemplary point cloud which creates the surface depicted on the attached jpg when plotted with Matlab. My surfaces are artificially generated from functions, so it would be interesting to know if SpaceClaim can process functions too?

  • peteroznewmanpeteroznewman Member
    edited October 2


    Thank you for the pointcloud. I see you took the coordinate data and reformatted each component vector into a matrix. Not sure why you would do that. Now I need to reformat it into a vector, but I don't know if I should stack by row or by column.

    SpaceClaim has a full scripting language so I expect you can generate surfaces from functions.

    I have matlab, so if you want to share the code that generates the surface, that would be interesting.

  • peteroznewmanpeteroznewman Member
    edited October 3


    You used 100 points around the circle, but you also used 100 points along the Y axis, which seemed like too many points. I reduced that to just ten slices along the Y axis.

    I put those ten slices into the attached text file with a couple of lines of code at the top, and a space between each slice in Y to get ten curves imported into SpaceClaim. Click on the Assembly tab and click the Add File button, then select the text file.

    Then I used the Blend tool to make a surface that connected those ten curves.

    Now you can mesh the surface in Mechanical.

  • pineapplepineapple Member
    edited October 5

    Thanks for your response. The matrix form is due to the fact that Matlab's "surf" function demands matrix instead of vector input, but of course I can easily format the data to fit Ansys requirements. So what I get from the txt file is that an empty line is used to indicate the start of a new curve. Does the import only work with lines or can we also import surfaces or volumes?

    By the way, here is the code i used to generate and plot the points:

    phi = linspace(0,2*pi,100);

    r = 60/2;

    delta = 1.5*sin(5*phi);

    z = ones(100);

    z = z.*linspace(1,10,100);

    z = z';

    x = r*cos(phi)+delta.*cos(phi);

    y = r*sin(phi)+delta.*sin(phi);

    [a,b] = meshgrid(x,y);

    a = a+a.*z(:,1)*0.005;

    b = b';

    b = b+b.*z(:,1)*0.005;





    axis equal

  • @pineapple

    SpaceClaim can import a large number of file formats that can have surface or solid bodies, in addition to what I showed for importing curves through points.

    Vendor neutral files include: ACIS, IGES, Parasolid, Rhino, STEP, STL, VRML.

  • pineapplepineapple Member
    edited October 7

    Thanks once more. The problem is that the neutral file types I know about have a rather complicated syntax and therefore are hard to generate by a script (e. g. in Matlab). Well, in the end I think I can just go with the method you suggested. Regarding the scripting: Is there a way to launch Ansys from the command line with a script as input (rather than launching it manually)?

  • I don't know about scripting. I hope someone else might answer.

  • Ok, no problem. Thank you for your efforts 😉

Sign In or Register to comment.