x_all Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 bonjour et bonjour Tramber :) avant le changement d'ordi, la copine éléctrique se servait beaucoup de tabloblo...depuis notre remembrement informatique, seule la 1ere ligne est remplie dans le tableau qui a vue de nez comporte le bon nombre de ligne le message en ligne de commande est:Commande: TABLOBLOSélectionnez les blocs ou [Objet/Tous/Sélection] <Sélection>: sChoix des objets: Spécifiez le coin opposé: 14 trouvé(s)Choix des objets:Point d'insertion: ; erreur: une exception s'est produite: 0xC0000005 (Violation d'accès); avertissement: fonction unwind ignorée erreur inconnueCommande: j'ai bien essayer de lancer avec l'éditeur Vlisp ouvert pour essayer de trouver la panne, la le message est :(LAMBDA (N) (= N (NTH CONT LIBLOC))) et la source de la dernière interruption est :CALLBACK-ENTRY Ca ne m'avance pas plus....cette routine marchait très bien sous XP avec le même autocad 2009... j'ai supposé naïvement que ça venait de W7... que né-ni, sur mon poste avec autocad 2013 ça marche..... testé sur 2 autres poste avec 2009 et W7... idem.... un lien vers la dernière version de tabloblo que j'ai trouvé car celle de chez nous datait un peu, mais cette dernière pose aussi pb... une idée??merci quelques trucs sur autocad
lecrabe Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Hello Point d'AutoCAD sous la main pour tester mais voici la derniere version que je possede de TABLOBLO : version 2.05 Alors ? lecrabe Autodesk Expert Elite Team
Tramber Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Si tu me dis que ça peut marcher avec une 2013, quelque soit la plate-forme, alors je suis comme un rond de flan. Cette routine datant sans doute de 2007, en tous cas d'une V2007. Je pointe sur un autre post du sujet. Vois si il n'y a pas un réglage dans les styles de tableaux... je n'ai pas de V2009 et tout marche sur 2010 en W7-64. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Point d'AutoCAD sous la main pour tester mais voici la derniere version que je possede de TABLOBLO : version 2.05 Arrêtez de dire que c'est ma routine ! C'est plutôt un Open-source :(rires forts): Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bryce Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Bonjour, Le problème vient du passage en 64bits et de la propriété ObjectId.Voici une petite modif qui devrait fonctionner en 32 et 64bits (testé vite fait en 64bits uniquement): (defun c:tabloblo (/ libloc liidbloc ss ss liref ptins tableVL cont) ;;; (prompt "\nSélectionnez les blocs à lister ou < Tous >") ;;; ;;; (setq ssu (ssget '((0 . "INSERT")))) ;;; ;;; (setq sst (ssget "_X" '((0 . "INSERT")))) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (initget "Objet Tous Sélection") (setq kw (getkword "\nSélectionnez les blocs ou [Objet/Tous/Sélection] <Sélection>: " ) ) (cond ((= kw "Objet") (and (setq ent (car (entsel "\nSélectionnez le cercle, l'ellipse ou la polyligne: ") ) ) (setq typ (cdr (assoc 0 (entget ent)))) (or (member typ '("CIRCLE" "ELLIPSE")) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 (entget ent))))) ) ) (setq ss (SelByObj ent "Wp" '((0 . "INSERT")))) ) ) ((= kw "Tous") (setq ss (ssget "_X" '((0 . "INSERT"))))) (T (setq ss (ssget '((0 . "INSERT"))))) ) (if ss (setq liref (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))) ) ) (setq liref '()) ) (if ss (setq libloc (remove_doubles (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))) ) ) liidbloc (mapcar '(lambda (x) (gc:ObjectId32 (vla-item (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object) ) ) x ) ) ) libloc ) liref (vl-remove-if-not '(lambda (n) (member n libloc)) liref) ) (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 (gc:ObjectId32 i))) ) ) ) ) (setq ptins (getpoint "\nPoint d'insertion: ")) (vl-load-com) (setq tableVL (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ptins) (length libloc) 3 20 100 ) ) (vla-put-TitleSuppressed tableVL :vlax-true) (vla-put-HeaderSuppressed tableVL :vlax-true) (vla-UnmergeCells tableVL 0 0 0 0) (setq cont -1) (repeat (vla-get-Rows tableVL) (vla-settext tableVL (setq cont (1+ cont)) 0 (nth cont libloc) ) (vla-settext tableVL cont 1 (length (vl-remove-if-not '(lambda (n) (= n (nth cont libloc))) liref ) ) ) (vla-SetBlockTableRecordId tableVL cont 2 (nth cont liidbloc) :vlax-true ) (vla-setcellalignment tableVL cont 0 5) (vla-setcellalignment tableVL cont 1 5) ) (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))) ) ) ) ;;; SelByObj -Gilles Chanteau- 06/10/06 ;;; Crée un jeu de sélection avec tous les objets contenus ou capturés, ;;; dans la vue courante, par un objet (cercle, ellipse, polyligne fermée) ;;; Arguments : ;;; - ent : un objet (ename ou vla-object) ;;; - opt : un mode de sélection (Cp ou Wp) ;;; - fltr : un filtre de sélection (liste) ou nil ;;; ;;; modifié le 26/07/07 : fonctionne avec les objets hors fenêtre (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst ss) (if (= (type ent) 'ENAME) (setq obj (vlax-ename->vla-object ent)) (setq obj ent ent (vlax-vla-object->ename ent) ) ) (cond ((member (vla-get-ObjectName obj) '("AcDbCircle" "AcDbEllipse")) (setq dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) 50 ) n 0 ) (repeat 50 (setq lst (cons (trans (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n)))) 0 1 ) lst ) ) ) ) ((and (= (vla-get-ObjectName obj) "AcDbPolyline") (= (vla-get-Closed obj) :vlax-true) ) (setq p_lst (vl-remove-if-not (function (lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) ) (entget ent) ) ) (while p_lst (setq lst (cons (trans (append (cdr (assoc 10 p_lst)) (list (cdr (assoc 38 (entget ent)))) ) ent 1 ) lst ) ) (if (/= 0 (cdadr p_lst)) (progn (setq prec (1+ (fix (* 25 (sqrt (abs (cdadr p_lst)))))) dist (/ (- (if (cdaddr p_lst) (vlax-curve-getDistAtPoint obj (trans (cdaddr p_lst) ent 0) ) (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) ) (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) ) prec ) n 0 ) (repeat (1- prec) (setq lst (cons (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) (* dist (setq n (1+ n))) ) ) 0 1 ) lst ) ) ) ) ) (setq p_lst (cddr p_lst)) ) ) ) (cond (lst (vla-ZoomExtents *acad*) (setq ss (ssget (strcat "_" opt) lst fltr)) (vla-ZoomPrevious *acad*) ss ) ) ) (defun gc:ObjectId32 (obj) (if (vlax-method-applicable-p obj 'ObjectId32) (vla-get-ObjectId32 obj) (vla-get-ObjectId obj) ) ) J'ai remplacé les vla-get-ObjectId par gc:ObjectId32 de (gile), et rajouté un vla-UnmergeCells car les cellules de la 1ère ligne du tableau étaient fusionnées par défaut (il me semble que ce n'était pas le cas avant, peut-être une différence de la 2013). Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
x_all Posté(e) le 30 août 2012 Auteur Posté(e) le 30 août 2012 ha lala....je vous remercie tous de votre attention, mais rien n'y fait... @bryce, loin de moi l'idée d'avoir une idée d'ou ça viens, mais je ne suis même pas sur que le pb vienne de W7 64 ou 32 car sur mon poste qui est aussi sous W7 64 ça marche avec acad2013... une option ou un dll lié a windows qui diffère sur les 2 autocad? genre un de leur foutu framework visual machin ??? on dirai que la fonction plante au moment ou doit être dessiner le 1er bloc à la fin de la 1ere ligne qui n'est pas une entête du tableau... ben tampis pour ma copine électicienne, elle comptera ses bloc avec bcnt... merci encore....mais si personne n'a eu ce pb avant ça vien peut etre encore d'autre chose... ces configs sont toutes neuves, et on est pas au bout de nos surprises... je retourne à ma formation revit...... quelques trucs sur autocad
Tramber Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Les styles de tableaux sont bien les mêmes ! On ne sait jamais, même si je pense que ca n'est pas la source.Merci Bryce, ce code ne vient pas de moi je crois et c'est pour cela que je n'ai pas tilté, je crois que je dressais la liste des blocs autrement dans mon idée originelle.Il faut noter ta version alors !LeCrabe si tu nous entends ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
lecrabe Posté(e) le 30 août 2012 Posté(e) le 30 août 2012 Hello Voui, voui votre devoue Decapode est la ... J'ai sauvegarde sur mon PC le nouveau TABLOBLO de Bryce en vs 3.00 ! MAIS je n'ai rien teste ! Pour Info SVP , vous l'avez testee avec quelle version d'AutoCAD ? et 32 ou 64 bits ? lecrabe Autodesk Expert Elite Team
x_all Posté(e) le 31 août 2012 Auteur Posté(e) le 31 août 2012 oups j'étais loin du clavier... enfin du forum :) les postes sont sous W7 64, mais je suis pas sur que ce soit la peine de trop fouiller, sur tout si je suis le seul à avoir ce pb. Comme je disais, on passera par bcnt pour compter les bloc, notre électricienne à quasiment qu'une seule légende qu'elle posent sur tous les plans, le comptage des blocs ne sert qu'au quantitatif. Mais elle trouve le résultat de tabloblo plus joli et plus lisible... quelques trucs sur autocad
lili2006 Posté(e) le 31 août 2012 Posté(e) le 31 août 2012 Bonjour à toutes et tous, La version de bryce semble bien fonctionner chez moi,(Map 2012, Vista 32 bits). Seule remarque, je n'ai plus (ou pas ?!!) la 1er ligne de légende des colonnes,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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