Bonjour,
Je pense que ca viendra avec le module d'assemblage, mais existe-t-il aujourd'hui un autre moyen pour détecter les collisions entre objets ?
Merci,
++
gdo
Collisions
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Re: Collisions
Salut,
Ça dépend ce que tu entends par collisions. Le terme suppose l'utilisation de mouvements, si ? Si c'est le cas, je ne crois pas que ça soit supporté. D'ailleurs, je serais surpris qu'il y ait dès le départ de la cinématique dans le module d'assemblage.
Si tu ne veux que détecter des interférences entre des pièces immobiles, alors il suffit d'appliquer une opération booléenne d'intersection entre ces formes, et d'analyser le résultat.
Ça dépend ce que tu entends par collisions. Le terme suppose l'utilisation de mouvements, si ? Si c'est le cas, je ne crois pas que ça soit supporté. D'ailleurs, je serais surpris qu'il y ait dès le départ de la cinématique dans le module d'assemblage.
Si tu ne veux que détecter des interférences entre des pièces immobiles, alors il suffit d'appliquer une opération booléenne d'intersection entre ces formes, et d'analyser le résultat.
Re: Collisions
Oui c'est bien cela que je souhaite faire ! Merci pour l'astuce, je n'y aurais pas pensé.normandc wrote:Si tu ne veux que détecter des interférences entre des pièces immobiles, alors il suffit d'appliquer une opération booléenne d'intersection entre ces formes, et d'analyser le résultat.
Re: Collisions
Content que ma réponse soit utile.
Je n'y aurais pas pensé avant non plus ! Mais depuis près de 3 ans que je surveille de très près le développement de FreeCAD, et que je lis le forum des développeurs, j'ai acquis une assez bonne compréhension du fonctionnement sous-jacent des logiciels de CAO 3D en général. Même si très souvent je comprends que dalle aux discussions ! Les opérations booléennes sont abondamment utilisées pour de très nombreuses opérations, mais sont souvent masquées à l'utilisateur.
Par exemple je suis certain que dans Solid Edge (le soft que j'utilise au travail), le calcul d'interférence entre pièces utilise une opération booléenne d'intersection. Il y a d'ailleurs une option pour sauvegarder l'interférence sous forme solide.
Je n'y aurais pas pensé avant non plus ! Mais depuis près de 3 ans que je surveille de très près le développement de FreeCAD, et que je lis le forum des développeurs, j'ai acquis une assez bonne compréhension du fonctionnement sous-jacent des logiciels de CAO 3D en général. Même si très souvent je comprends que dalle aux discussions ! Les opérations booléennes sont abondamment utilisées pour de très nombreuses opérations, mais sont souvent masquées à l'utilisateur.
Par exemple je suis certain que dans Solid Edge (le soft que j'utilise au travail), le calcul d'interférence entre pièces utilise une opération booléenne d'intersection. Il y a d'ailleurs une option pour sauvegarder l'interférence sous forme solide.
Re: Collisions
C'est que ca mériterait presque un petit script python pour automatiser tout ca.
Je vais regarder si ca peut se faire.
Je vais regarder si ca peut se faire.
Re: Collisions
Salut,
Après un petit test :
Il s'avère que pour savoir s'il y a ne collision entre 2 objets, il vaut mieux utiliser la section (et regarder si le nombre de segment est différent de zéro if (len(z.Edges)!=0):) plutôt que la différence...
Après un petit test :
Code: Select all
import time
x=Gui.getDocument("Unnamed").getObject("Sphere").Object.Shape
y=Gui.getDocument("Unnamed").getObject("Sphere001").Object.Shape
t0 = time.clock()
z=x.section(y)
t1=time.clock()
z2=x.common(y)
t2=time.clock()
FreeCAD.Console.PrintMessage( t1-t0)
FreeCAD.Console.PrintMessage( t2-t1)