Aller au contenu

lips count


Invité sm777

Messages recommandés

Posté(e)

Bonjour a tous,

J'utilise autocad 2010 et autocad LT 2008 sur un autre poste.

Je recherche la lips count ou Bcount afin de pouvoir décompter les blocs du dessin de manière rapide.

Âpres plusieurs recherche sur le net je ne trouve pas de lien pour la récupère

 

Si quelqu'un a je suis preneur

 

Merci par avance

 

Invité ingoenius
Posté(e)

ici le LISP

 

;Commande  CB

(defun C:CB ( / blocks ss)
   (princ "\nPress  to select entire drawing or,")
   (cond
      (  (not (setq ss (cond ((ssget))
                             (t (ssget "x" '((0 . "INSERT")))))))
         (princ "\nNo objects selected."))
      (t (princ "\nCounting block insertions...")
         (  (lambda (i)
               (repeat i (count_block (ssname ss (setq i (1- i))))))
            (sslength ss))
         (cond
            (  (not blocks)
               (princ "\nNo block insertions found."))
            (t (table-print blocks "Block" "Count" "-" 8 "." nil 'itoa)))))
   (princ)
)

(defun table-print (alist title1 title2 headsub coltab padchr
                    car-form cdr-form / maxlen maxline padstr )
   (setq car-form (cond (car-form) (t '(lambda (x) x)))
         cdr-form (cond (cdr-form) (t '(lambda (x) x))))
   (setq maxlen
      (mapcar
        '(lambda (pair)
            (cons (strlen (car pair))
                  (strlen (cdr pair))))
         (setq alist
            (mapcar
              '(lambda (pair)
                  (cons (apply car-form (list (car pair)))
                        (apply cdr-form (list (cdr pair)))))
               alist ))))
   (setq maxlen  (+ -2 (apply 'max (mapcar 'car maxlen))
                       (apply 'max (mapcar 'cdr maxlen)))
         maxline (+ maxlen coltab)
         padstr  (repl padchr 70))

   (cprinc-init)
   (cprinc (strcat title1 " "
                   (ctab (cons title1 title2)
                         maxline
                         (repl " " 70))
                   " " title2))
   (cprinc (repl headsub (+ maxline 2)))
   (mapcar
     '(lambda (pair)
         (cprinc (strcat (car pair) " "
                         (ctab pair maxline padstr) " "
                         (cdr pair))))
      alist )
)

(defun repl (chr len / res)
   (apply 'strcat (repeat len (setq res (cons chr res))))
)

(defun ctab (pair max padstr)
   (substr padstr 1 (- max (strlen (car pair) (cdr pair))))
)

(defun cdr++ (key alist)
   (  (lambda (x)
         (cond (x (subst (cons (car x) (1+ (cdr x))) x alist))
               (t (cons (cons key 1) alist))))
      (assoc key alist))
)

(defun get (k l) (cdr (assoc k l)))

(defun entgetf (k e)
   (  (lambda (l)
         (mapcar '(lambda (x) (cdr (assoc x l))) k))
      (entget e))
)

(defun count_block (ename)
   (apply
     '(lambda (etype name)
         (cond
            (  (and (eq "INSERT" etype)
                    (or (assoc name blocks)
                        (zerop (logand 45 (get 70 (tblsearch "block" name)))))
               (setq blocks (cdr++ name blocks))))) nil)
      (entgetf '(0 2) ename))
)

(defun cprinc-init ()
   (setq *console-lines* (cond (*console-lines*) (t 25))
         *cprinc-msg* (cond (*cprinc-msg*) (t "--- Press any key ---"))
         *cprinc-rubout*
         (cond (  (or textpage *clear-screen*) "")
               (t (strcat "\r" (repl " " (strlen *cprinc-msg*)) "\r")))
         *cprinc-line* -1)
   (cond (textpage (textpage))
         (*clear-screen* (*clear-screen*))
         (t (textscr) (terpri)))
)

(defun cprinc-page ()
   (princ *cprinc-msg*)
   (grread)
   (cond (textpage (textpage))
         (*clear-screen* (*clear-screen*))
         (t (textscr)))
   (princ *cprinc-rubout*)
   (setq *cprinc-line* 0)
)

(defun cprinc (s)
   (cond (  *cpage-disable*)
         (  (not *cprinc-line*)
            (cprinc-init))
         (  (eq (setq *cprinc-line* (1+ *cprinc-line*))
                (1- *console-lines*))
            (cprinc-page)))
   (write-line s)
)



Posté(e)

Salut,

 

Petite précision BCOUNT est une commande des Express Tools (à installer sur une version pleine depuis le DVD d'installation si ce n'est déjà fait).

 

Sinon, j'avais fait ici un LISP qui compte aussi les blocs dynamiques (BCOUNT est une vielle commande qui ne le fait pas).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci de cette réponse ca marche nickel sur autocad 2010.

es-ce possible d'utiliser des lisp sur un AutoCAD LT 2008 ou 2007

cordialement

Posté(e)

 

Hello

 

Euh NON il n'y a pas de Lisp ou VLIsp ou ARX ou DOTNET sur AutoCAD LT :o

 

Cependant il y a eu le fameux LT-Extender qui marchait sur des versions anciennes de LT !

 

SVP 2 questions pour les specialistes LT-Extender :

 

- Jusqu'a quelles versions de AutoCAD LT ?

- LT-Extender, supportait-il les fonctions VLisp ?

 

Le Decapode

 

 

Autodesk Expert Elite Team

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é