pingoo666 Posté(e) le 23 novembre 2006 Posté(e) le 23 novembre 2006 Bonjour, je chercge un moyen d'acceder aux données de types "BLOCK_RECORD". je n'y arrive pas avec un ssget ou avec tblnext. une idée ? Merci d'avance ! [Edité le 23/11/2006 par pingoo666]
Patrick_35 Posté(e) le 23 novembre 2006 Posté(e) le 23 novembre 2006 Je ne vois pas ce que tu recherches mais peut-être de cette manière (dictsearch (namedobjdict) "BLOCK_RECORD") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
pingoo666 Posté(e) le 23 novembre 2006 Auteur Posté(e) le 23 novembre 2006 Merci mais ca amrche pas (ou en tous cas je m'y prend mal) en gros j'ai besoin de créer un tableau avec des blocs dedans. en étudant un (entget) du tableau on voie que pour une cellule c'est le code 340 qui définit le bloc inséré. il pointe vers une entité. Le problème est que je n'arrive pas à accéder (ou a créer) a ces données autrement qu'avec un : (entget (cdr (assoc 340 (entget (car (entsel)))))) sur le tableau. donc je ne peut pas mettre mes blocs dans le tableau. Pour les intéressés la finalité de ce lisp est de créer un tableau avec le nombre d'occurence de chaque bloc inséré.
Patrick_35 Posté(e) le 23 novembre 2006 Posté(e) le 23 novembre 2006 (gile) a fait quelque chose ce sujet (réponse n°24) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 23 novembre 2006 Posté(e) le 23 novembre 2006 C'est Tramber qui a fait le principal, je n'ai fait que de "l'habillage". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 24 novembre 2006 Posté(e) le 24 novembre 2006 Au fait, je m'en sers sur des dessins contenant au delà de 200 blocs, c'est monstrueusement lourd pour l'unité centrale !Combien de fois j'ai planté la machine ?! Voici une version qui découpe l'opération en plusieurs tableaux.Je vous le garantie, c'est indispensable quand la quantité est importante,... et les blocs complexes.On ne sait jamais. code vite fait, comme d'hab. (je ne m'appelle pas Gile ou Patrick !). (defun c:tabloblo (/ libloc liidbloc ss col liref ptins tableVL cont) (vl-load-com) (princ "\nSélectionnez les blocs à lister ou ") (if (not (setq ss (ssget '((0 . "INSERT"))))) (setq ss (ssget "_X" '((0 . "INSERT"))) col T ) ) (setq liref(if ss (mapcar '(lambda (x) (setq x (vlax-ename->vla-object x)) (if (vlax-property-available-p x 'EffectiveName)(vla-get-EffectiveName x)(vla-get-Name x))) (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))nil)) (if col (vlax-for i (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object))) (if (and (/= (substr (vla-get-name i) 1 1) "*") (= :vlax-false (vla-get-IsXref i)) ) (setq libloc (append libloc (list (vla-get-name i))) liidbloc (append liidbloc (list (vla-get-ObjectID i)))))) (setq libloc (remove_doubles liref) liidbloc (mapcar '(lambda (x)(vla-get-ObjectID(vla-item(vla-get-Blocks(vla-get-activedocument(vlax-get-acad-object)))x)))libloc))) (setq long(length libloc)) (princ(strcat"\nLongueur de liste = "(itoa long))) (setq nb(getint" nombre de tableaux désiré ? : ")) (setq petilong (/ long nb)) (setq reste(- long(* nb petilong))) (setq compt 1)(setq petitcont -1) (setq petilong2(if(zerop reste)nb(+ nb reste))) (repeat nb (initget 1) (setq ptins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq tableVL (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ptins) (if( 3 100 100)) (vla-put-TitleSuppressed tableVL :vlax-true) (setq cont -1) (repeat (vla-get-Rows tableVL) (setq petitcont (1+ petitcont)) (vla-settext tableVL (setq cont (1+ cont)) 0 (nth petitcont libloc) ) (vla-settext tableVL cont 1 (length (vl-remove-if-not '(lambda (n) (= n (nth petitcont libloc))) liref ))) (vla-SetBlockTableRecordId tableVL cont 2 (nth petitcont liidbloc) :vlax-true) (vla-setcellalignment tableVL cont 0 5) (vla-setcellalignment tableVL cont 1 5) ) (setq compt(1+ compt)) ) (princ) ) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun REMOVE_DOUBLES (lst) (cond ((atom lst) lst) (T (cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst))) ) ) ) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 24 novembre 2006 Posté(e) le 24 novembre 2006 La perfection n'est pas de ce monde ;)Ca me rapelle cette pensée La forme même des pyramides d'Egypte montre que déjà les ouvriers avaient tendance à en faire de moins en moins.Will Cuppy @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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