Aller au contenu

AUTOMATISER LE NETTOYAGE DE SOLIDE 3D


famaice

Messages recommandés

Bonjour à tous,

 

Une fois n'est pas coutume, j'ai récupéré sur AutoCAD une maquette numérique 3D d'un batiment venant de CATIA. Le problème est que j'arrive sans (trop) de soucis à transformer le surfacique en solide mais cela génère des solides "dégueulasses" avec plein de faces partout !! :(

J'utilise la fonction "NETTOYER" (commande _SOLIDEDIT) pour obtenir des solides plus propres. Le problème est que j'ai un grand nombre de solides à traiter et que cette commande ne traite pas en lots (c'est un solide à la fois). <_<

 

Je cherche donc à automatiser cette action mais je n'ai pas le temps en ce moment d’écrire cette macro. L'idée serait de :

1 Lister tous les solides 3D contenu dans le dessin en cours,

2 Prendre un solide dans la liste, le nettoyer puis passer au suivant jusqu'à ce que la liste soit vide,

 

Est-ce que quelqu'un a du temps pour rédiger ce genre de macro ? :mellow:

 

Merci d'avance,

 

Fabrice

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Essaye cela, je ne peux pas tester sur tes solides

si cela ne fonctionne pas, envoye en un pour que l'on puisse tester

 

(defun c:netsol (/ sols nb)
(setq sols (ssget "_x" '((0 . "*solid")))
     nb (sslength sols)
)
  (if nb
   (repeat nb
    (command "_SOLIDEDIT" "C" "N" (ssname sols nb))
    (setq nb (- nb 1))
   )
  )
(princ (strcat "\n" (itoa (sslength sols)) " Solides 3D traitées."))
(princ)
)

 

dit moi si ça marche

Lien vers le commentaire
Partager sur d’autres sites

@Fraid,

Attention :

- ton jeu de sélection prend aussi les solides 2d (SOLID)

- tu testes si ton jeu de sélection n'est pas nil après l'avoir utilisé dans (sslength ...)

 

(if (setq sols (ssget "_X" '((0 . "3DSOLID))))
 (repeat (setq nb (sslength sols))
   (command "_SOLIDEDIT" "C" "N" (ssname sols (setq nb (1- nb))))
 )
)

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

Merci, Gile

 

tu as un oeil de gabian

comme je me refuse le plus possible de copier coller, je fait des fautes.

 

le code mise à jour

 

(defun c:netsol (/ sols nb)
 (if (setq sols (ssget "_X" '((0 . "3DSOLID))))
   (repeat (setq nb (sslength sols))
     (command "_SOLIDEDIT" "C" "N" (ssname sols (setq nb (1- nb))))
  )
 (princ (strcat "\n" (itoa (sslength sols)) " Solides 3D traitées."))
 (princ)
)

Lien vers le commentaire
Partager sur d’autres sites

Merci, Gile

 

tu as un oeil de gabian

comme je me refuse le plus possible de copier coller, je fait des fautes.

 

le code mise à jour

 

(defun c:netsol (/ sols nb)
 (if (setq sols (ssget "_X" '((0 . "3DSOLID"))))
   (repeat (setq nb (sslength sols))
     (command "_SOLIDEDIT" "C" "N" (ssname sols (setq nb (1- nb))))
   )
   (princ (strcat "\n" (itoa (sslength sols)) " Solides 3D traitées."))
   (princ)
 )
)

 

Bonjour les amis,

 

Merci d'avance pour le coup de main ! ;)

Après correction d'une erreur de syntaxe (une apostrophe manquante) et d'une parenthèse manquante (corrigé dans le code ci-dessus), j'ai testé la routine et j'ai 2 problèmes :huh: :

1. Une fois la routine chargé, il ne trouve pas la commande netsol.

2. Dans l'editeur VLISP, après une vérif., j'ai comme erreur un nombre d'arguments trop important dans la boucle IF

 

Je regarde ça ce midi entre la poire et le dessert et je vous tiens au jus ! Entre temps, je finis de réceptionner mes 1600 platines et 460 rails prescellées de mon bâtiment... <_<

 

Bien à vous,

Fabrice

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

(defun c:netsol (/ sols nb)
 (if (setq sols (ssget "_X" '((0 . "3DSOLID"))))
   (progn
     (repeat (setq nb (sslength sols))
(command "_SOLIDEDIT" "C" "N" (ssname sols (setq nb (1- nb))))
     )
     (princ (strcat "\n" (itoa (sslength sols)) " Solides 3D traitées."))
   )
   (princ)
 )
)

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

Hello Mr Famaice

 

SVP peux tu nous donner un lien de Download de l'un de tes dessins 3D CATIA

( Si ce n'est pas Top-Secret !? )

particulierement MOCHE en 3DSOLID AutoCAD avant nettoyage

et superbe apres nettoyage grace a la commande _SOLIDEDIT ?

 

Si possible le fichier CATIA original et le DWG ...

 

Merci, Bye, lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Hello Mr Famaice

 

SVP peux tu nous donner un lien de Download de l'un de tes dessins 3D CATIA

( Si ce n'est pas Top-Secret !? )

particulierement MOCHE en 3DSOLID AutoCAD avant nettoyage

et superbe apres nettoyage grace a la commande _SOLIDEDIT ?

 

Si possible le fichier CATIA original et le DWG ...

 

Merci, Bye, lecrabe

 

Salut,

J'peux pas ! Ça concerne un gros projet international confidentiel... sur lequel tous les ingés du Sud de la France travaillent. ;)

Désolé...

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

(defun c:netsol (/ sols nb)
 (if (setq sols (ssget "_X" '((0 . "3DSOLID"))))
   (progn
     (repeat (setq nb (sslength sols))
(command "_SOLIDEDIT" "C" "N" (ssname sols (setq nb (1- nb))))
     )
     (princ (strcat "\n" (itoa (sslength sols)) " Solides 3D traitées."))
   )
   (princ)
 )
)

 

Un (Progn)... quel con, j'y pensais pas. :angry:

Un grand merci Gile pour ton assistance bienveillante :)

Je teste et vous tiens au jus

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonjour à tous,

 

Bon la conversion de ce fichier CATIA a été reprise par un collègue B)

Il a pris le temps de préciser la manip à réaliser. Voici donc les différentes étapes pour nettoyer et convertir en solide 3D que l'on souhaiterait automatiser.

Bonjour,

J'aurais besoin d'aide pour créer une macro.

 

Mon fichier Autocad (import CATIA) est constitué de plus de mille Blocs dont le nom commence par "CGR" (exemple "CGR3341"). A l'intérieur du Bloc, il y a un ou plusieurs objet(s) maillé(s).

 

Je dois transformer les objets maillés en Solid3D (ou en Surface si ça ne fonctionne pas) en Solid3D.

 

Ma méthode :

1. J'insère un Bloc "CGR" n'importe où dans l'espace objet.

2. J'édite le Bloc dans le dessin même.

3. Je sélectionne tous les objets maillés à l'intérieur.

4. Je lance la commande "convtosurface" (conversion du maillage définie sur: A facettes et optimisé),

puis, je les re-sélectionne et je lance la commande "convtosolid" (conversion du maillage définie sur : A facettes et optimisé).

5. J'enregistre les modification du bloc.

6. Je le supprime.

et je recommence sur le cgr suivant.

 

Mon idée :

1. Faire un tableau qui liste tous les blocs commençant par "CGR".

2. Insérer le premier de la liste dans l'espace objet.

3. Faire la manip de conversion. (éditer le bloc, tout sélectionner, convertir en surface, tout sélectionner, convertir en solide, enregistrer l’édition du bloc)

4. Supprimer le bloc de l'espace objet.

5. Insérer le bloc suivant de la liste.

 

Merci pour ton aide

 

Sachant que l'on est tous à un moment donné confronté à des conversions de fichiers CAO :angry: , cette macro pourrait servir à d'autres camarades dessineu' :P et donc partagé avec vous tous.

 

Question : Est ce que ce genre de macro est faisable ? Si oui, merci d'avance pour ceux qui se lancerait dans le développement d'une telle macro. (Je sais que gérait les blocs et les objets 3D en LISP est laborieux (qui a dit chiant ?).

 

Bien à vous tous,

 

NB : La variable FACETERSMOOTHLEV est réglé sur 0

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

ITER ?

 

Bye, lecrabe

 

Bon Dieu, v'la que le Crabe est aussi devin... :D

 

J'arrive pas à mettre un dwg en PJ pour faire les tests. Donne moi ton adresse mail par message privé pour que je puisse te l'envoyer. Sur CadXP, j'ai une erreur serveur dés que je veux joindre un fichier.

 

Bien à toi, camarade !!

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Le pourquoi et le comment pour joindre des PJ et afficher des images : Mon lien

 

Cordialy.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

cadxp at hotmail point fr

 

Merci d'avance, Bye, lecrabe

 

PS: cela fait longtemps que l'on ne peut plus joindre des fichiers sur cadxp.com !

 

Mail envoyé avec la pj !

""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA

Lien vers le commentaire
Partager sur d’autres sites

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é