Begood
Membres-
Compteur de contenus
44 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Begood
-
Bonjour, Je déterre ce sujet car après toutes ces années de bons et loyaux services ce lisp créé par Patrick_35 ne fonctionne plus depuis quelques temps. Je soupçonne une mise à jour de Windows 10 puisque je suis toujours sous Autocad 2023 et que le problème se pose peu importe la version de PDFCreator. Lorsque j’exécute la routine j'ai un message d'erreur : erreur: Erreur Automation Entrée incorrecte. Si je n'utilise pas la routine je peux imprimer manuellement avec PDFCreator mais si j'exécute la routine alors PDFCreator se plante et ne fonctionne plus manuellement jusqu'à ce que je ferme autocad. Si je réouvre PDFCreator il se relance et l'impression manuelle arrive. Est-ce que quelqu'un comprend ce qui se passe ? Merci. impression_auto_espace_objet.lsp impression_auto_espace_objet_options.lsp impression_auto_espace_objet_fusion.lsp Bloc dynamique impression.dwg
-
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Bonjour, C'est bon, ça fonctionne impec. Merci beaucoup. -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Bonjour, Merci bcp Gilles, ça fonctionne impec. J'ai essayé de modifier la fonction pour permettre la sélection des 2 types de blocs : '(2 . "Bulle,Bulle Alu,`*U*") (if (= (vla-get-Effectivename (vlax-ename->vla-object ent)) "Bulle,Bulle Alu") mais ça ne fonctionne pas. Est-ce que c'est possible ? -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Re, Voilà un fichier avec un bloc "Bulle" à gauche et un bloc "Bulle Alu" à droite : Fichier Mot de passe : gilles Si tu cherche "xxx" la fonction ne devrait sélectionner que le bloc de gauche. Et si tu cherche "b002" c'est pareil. Merci. -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Bonjour, Je viens d'essayer et ça ne fonctionne pas, la sélection ne tient pas compte du nom des blocs ni de la valeur d'attribut recherchée. -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Oui, ça c'est fait et j'obtiens cette erreur : ; erreur: type d'argument incorrect: lentityp nil Et concernant ta réponse "Probablement ent qui est nil", je ne sais pas l'interpréter, je ne sais pas ce qu'il faut modifier. -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Désolé mais je n'ai pas de son sur mon PC au boulot et je ne m'y connais pas assez pour interpréter ta réponse (je n'y connais rien en fait :unsure: ) -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
J'obtiens cette erreur : ; erreur: type d'argument incorrect: lentityp nil -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Bonjour à tous, Merci Gilles pour le coup de main. J'ai ajouté cette portion de code et j'obtiens l'erreur suivante : ; erreur: type d'argument incorrect: VLA-OBJECT <Nom d'entité: 187dc3c1f50> Voici le lisp complet au cas où j'aurais fait une erreur : ;; Select Blocks by Attribute Value - Lee Mac ;; Selects all attributed blocks in the current layout which contain a specified attribute value. (defun c:selblkbyattval ( / att atx ent idx sel str ) (vl-load-com) (if (/= "" (setq str (strcase (getstring t "\nEntrez la ou les valeurs de l'attribut (Séparez les valeurs par une virgule) : ")))) (if (and (setq sel (ssget "_X" (list '(0 . "INSERT") '(2 . "Bulle,`*U*") '(66 . 1) (cons 410 (getvar 'ctab)) ) ) ) (repeat (setq idx (sslength sel)) (setq ent (ssname sel (setq idx (1- idx)))) (if (= (vla-get-EffectiveName ent) "Bulle") (progn (repeat (setq idx (sslength sel)) (setq ent (ssname sel (setq idx (1- idx))) att (entnext ent) atx (entget att) ) (while (and (= "ATTRIB" (cdr (assoc 0 atx))) (not (wcmatch (strcase (cdr (assoc 1 atx))) str)) ) (setq att (entnext att) atx (entget att) ) ) (if (= "SEQEND" (cdr (assoc 0 atx))) (ssdel ent sel) ) ) (< 0 (sslength sel)) ) ) ) ) ;;; Modification by Patrick_35 (progn (zoomobject (mapcar '(lambda(x)(vlax-ename->vla-object (cadr x))) (ssnamex sel))) (sssetfirst nil sel) ) ;;; Fin de la modification by Patrick_35 (princ (strcat "\nAucun bloc trouvé avec la valeur d'attribut \"" str "\".")) ) ) (princ) ) ;; ZoomObject Effectue un zoom sur les objets contenus dans la liste ;; ;; Argument ;; objlst : une liste de vla-object ;; ;; Variables ;; dir : normale du plan de la vue courante ;; ang : angle de la vue courante ;; 3x3 : matrice de transformation du SCG vers la vue courante (dimension 3) ;; 4x4 : matrice de transformation du SCG vers la vue courante (dimension 4) ;; ptlst : liste des points minimum et maximum des bounding-boxes des objets sélectionnés (SCG) (defun ZoomObject (objlst / dir ang 3x3 4x4 ptlst) (vl-load-com) (setq dir (mapcar '- (trans (getvar "viewdir") 1 0) (trans '(0 0 0) 1 0) ) ang (- (getvar "viewtwist")) 3x3 (mxm (mapcar '(lambda (x) (trans x 0 dir)) '((1 0 0) (0 1 0) (0 0 1)) ) (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) ) 4x4 (append (mapcar '(lambda (v o) (append v (list o)) ) 3x3 '(0 0 0) ) (list '(0 0 0 1)) ) ) (foreach obj objlst (vla-TransformBy obj (vlax-tmatrix (trp 4x4))) (vla-getBoundingBox obj 'minpt 'maxpt) (vla-TransformBy obj (vlax-tmatrix 4x4)) (setq ptlst (cons (vlax-safearray->list minpt) (cons (vlax-safearray->list maxpt) ptlst) ) ) ) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'min ptlst)))) (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'max ptlst)))) ) ) ;; transpose une matrice Doug Wilson (defun trp (m) (apply 'mapcar (cons 'list m)) ) ;; Apply a transformation matrix to a vector by Vladimir Nesterovsky (defun mxv (m v) (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m) ) ;; Multiply two matrices by Vladimir Nesterovsky (defun mxm (m q) (mapcar '(lambda (r) (mxv (trp q) r)) m) ) Merci -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Re, Pour l'attribut "30" c'était juste un exemple, je souhaite conserver l'invite de valeur d'attribut, c'est tout l'intérêt de ce lisp. Mais pour le nom de bloc j'ai bien rajouté '(2 . "Bulle") et ça ne fonctionne pas, j'ai la réponse : Aucun bloc trouvé avec la valeur d'attribut "XXX". Mes blocs sont bien nommés "Bulle", peut-être parce que ce sont des blocs dynamiques ? -
Sélection bloc par valeur d'attribut
Begood a répondu à un(e) sujet de Begood dans LISP et Visual LISP
Bonjour à tous, Je souhaiterai pourvoir fixer le nom des blocs recherchés dans ce lisp afin que la fonction ne recherche par exemple que les blocs nommés "Bulle" avec l'attribut "30". J'ai fais quelques recherches et j'ai vu qu'il fallait rajouter (2 . "Bulle") après (0 . "INSERT") mais ça ne fonctionne pas. Est-ce que l'on peut définir plusieurs noms comme "Bulle" et "Bulle Alu" ? Merci. -
Slt, J'ai fais la mise à jour, merci. Depuis la PDFCreator 2.4 l'impression semblait plus lente et depuis ta mise à jour c'est revenu à la normale. ++
-
up
-
Bonjour Patrick_35, Je rencontre un problème avec des fichiers de provenance différente de ceux que j'utilise habituellement. Le bloc cadre est pourtant placé où il faut mais la fonction imprime soit une page blanche soit une partie du contenu dans un coin, comme avec un décalage d'origine. Ci-joint un exemple de fichier qui pose problème, le bloc cadre est nommé "cadre_impression" et le pdf qui en ressort est en portrait et ne contient qu'un bout de la zone imprimée. Une idée sur la variable ou le paramètre qui pose problème ? Merci. exemple.zip
-
Merci pour le tuyau !!! ça fait un moment que je traînais cette casserole !
-
Génial, ça fonctionne impec ! Merci encore pour ton travail et ton temps.
-
Bonjour Patrick_35, J'ai une dernière demande :unsure: , est-ce qu'il serait possible de changer l'orientation (portrait ou paysage) en fonction des dimensions du bloc cadre ? Du genre si X > Y alors paysage et si X < Y alors portrait. Merci
-
C'est bon, ça marche impec ! Merci beaucoup pour ton travail et ta réactivité ;) @+
-
Re, Merci beaucoup ! Je viens de tester tout ça et ça roule ;) Par contre j'ai un soucis, comme j'ai des pages de taille différente pour une question d'échelle j'ai créé un bloc dynamique "Cart" avec un paramètre XY pour en modifier l'échelle tout en gardant le nom identique. Le problème c'est que la routine ne fonctionne plus dans ce cas là. Y a t'il une solution ?
-
Bonjour Patrick_35, Merci ! Je viens de tester et ça fonctionne impec par contre je souhaiterai apporter 3 modifs si possible : Au lancement de la commande, ajouter une invite dans la barre de commande pour choisir la direction : 1er choix : début en haut à gauche puis vers la droite et ligne suivante en dessous 2e choix : début en haut à gauche puis vers le bas et colonne suivante à droite [*]Ne pas traiter le fichier pdf, mon carnet complet est réparti sur 3 fichiers, je souhaite pouvoir lancer la commande sur les 3 fichiers et fusionner le pdf complet moi même [*]Orientation paysage avec symétrie verticale Merci d'avance.
-
Voici un exemple : exemple.zip J'imprime toujours avec la dernière version dispo de PDFCreator et avec les paramètres suivants : (command "-traceur" "o" "" "PDFCreator.pc3" "A4" "M" "A" "O" "F" p1 p2 "P" "C" "O" "monochrome.ctb" "O" "F" "N" "N" "O") Je fusionne ensuite l'ensemble et j'enregistre. Merci Beaucoup.
-
Bonjour Patrick_35, Je viens d'essayer et je n'arrive pas à la faire tourner, je ne sais pas quoi remplacer exactement pour l'histoire de la version de PDFCreator et donc ça me met une erreur. J'ai essayer de simplifier l'ensemble en supprimant tout ce qui concerne PDFCreator pour ne mettre que cette ligne : (command "-traceur" "o" "" "PDFCreator.pc3" "A4" "M" "A" "O" "F" p1 p2 "P" "C" "O" "monochrome.ctb" "O" "F" "N" "N" "O") qui elle fonctionne parfaitement pour l'impression avec mes paramètres mais je n'y arrive pas non plus. Quelqu'un pourrait me donner un coup de main svp ?
-
Bonjour, J'ai souvent des carnets de plus de 100 pages et dans mon secteur (menuiseries extérieures) il est préférable d'avoir un carnet unique pour l'ensemble du chantier. Les présentations c'est pratique pour un carnet de 10-15 pages mais je me vois mal gérer une centaines d'onglets. De plus ces présentations ne se créés pas toutes seules, un carnet de 100 pages c'est 99 présentations à dupliquer, 100 fois à entrer dans la fenêtre flottante pour cadrer la page requise, 100 onglets à renommer... Mes carnets n'ont jamais le même nombre de page, des repérages différents, etc... Donc utiliser les présentations pour simplement pouvoir faire "Publier" c'est une perte de temps. C'est pourquoi je souhaite adapter cette routine, pour gagner du temps car c'est ça l'objectif. Merci.
-
Bonjour à tous, Cette routine m'intéresse car je travaille uniquement avec l'espace objet pour la même raison : trop de pages. J'ai légèrement modifié le lisp pour l'adapter à mes paramètres d'impression : (defun c:impa3() (setq pl(cdr (assoc 8 (entget (car (entsel "\nChoix du cadre imprime ?")))))) (setq sel (ssget "x" (list(cons 0 "LWPOLYLINE")(cons 8 pl)(cons 70 1)))) (setq i 0) (repeat (sslength sel) (setq ent (ssname sel i)) (setq ent(entget ent)) (setq j 0) (setq l_cadre (list )) (setq nb_sommets 0) (repeat (length ent) (setq entit (nth j ent)) (setq code_entit (car entit)) (if (= code_entit 10) (progn (setq l_cadre (cons (list (car (cdr entit))(cadr (cdr entit))) l_cadre)) (setq nb_sommets(+ nb_sommets 1)) );fin du progn );fin du if (setq j (+ j 1)) ) (if (= nb_sommets 4) (progn (setq p1 (car l_cadre)) (setq p2 (caddr l_cadre)) (command "-traceur" "o" "" "PDFCreator.pc3" "A4" "M" "A" "O" "F" p1 p2 "P" "C" "O" "monochrome.ctb" "O" "F" "N" "N" "O") ;parametres M=mm, A pAysage P Portrait, N pas de symetrie verticale, F fenetre,C centrer,O Style de tracé o/n, nom de la table,N épaisseur de lignes o/n, tracé de l'ombrage au format Affiché/Filaire/Masqué/Style visuel/Rendu, N et O fo pas toucher ;(command "polylign" p1 p2 "") ;(alert fichier) )) (setq i (+ i 1)) ) ) (defun c:ok() (princ "ok") (princ ) ) Le problème c'est qu'il n'imprime pas le cadre sélectionné mais tous les cadres, peu importe leur taille. Je souhaiterai que la fonction imprime les cadres de la taille de celui sélectionné et pour l'ordre des pages en X positif puis Y négatif, exemple : 1 2 3 4 5 6 7 8 9 C'est possible ? Merci
-
Bonjour à tous, J'aimerais bien me mettre au lisp sérieusement mais je n'ai que très peu de notions de programmation (web design uniquement) et manque de temps aussi. Rien que pour combiner plusieurs routines existantes afin d'obtenir le résultat dont j'ai besoin, je galère... Je ne connais pas la syntaxe ni l'architecture d'un lisp. C'est pour ça que je fais appel à vos compétences. Comme cela a déjà été dit, inutile de refaire ce qui a déjà été fait. J'ai donc testé EXPLODEALL.VLX qui correspond parfaitement à mes besoins. Le problème c'est que cette routine nécessite une activation sous peine de devoir supporter une dizaine de fenêtres popup... J'ai donc fait la demande d'un code d'activation, je l'ai reçu mais il n'est valide que pour mon poste et seulement pour l'année 2016. Pour 2017 il faut envoyer une carte postale en Australie... je vous passe les détails. Perso je pense que l'éditeur ferait mieux de vendre son programme sur Autocad Exchange que d'en passer par ces procédures douteuses. Du coup EXPLODEALL.VLX est pour l'instant activée et fonctionne parfaitement, pour un temps... Mais je cherche encore une alternative que je pourrais installer sur le poste de mes collègues. J'en ai profité pour essayer ALTEXT.VLX, pouvoir incrémenter des attributs de bloc dynamique était pour moi une chose inespérée. Le programme fonctionne mais son utilisation est compliquée et pas très logique à mon avis. Après quelques recherches et plusieurs tests je suis tombé sur "Increment" de Gilles, d'abord le lisp puis la version plus élaborée sur Autocad Exchange. Je salue le travail de Gilles sur ce programme qui va bien au-delà de tout ce que j'ai pu tester, il fonctionne à merveille, en français et gratuit, merci.
