Aller au contenu

Extraire surface d'un solide3D (AutoLisp)


Messages recommandés

Posté(e)

Bonjour, néophyte sur Lisp et dans le cadre d'un projet, je cherche à extraire la plus grande des surfaces d'un solide3D et à l'aligner avec le plan (o, x, y) du SCG.

J'ai plusieurs manipulations possibles que je fais manuellement sur l'espace graphique et qui pourraient être retranscrites en Lisp :

  1. sur un solide3D, je définis ou nouvel SCU par face en le posant sur sa face la plus grande. Je copie le solide, je reviens à mon SCG et je colle le solide. Ce nouveau solide aura sa face la plus grande alignée avec le SCG
  2. soit, avec la commande aligner3D, je sélectionne mon solide, je sélectionne 3 points de départ qui sont 3 de mes côtés constituants sa face la plus grande. Puis je sélectionne 3 points d'arrivée dans le vide (donc Z=0) et le solide se place avec sa face plane à (o, x, y) de mon SCG
  3. soit en utilisant le "moment principal et la directions X-Y-Z autour du centre de gravité" du solide. Ces données sont disponible à l'aide de la commande PROPMECA

Je pense que les 2 premières sont les plus faciles à exploiter.

Il faudrait donc dans un premier temps extraire l'aire la plus grande de toutes les surfaces composant le solide3D. Pour cela, la commande "aire" "objet" renvoie la somme des surfaces d'un objet. J'aimerais pouvoir en extraire uniquement la surface la plus grande. Puis seconde étape, aligner cette surface au plan (o, x ,y) de mon SCG.

Est-ce que quelqu'un aurait une idée ? Un début de code ?

En attendant vos retours ! 😄

Amicalement,

Gautier

Posté(e)

Bonjour @GautierVsr

Deux choses sont contradictoires, être néophyte en Lisp et s'attaquer aux solides.
La première n'est absolument pas grave, c'est un passage temporaire, le néophyte laisse la place à l'apprenti qui deviendra expert à force de patience et de ténacité.
La deuxième, les solides, c'est la pire des choses à envisager pour commencer la programmation dans AutoCAD.
C'est très complexe et seuls de grands experts confirmés sont capables d'intervenir dans ce domaine.
Décoder les solides ACIS a été réalisé par Owen Wengerd il y a plus de vingt ans, mais le résultat reste perfectible.

Pour ce qui de votre problème, on peut rapidement sortir deux-trois renseignements sur un solide, mais pas assez pour régler le souci évoqué.

(giles) a fait une dll à ce sujet, mais je n'en sais guère plus, mais ce n'est pas du Lisp.

J'ai regardé le souci et je n'ai pas encore une quelconque solution à livrer, je continue à temps perdu et reviendrai si j'y arrive.

Pour quitter la période néophyte, je me permets de vous conseiller de s'attaquer à des soucis mieux cernés.

Amicalement

 

Posté(e)

Bonjour @didier,

En guise de première étape, extraire la plus grande surface d'un solide ne me semble pas insurmontable, puisque la commande "aire" par "objet" fait la somme de toutes les surfaces de l'objet. Si on arrivait à avoir le code lisp de cette commande, il "suffirait" d'extraire la plus grande de toutes plutôt que des les additionner.

Qu'en dites vous ?

Chaleureusement,

Gautier

Posté(e)

Bonjour @GautierVsr

C'est loin d'être aussi simple que ça ! très très loin...

La commande AIRE ne calcule rien, mais interroge une propriété.

Comme je disais précédemment, je continue à chercher, mais j'ai des soucis, car plein de questions d'autres intervenants, et en plus je vais devoir m'arrêter pendant quinze jours, alors il ne faut pas m'en vouloir si la réponse traine.

Sans compter qu'il n'y aura peut-être pas de réponse positive.

Amicalement

Posté(e)

Salut,

Comme l'a dit @didier les données des solides 3D AutoCAD autres que les "propiétés mécaniques" sont pas accessibles en LISP (ni en Visual LISP/VBA) et dans des environnements de programmation plus puissants (donc plus complexes) comme ObjectARX ou .NET, Autotodesk n'expose que la "représentation des contours" (Boundary Representation) qui n'est pas simple du tout à exploiter.

Il me semble que le problème n'est pas pris dans le bon sens. Au moment où les solides 3D sont construits, les données géométriques que tu cherches à obtenir a posteriori sont connues puisqu'elle servent à construire ledit solide.
Une solution serait donc de construire ce solide via un petit programme LISP en récupérant ces données et en les attachant au solide créé via les données étendues ou un dictionnaire d'extension. Il suffirait ensuite de récupérer ces données.

  • Like 1

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Coucou

Pas mal du tout ton idée (gile) !
Tu devrais te mettre à la programmation, je suis certain que tu ferais des étincelles (hihi)

Blague à part, la programmation est un TOUT, et penser un problème "à la base" est typique d'un bon programmeur
Quant, nous autres les débutants, on s'échine à faire avec ce qu'on a, toi tu cherches une autre direction qui est sans doute la vraie.

Amicalement

  • Like 1
Posté(e)

Pourtant, si on explose un solide, on trouve facilement les aires de chacun des objets....

Ca devrait donc pouvoir se faire en lisp ! Et assez facilement... 

Sur ce... 

Je retourne à mes dessins 😎

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Hello

OUI j ai souvent copie des 3DSolids en Ortho à XX unités des originaux pour bricoler ...

Et après eventuellement les "ramener" en ayant préalablement effacé les originaux ...

La Sante, Bye, lecrabe 

 

Autodesk Expert Elite Team

Posté(e)

Certes, si on décompose un solide 3d comme le suggèrent @Tramber et @Fraid , les faces planes génèreront des régions dont on peut obtenir l'aire mais guère plus, le régions fournissent aussi peu d'informations géométriques que les solides 3d et il faudra les décomposer à leur tour pour obtenir leurs contours. On est à peu près rendu au même point qu'avec la "représentation des contours" (CF ce sujet).

Pour ma part je reste convaincu que les solides 3d d'AutoCAD (avec les régions et surfaces) sont les entités les moins bien adaptées quand il s'agit de récupérer des données géométriques ou autre.
Si on veut utiliser un dessin AutoCAD comme "base de donnée" avec représentation graphiques, ce sont les blocs qui permettent le plus facilement de stocker des données facilement récupérables (via les attributs et, éventuellement les propriétés dynamiques) en affichant des entités graphiques.
Créer des blocs qui contiennent des attributs pour les données et un ou plusieurs solides 3d pour l'illustration graphique est à mon avis, le moyen le plus adapté pour pouvoir à la fois présenter un dessin en 3d et pouvoir utiliser ces données.

 

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité