limits of fuse operation ...
I am having problems with a normal fuse operations.
I am fusing together several solid cylinders using a .py script, but after few of them i
obtain a message :"MakeBoolean : Fuse operation can not be performed on the given shapes "
Given the fact that the two shapes are a cylinder and another shape made of cylinders i do not understand the message.
So i was wondering if the fuse operation has any technical hidden limitations...
thank you
francesco
|
|
Hi Francesco
Probably, either one of your initial shapes or a result of intermediate fuse is not a solid. Maybe your "another shape made of cylinders" contains not only solids? If you've got a compound, explode it into sub-shapes on type "shape" to see types of items of the compound.
St.Michael
Yes, when i fuse the cylinders something goes wrong, the result shape has surfaces. Which starting from solid it should not happen ...
i reported also here:http://www.salome-platform.org/forum/forum_10/688831464/view .
Thus i was thinking to a coding limitation like 10 fuse operations, or simply a bug, or my Salome' installation has some problems...
ideas?
unfortunately to study some random effect in a regular structure i was hoping to do something like 1000s fuse operations...
thank you
francesco
There are always the same problems with multiple boolean operations: they are long, take much memory and there are bugs. With your structure3.py you face the latter of these problems.
I suppose you have not coped with an approach I proposed in your other thread? http://www.salome-platform.org/forum/forum_10/151095632
St.MichaelHello Francesco,
Endeed, I looked to your script and the fusion between Cylinder 2 and 3 is not a solid. It seems that it is not possible to fuse them by this way.
In Salome it sometimes happens that "normal" fusion, intersection, partition, etc. doesn't work without "logical" reason from a user point of view.
But the fusion between Cylinder 1 and 2 works well. So, maybe you can reproduce Cylinder 1 / 2 situation between the cylinder 2 and 3. In other words, you can split the Cylinder 2 at its middle and rotate the side touching the Cylinder 1 by 180 degrees, so the Cylinder 2 be replaced by two halfs of Cylinder 2. Then you can fuse each half Cylinder 2 with the Cylinder 1 and 3 respectively (it works), and then fuse these two fusions.
Below is a picture of what I mean. I tested it and it works.
William
the problem is that i would like to build an irregular structure, meaning to give a random displace to each node.
thus the minimal building block will became the single cylinder. So for this case i don't see alternatives to the boolean.Do you?
If i fail the irregular approach i may go back to a regular structure and try to use the shell approach...
Any other idea?
thank you
for the help
francesco
Thank you,
the problem is that i was planning to automatically build up a structure with 100s cylinders (or even 1000s). if the "critical" fuse operation are few i can think of fixing them manually, otherwise no. The fact that i have problems already after about 10 cylinders leave me little hope that i will succeed with this approach.
Do you think that the problem is related to accuracy? is there a way to decrease the accuracy of Salome such the it sees "less smooth" volumes and surfaces? may this help? do you see what i mean?
really any idea is well come. thank you a lot for helping...
francesco
Previously William Tougeron wrote:
Hello Francesco,
Endeed, I looked to your script and the fusion between Cylinder 2 and 3 is not a solid. It seems that it is not possible to fuse them by this way.
In Salome it sometimes happens that "normal" fusion, intersection, partition, etc. doesn't work without "logical" reason from a user point of view.
But the fusion between Cylinder 1 and 2 works well. So, maybe you can reproduce Cylinder 1 / 2 situation between the cylinder 2 and 3. In other words, you can split the Cylinder 2 at its middle and rotate the side touching the Cylinder 1 by 180 degrees, so the Cylinder 2 be replaced by two halfs of Cylinder 2. Then you can fuse each half Cylinder 2 with the Cylinder 1 and 3 respectively (it works), and then fuse these two fusions.
Below is a picture of what I mean. I tested it and it works.
William
Hello,
It is not perfect, but it seems that if you slightly increase the cylinder length, for example 1.001 instead of 1.000, it works.
Besides, if deal with great number of elements in a script, I recommend you to use arrays. I re-wrote your script with my style to show you what I mean.
Hope it helps.
William
Thank you very much William,
I tested your suggestion of 1.001, thank you also for rewriting the full script, i am still studying it...
francesco
