Aller au contenu

Extraire surface d'un solide3D (AutoLisp)


GautierVsr
 Partager

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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 😎

http://www.abcad.fr/images/logo_courrier.png


Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.

(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Citation

si on explose un solide

Je confirme, les copier sur place en les plaçant dans un calque temporaire avant de les exploser.

on se retrouve avec des régions facile à interroger.

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Voici un plugin Russe permettant la mise à plat de chaque solide 3D : https://apps.autodesk.com/ACD/fr/Detail/Index?id=4521520962883858766&appLang=en&os=Win32_64

Cela est donc possible !

P.S : est-il possible de rentrer dans le code de ce plugin et de s'inspirer de la méthode utilisée ?

 

Lien vers le commentaire
Partager sur d’autres sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
 Partager

×
×
  • 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é