jimy-byerley / pymadcad

Simple yet powerful CAD (Computer Aided Design) library, written with Python.
https://madcad.netlify.app/
GNU Lesser General Public License v3.0
208 stars 16 forks source link

Boolean Operations Through Meshes #4

Closed charlotte10170 closed 3 years ago

charlotte10170 commented 3 years ago

Hi, I've been trying to compute boolean operations between two meshes, one of which has been imported from outside and read by "madcad.read" command and the other one generated through the "madcad.brick" , but I got this type of error: "Process finished with exit code -1073741819 (0xC0000005)".
Does anyone have any suggestions on how to cope with this problem? Thanks a lot in advance

jimy-byerley commented 3 years ago

Hello and welcome !

Not sure yet with so few details. The output Process finished with exit code -1073741819 (0xC0000005) makes me think of a memory corruption due to some compiled code :thinking: It can be due to 2 different things: some functions of madcad.core used in the boolean operations, or to the display functions (the Qt library)

To decide which of the 2, can you check if the error happens during the boolean operation or during display ?

Can you share more details about what you are trying to do ?

charlotte10170 commented 3 years ago

Hi, sorry for the delay in answering you, but, in the meantime, I've installed the last repository version of pymadcad and made other trials in order to compute the same boolean difference between an imported mesh and a cutting plane. For better understanding, I attach the image of the intersection between the mesh and the cutting plane, and the final result of the boolean difference.
plane and mesh boolean result

As you can notice, the function returns only the limited region affected by the presence of the cutting plane, maybe the triangles undergoing a change during the boolean operation, excluding all the rest. Do you have any suggestions on how to avoid this error? Thanks a lot in advance for the help you can provide me

charlotte10170 commented 3 years ago

Hi jimmy-byerley, I am writing to inform you that, finally, I was capable to solve the problem. In particular, it related to the imported mesh which evidently had some irregularities, perhaps due to the import phase. I proceeded, therefore, to fix it by using the "madcad.finish ()" function, through which it was possible to implement the Boolean difference without the problems described above. I apologize for the inconvenience but thanks anyway for your prompt reply

jimy-byerley commented 3 years ago

Oh well ! I'm glad to know that this was not a bug in the end :) I suppose the imported mesh had some overlapping geometries, and that calling Mesh.mergeclose() in method Mesh.finish did fixed it.

You're welcome for any other question :+1: