Aller au contenu

Messages recommandés

Posté(e)

Bonjour le monde,

est-ce que la commande OVERKILL est censé supprimer aussi les BLOCS en double?

Je pose la question parce que sur mon PC elle supprime tous les doublons sauf les BLOCS!

Est-ce que quelqu'un pourrait me dire pourquoi?

Le cas échéant est-ce que quelqu'un a dans un fond de tiroir un petit lisp qui peut supprimer les blocs en double?

Merci beaucoup par avance.

Bonne fin de journée à tous.

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Posté(e)

Salut,

 

Je crois qu'en fait ce n'est pas une option d'overkill, et ca me parait tout à fait

normal, car les blocs pour être sûr que les deux blocs soient identiques, il faut vérifier

le point d'insertion, l'angle de rotation, le sens, les échelles, mais aussi tout ce qui le compose

(attributs en particulier).

 

Ca me parait très chaud pour faire ca, déjà que mon gros challenge en lisp serai de créer des

blocs en vérifiant que si des entités du dessin peuvent former un bloc qui existe, serai

justement de les remplacer par le bloc.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Tiens un lisp publié sur qq part sur autodesk pour supprimer les doublons de blocs

 

  ;**********************************************************************************************************************************************************
;;;    DEL_BLK.LSP
;**********************************************************************************************************************************************************
;Supprime les superpositions de blocs (même nom, même calque, même point d'insertion, même rotation, mêmes échelles)

(defun c:deldup_blk (/	    ss	   ssdup  ct	 len	e      eb
	     pt	    lay	   bname  ang	 sclx	scly   sclz
	     obj    obj_list
	     )

 (princ "\nSelect block objects.")
;Select objects and filter all but block insert objects.
 (setq ss (ssget (list (cons 0 "INSERT"))))
 (if ss ;If any valid objects were selected.
   (progn
     (princ "\nBuilding list of objects.")
     (setq ssdup (ssadd))
;Initialize new selection set to hold objects to delete
     (setq len (sslength ss))
;Find out how many objects were selected.      
     (setq ct 0)
     (while (< ct len) ;Loop through selected objects
(setq e (ssname ss ct)) ;Get an object name
(setq eb (entget e)) ;Get the entity list from the object name
(setq ct (+ ct 1)) ;Increment index into selection set
(setq pt (cdr (assoc 10 eb))) ;Access object's coordinate
(setq lay (cdr (assoc 8 eb))) ;Access object's layer
(setq bname (cdr (assoc 2 eb))) ;Access object's block name
(setq ang (cdr (assoc 50 eb))) ;Access object's rotation angle
(setq sclx (cdr (assoc 41 eb))) ;Access object's x scale
(setq scly (cdr (assoc 42 eb))) ;Access object's y scale
(setq sclz (cdr (assoc 43 eb))) ;Access object's z scale 
;Make list of object properties
(setq obj (list pt lay bname ang sclx scly sclz))

(if (not (member obj obj_list))
;If these properties are not already in list
  (setq obj_list (cons obj obj_list)) ;Add them to the list
  (ssadd e ssdup) ;Else add object to selection set to delete
  ) ;End if
) ;End of while loop

     (if (> (sslength ssdup) 0)
;If there are any objects in the selection set to delete
(progn
  (princ "\nDeleting duplicate objects.")
  (setq len (sslength ssdup))
;Find out how many many objects to delete.      
  (setq ct 0)
  (while (< ct len) ;Loop through objects and delete.
    (setq e (ssname ssdup ct)) ;Get object name
    (setq ct (+ ct 1)) ;Increment index into selection set
    (entdel e) ;Delete duplicate object
    ) ;End of while loop

  (princ ;Print the number of objects deleted to command line 
    (strcat "\nDeleted "
	    (itoa len)
	    " duplicate objects."
	    ) ;_ Fin de strcat
    ) ;_ Fin de princ
  ) ;End progn
(princ "\nNo duplicates found.")
;Else no there were no duplicates to delete.
) ;End if

     ) ;End progn
   (princ "\nNo block objects selected.")
;Else there were no valid objects selected
   ) ;End if
 (princ)
 ) ;_ Fin de defun
(prompt
 "\ndeldup_blk : Supprimer les superpositions de blocs"
 ) ;_ Fin de prompt

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

LUDWIG t'es un big chef!

Ce lisp marche du tonnerre et en plus c'est exactement ce qu'il me fallait. :heartpump:

Merci encore et à bientôt.

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Posté(e)

oh j'ai juste eu besoin un jour de ce programme... mais c'est ni moi qui l'ai conçu, ni moi qui l'ai trouvé !

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

T'est modeste c'est bien! :angel:

N'empeche que c'est toi qui m'a dit que ça existait et toi qui me l'a donné :present:

Ciao.

 

[Edité le 19/9/2008 par salvanorigatore]

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Posté(e)

 

Hello

 

En fait Autodesk a publié (1996) et amélioré (1999) 3 routines :

 

DEL_BLK.lsp : Suppression des Insertions de blocs en double

DEL_TXT.lsp : Suppression des Textes simples en double

DEL_PT.lsp : Suppression des points en double

 

Mais dans la mesure où j'ai toujours utilisé du MAP et non pas de l'AutoCAD simple

ces routines ne me sont pas très utiles ...

 

Donc merci à Ludwig d'avoir resorti au bon moment DEL_BLK.lsp

 

Si quelqu'un désire les 3 routines d'Autodesk :

cadxp at hotmail fr

 

Le Decapode "historique"

 

Autodesk Expert Elite Team

  • 1 mois après...
Posté(e)

je viens de choper (et d'utiliser ce lisp) mais bizarrement, certains blocs ne sont pas effacés alors qu'ils ont bien les memes calques, coordonnées, noms etc.

 

si quelqu'un a une idée je suis preneur.

 

merci d'avance

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é