CADxp: nettoyage bloc 3D - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

nettoyage bloc 3D des éléments non 3D

#1 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2127
  • Inscrit(e) : 03-mars 10

Posté 12 avril 2018 - 14:04

hello
je 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 dire
d'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 génie climatique - traitement de l'air
0

#2 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 12 avril 2018 - 14:48

Bonjour,

Tu verrouille le/les calque(s) contenant les objets 3d
Ctrl+A Suppr
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#3 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2127
  • Inscrit(e) : 03-mars 10

Posté 12 avril 2018 - 17:22

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 génie climatique - traitement de l'air
0

#4 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 12 avril 2018 - 22:27

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
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#5 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2127
  • Inscrit(e) : 03-mars 10

Posté 13 avril 2018 - 07:17

le fichier en question
je 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.catuploa...61e3f7f118.html
Phil
Projeteur génie climatique - traitement de l'air
0

#6 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 13 avril 2018 - 07:44

mon antivirus refuse ton fichier :mellow:
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#7 L'utilisateur est hors-ligne   nG! Hebus 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 685
  • Inscrit(e) : 27-août 14

Posté 13 avril 2018 - 07:48

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 !"

Citation

"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."
0

#8 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 13 avril 2018 - 07:56

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.
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#9 L'utilisateur est hors-ligne   nG! Hebus 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 685
  • Inscrit(e) : 27-août 14

Posté 13 avril 2018 - 08:06

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 !"

Citation

"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."
0

#10 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 13 avril 2018 - 08:08

ok, tout a l'heure, quand j'aurais finis mes p'tit plans
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#11 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7698
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 13 avril 2018 - 09:53

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
0

#12 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10926
  • Inscrit(e) : 02-septembre 05

Posté 13 avril 2018 - 12:12

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#13 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7698
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 13 avril 2018 - 13:33

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
0

#14 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10926
  • Inscrit(e) : 02-septembre 05

Posté 13 avril 2018 - 14:08

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#15 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7794
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 13 avril 2018 - 14:08

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 ...
Les bases AutoLisp
0

#16 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7698
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 13 avril 2018 - 15:06

Hello Gilles

1) MERCI c parfait ! ... Super Nettoyage 2D en gardant TOUS les Types d'objet 3D !!
= MAGNIFIQUE

2) **** OOPS SORRY : nouvelle demande ****
<Decapode : Mode "penible" ON>
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 )
<Decapode : Mode "penible" OFF>

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
0

#17 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10926
  • Inscrit(e) : 02-septembre 05

Posté 13 avril 2018 - 15:31

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#18 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2127
  • Inscrit(e) : 03-mars 10

Posté 13 avril 2018 - 16:10

yes
merci à tous les participants
je jete un oeil lundi pour voir comment ça marche
bon week-end, Phil
Projeteur génie climatique - traitement de l'air
0

#19 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7698
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 13 avril 2018 - 17:09

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
0

#20 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1723
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 13 avril 2018 - 23:15

Hop pop
quand on a pas le temps, autant pas pas venir..
ce matin, entre 2 K ...
bon, c'est résolu
y pas de mal, autant pour moi
supprimer les éventuelles blocs vides du coup
ou ignorer les blocs sans objets 3d
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)