philsogood Posté(e) le 12 avril 2018 Posté(e) le 12 avril 2018 helloje souhaiterai savoir si vous savez comment effacer tous les objets non-3D que l'on peut trouver dans un bloc en 3D.par objet 3D j'entends : ligne, polyligne, arc, cercle, point, ellipse, spline, texte, attribut... enfin je pense que vous voyez ce que je veux dired'habitude je me servais de je ne sais plus quelle fonction qui eprmet de sélectionner des éléments avec des AND ou des OR et qui était plutot pratique mais je ne sais plus comment cette fonction s'appelle et de toute façon elle serait inadaptée car le bloc que je souhaite traiter contient plusieurs blocs.... ce fichier envoyé par un fournisseur qui représente un placard dirons nous, doit comporter à peu près 30 blocs... pas envie de rentrer dans chaque bloc pour effacer tous les objets surperflus... je ne souhaite cependant pas effacer tout ce qui se rapporte à la 3D (car tout n'est pas que des solides 3D - face3D...)Phil Projeteur Revit Indépendant - traitement des eaux/CVC
Fraid Posté(e) le 12 avril 2018 Posté(e) le 12 avril 2018 Bonjour, Tu verrouille le/les calque(s) contenant les objets 3dCtrl+A Suppr https://github.com/Fraiddd
philsogood Posté(e) le 12 avril 2018 Auteur Posté(e) le 12 avril 2018 mauvaise réponse!tous les objets sont compris dans des blocsà moins que je décompose tous les blocs je n'y arriverai pas...Phil Projeteur Revit Indépendant - traitement des eaux/CVC
Fraid Posté(e) le 12 avril 2018 Posté(e) le 12 avril 2018 yop oula, je n'etais pas attentif.. va voir le lisp de Patrick demande si tu as besoin d'un coup de main. si on avait la liste de ce qui faut enlever ou garder, cela serais plus facile. Cordialement https://github.com/Fraiddd
philsogood Posté(e) le 13 avril 2018 Auteur Posté(e) le 13 avril 2018 le fichier en questionje l'ai fait à la mano mais je vais avoir un paquet de ficheirs de ce type et j'ai pas forcément envié de me palucher ça à la main!! :)https://www.catupload.com/download/930a99690a5445da551ee861e3f7f118.htmlPhil Projeteur Revit Indépendant - traitement des eaux/CVC
Fraid Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 mon antivirus refuse ton fichier :mellow: https://github.com/Fraiddd
nG! Hebus Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Salut, Du coup en LISP je vois que ça... ->Dans ta sélection->Ouvre le bloc "Toto1"->Sélection multiple->Supprime tout les objets qui ne sont pas des SOLID,FACE, SURFACE->Enregistre le bloc->Ouvre le bloc "Toto2"->etc Mais alors comment écrire ça en LISP... "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Fraid Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 du coup je le colle (defun c:dsh (/ AcDoc listBlocs vlalistbloc blocks) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) blocks (vla-get-blocks AcDoc) ) (vla-StartUndoMark AcDoc) (and (ssget (list (cons 0 "INSERT"))) (progn (vlax-for b (setq vlalistbloc (vla-get-activeselectionset AcDoc)) (or (member (vla-get-effectivename B) listBlocs) (setq listBlocs (cons (vla-get-effectivename B) listBlocs)) ) ) (vla-delete vlalistbloc) (mapcar '(lambda(e) (vlax-for e (vla-item blocks e) (and (/= "3D*" (vla-get-ObjectName e)) (/= "*3D" (vla-get-PatternName e)) (vla-delete e) ) ) ) listBlocs ) (vla-regen AcDoc acActiveViewport) ) ) (vla-EndUndoMark AcDoc) (princ) ) normalement tu n'as plus qu'a remplacer les *3D et 3D* par les objets que tu veux garder. https://github.com/Fraiddd
nG! Hebus Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Salut Fraid, Est ce que je peux t'embêter et te demander de mettre des commentaires?Car j'ai un peu de mal à lire ce que font les fonctions :)Un genre de pas à pas via les commentaires, si t'a un peu de temps bien sur ;) Cordialement "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Fraid Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 ok, tout a l'heure, quand j'aurais finis mes p'tit plans https://github.com/Fraiddd
lecrabe Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Hello Fraid SNIFF SNIFF je viens de tester ton LSP sur 2 DWGs 3D et j'ai une belle (la meme) erreur : Sélectionner des objets:; erreur: Le serveur ActiveX a renvoyé l'erreur: nom inconnu: PatternName !! Que se passe t-il ? ... Desole le Decapode est "enquiquineur" !! Bye, lecrabe Autodesk Expert Elite Team
(gile) Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Salut, Erreur typique d'un copier/coller avec modifications sans faire de tests...Faudrait voir à écouter didier un peu ! (defun c:d2d (/ doc blocks lst ss) (vl-load-com) ;; obtenir le document actif et sa collection de définitions de bloc (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) blocks (vla-get-blocks doc) ) ;; démarrer un groupe d'annulation (vla-StartUndoMark doc) ;; si l'utilisateur sélectionne des block (if (ssget (list (cons 0 "INSERT"))) (progn ;; collecter les noms des blocs sans doublons (vlax-for b (setq ss (vla-get-activeselectionset doc)) (or (member (vla-get-effectivename B) lst) (setq lst (cons (vla-get-effectivename B) lst)) ) ) ;; supprimer le jeu de sélection (vla-delete ss) ;; pour chaque nom de bloc de la liste (foreach name lst ;; pour chaque entité contenue dans la définition de bloc (vlax-for ent (vla-item blocks name) ;; si l'objet n'est pas un solide 3d, une surface ou un maillage (if (not (wcmatch (vla-get-ObjectName ent) "*3dSolid,*Surface,*SubDMesh")) ;; supprimer l'objet (vla-delete ent) ) ) ) ;; régénérer la fenêtre active (vla-regen doc acActiveViewport) ) ) ;; terminer le groupe d'annulation (vla-EndUndoMark doc) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Hello Gilles 1) MERCI c parfait ! ... Super Nettoyage 2D (et aussi 3D) 2) MAIS SVP quel serait la Modif (Nouvelle version) pour garder (si necessaire) aussi : - 3D Faces - 3D Polys - 3D PolyMesh (Assemblages de 3DFaces) 3) Merci d'avance, car j'ai des Blocs 3D avec un JOLI melange dans les entites 3D ! Bye, lecrabe Autodesk Expert Elite Team
(gile) Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 En remplaçant :"*3dSolid,*Surface,*SubDMesh"par :"*3dSolid,*Surface,*Mesh,*3dPolyline,*Face"on retiendra les solides 3d, tous types de surfaces, tous types de maillages, le polylignes 3d et les faces 3d Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Coucou Ahahah ! Hihihihi!J'ai failli écrire un message tout à l'heure, sur un autre forum, à propos des effets pervers du copier-coller, mais la peur de me faire sermonner par la vindicte des utilisateurs de cette manie photocopieuse m'a fait reculer. Et vla-t'y pas que quelques heures après (gile), lui-même, entonne mon antienne pour morigéner ceux qui s'y adonnent !Moi je dis : je suis un prophète,Il a un gourou sur le site, grand gourou même, maintenant il y a un pro-fête ce qui est toujours mieux que pro-s'tâte. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Hello Gilles 1) MERCI c parfait ! ... Super Nettoyage 2D en gardant TOUS les Types d'objet 3D !!= MAGNIFIQUE 2) **** OOPS SORRY : nouvelle demande **** MAIS SVP j'aurais eventuellement besoin de traiter les Sous-Blocs qui sont eux-memes des assemblages d'elements 2D et 3D ... ( Et la routine actuelle supprime automatiquement les Sous-Blocs ) 3) Merci d'avance, car j'ai des Blocs 3D avec un JOLI melange dans les entites 3D !et aussi MALHEUREUSEMENT de Sous-Blocs avec de la 2D et 3D ... ARBRE 3D : = n Blocs de Tronc/Branches 3D + N Blocs de Feuilles = Blocs de 3DFaces + parfois N Elements 2D (parfois dans les Sous-Blocs) que je ne veux pas garder !? Bon WE a TOUS et La Sante, Bye, lecrabe Autodesk Expert Elite Team
(gile) Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Cette version traite récursivement les blocs imbriqués EDIT: version corrigée, il y avait une faute d'orthographe ("AcDbblockReference" au lieu de "AcDbBlockReference") (defun c:Block_3D_Only (/ doc blocks lst ss) (vl-load-com) ;; obtenir le document actif et sa collection de définitions de bloc (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) blocks (vla-get-blocks doc) ) ;; supprimer récursivement de la définition de bloc tous les objets autres que : ;; solide 3d, surfaces, maillages, polylignes 3d, faces 3d. (defun remove2dobjects (block) (vlax-for ent block (if (not (wcmatch (vla-get-ObjectName ent) "*3dSolid,*Surface,*Mesh,*3dPolyline,*Face" ) ) (if (= (vla-get-ObjectName ent) "AcDbBlockReference") (remove2dobjects (vla-Item blocks (vla-get-EffectiveName ent)) ) (vla-delete ent) ) ) ) ) ;; démarrer un groupe d'annulation (vla-StartUndoMark doc) ;; si l'utilisateur sélectionne des block (if (ssget (list (cons 0 "INSERT"))) (progn ;; collecter les noms des blocs sans doublons (vlax-for br (setq ss (vla-get-activeselectionset doc)) (or (member (vla-get-effectivename br) lst) (setq lst (cons (vla-get-effectivename br) lst)) ) ) ;; supprimer le jeu de sélection (vla-delete ss) ;; pour chaque nom de bloc de la liste (foreach name lst ;; pour chaque entité contenue dans la définition de bloc (remove2dobjects (vla-Item blocks name)) ) ;; régénérer la fenêtre active (vla-regen doc acActiveViewport) ) ) ;; terminer le groupe d'annulation (vla-EndUndoMark doc) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
philsogood Posté(e) le 13 avril 2018 Auteur Posté(e) le 13 avril 2018 yesmerci à tous les participantsje jete un oeil lundi pour voir comment ça marchebon week-end, Phil Projeteur Revit Indépendant - traitement des eaux/CVC
lecrabe Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Hello Gilles MERCI MERCI pour la correction ULTIME suite a l'exemple que je t'ai envoye... Bon WE, Bye, lecrabe Autodesk Expert Elite Team
Fraid Posté(e) le 13 avril 2018 Posté(e) le 13 avril 2018 Hop popquand on a pas le temps, autant pas pas venir..ce matin, entre 2 K ...bon, c'est résoluy pas de mal, autant pour moisupprimer les éventuelles blocs vides du coupou ignorer les blocs sans objets 3d https://github.com/Fraiddd
philsogood Posté(e) le 16 avril 2018 Auteur Posté(e) le 16 avril 2018 super, ça marche du feu de dieu ton lisp (gile) !! :)merciPhil Projeteur Revit Indépendant - traitement des eaux/CVC
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