GautierVsr Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 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 : 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 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 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
didier Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
GautierVsr Posté(e) le 1 juillet 2022 Auteur Posté(e) le 1 juillet 2022 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
didier Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 3 juillet 2022 Posté(e) le 3 juillet 2022 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. 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 3 juillet 2022 Posté(e) le 3 juillet 2022 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 1 Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 4 juillet 2022 Posté(e) le 4 juillet 2022 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 ./__\. (.°=°.)
Fraid Posté(e) le 4 juillet 2022 Posté(e) le 4 juillet 2022 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. https://github.com/Fraiddd
lecrabe Posté(e) le 4 juillet 2022 Posté(e) le 4 juillet 2022 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
GautierVsr Posté(e) le 4 juillet 2022 Auteur Posté(e) le 4 juillet 2022 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 ?
didier Posté(e) le 4 juillet 2022 Posté(e) le 4 juillet 2022 Bonjour @GautierVsr On a toujours dit que c'était compliqué, jamais dit que c'était impossible. Je n'ai pas les qualités pour cracker de code, et je ne pense pas que quelqu'un le proposera. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 4 juillet 2022 Posté(e) le 4 juillet 2022 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant