Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Salut Tu peux très bien filtrer une sélection Par exemple Rbloc --> Sélection --> '_filter (ne pas oublier le quote) --> Ajouter l'objet sélectionné< --> Ne conserver que le stric miminum --> Choisir le nom du bloc --> Modifier l'élément --> Ajouter un * à la place d'un nombre, par exemple arbre* --> Remplacer --> Appliquer --> tout (_all) @+
  2. Salut Et avec Rbloc ? @+
  3. Salut La réponse est facile et va dans le sens de Didier. Ne pas avoir la main de la souris pour le déplacement. Donc un - = saisie @+
  4. Salut Un gabarit est un dessin dwg. C'est juste l'extension qui change. Donc, avec la commande inserer @9
  5. Bonjour Pour répondre à la demande du crabounet (defun c:pbl(/ dat dx1 dx2 def dxf js n pt rep txt lst_att lst_dxf) (defun lst_dxf(dxf) (vl-remove-if '(lambda(x)(vl-position (car x) '(-1 0 2 5 41 42 43 44 45 70 71 100 270 330))) dxf) ) (defun lst_att(blo) (mapcar '(lambda(x) (cons 1000 (vla-get-textstring x))) (vlax-invoke (vlax-ename->vla-object blo) 'getattributes)) ) (or (setq def (getenv "Patrick_35_pbl")) (setq def "X") ) (cond ((eq def "X") (setq txt "Xdatas") ) ((eq def "A") (setq txt "Attributs") ) (T (setq txt "Les deux") ) ) (initget "X A L") (or (setq rep (getkword (strcat "\nSouhaitez-vous trairer [Xdatas/Attributs/Les deux] <" txt "> : "))) (setq rep def) ) (and (setq js (ssget '((0 . "insert")))) (progn (setq n 0) (while (setq pt (ssname js n)) (setq dx1 (entget pt) dx2 (entget pt '("*")) dat (cdr (assoc -3 dx2)) ) (cond ((eq rep "X") (setq dxf (lst_dxf dx2)) ) ((eq rep "A") (setq dxf (lst_dxf dx1)) (and (eq (cdr (assoc 66 dx1)) 1) (setq dxf (append dxf (list (cons -3 (list (cons (if dat (caar dat) "Patrick_35") (append '((1002 . "{")) (lst_att pt) '((1002 . "}"))))))))) ) ) (T (setq dxf (lst_dxf dx1)) (if dat (setq dxf (append dxf (list (cons -3 (list (cons (caar dat) (append (reverse (cdr (reverse (cdar dat)))) (lst_att pt) '((1002 . "}"))))))))) (setq dxf (append dxf (list (cons -3 (list (cons "Patrick_35" (append '((1002 . "{")) (lst_att pt) '((1002 . "}"))))))))) ) ) ) (entmake (append '((0 . "POINT")) dxf)) (entdel pt) (setq n (1+ n)) ) ) ) (setenv "Patrick_35_pbl" rep) (princ) ) Juste une précision. Si on décide d'utiliser l'option attribut et qu'il n'y a pas de xdatas dans le bloc, le nom de l'application sera "Patrick_35". Donc à modifier au besoin. @+
  6. Bonjour Un exemple qui permet de transférer les xdatas d'un bloc sur un point. Toutefois, il faut faire attention car le point créé à un nouvel identifiant par rapport au bloc, ce qui peut poser problème pour les xdatas (références à un identifiant qui n'existe plus par exemple). Ne connaissant pas la structure des xdatas, difficile de faire mieux, comme de répondre à la demande de lecrabe de transférer les attributs dans les xdatas du point. Un petit xdlist (des express) concernant les valeurs des attributs à transférer dans les xdatas permettait d'y voir plus clair. (defun c:pbl(/ js n pt) (and (setq js (ssget '((0 . "insert")))) (progn (setq n 0) (while (setq pt (ssname js n)) (entmake (append '((0 . "POINT")) (vl-remove-if '(lambda(x)(vl-position (car x) '(-1 0 2 5 41 42 43 44 45 70 71 100 270 330))) (entget pt '("*"))) ) ) (setq n (1+ n)) (entdel pt) ) ) ) (princ) ) @+
  7. Dans ton bloc, tu n'as pas d'hachures. Pour que ça fonctionne à tous les coups. 1) Tu ouvres ton bloc dans l'éditeur de bloc. 2) Tu sélectionnes le texte que tu veux mettre en avant 3) Tu copies le texte sur lui-même (copier @) 4) Tu effaces la sélection précédente (effacer p) 5) Tu retournes dans ton dessin en sauvegardant ton bloc @+
  8. Le lisp n'enlève aucun objet. Il change juste l'ordre de création et place les hachures en 1er. Pour bien comprendre, tu peux nous mettre à disposition un bloc qui pose problème ? @+
  9. Salut Regarde ce sujet @+
  10. Salut Merci. Ce qui est tout à fait normal. Le lisp revient à faire à la main la commande insérer. Si tu insères en manuel un bloc déjà défini (avec ou sans attributs), tu auras exactement le même résultat que tes tests. Pour te faire plaisir (defun c:rtb(/ blo esp lay lck lst rep) (setq doc (vla-get-activedocument (vlax-get-acad-object)) esp (vla-get-modelspace doc) lay (vla-get-activelayer doc) lck (vla-get-lock lay) ) (vla-startundomark doc) (and (setq rep (getfiled "Choisissez un fichier dans un répertoire contenant tous les blocs à redéfinir." (getvar "dwgprefix") "DWG" 8)) (setq rep (vl-filename-directory (findfile rep))) (setq lst (vl-directory-files rep "*.dwg")) (progn (vla-put-lock lay :vlax-false) (foreach blo lst (and (tblsearch "block" (vl-filename-base blo)) (vla-delete (vla-insertblock esp (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat rep "/" blo)) 1 1 1 0)) ) ) (vla-put-lock lay lck) (vla-regen doc acallviewports) ) ) (vla-endundomark doc) (princ) ) @+
  11. Salut Un lisp vite fait Tous les blocs à redéfinir doivent être dans un dossier et doivent avoir le même nom que ceux du dessin. J'ai essayé avec des blocs dynamique et cela à l'air d'être ok (defun c:rtb(/ blo esp lay lck lst rep dirbox) (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) esp (vla-get-modelspace doc) lay (vla-get-activelayer doc) lck (vla-get-lock lay) ) (vla-startundomark doc) (and (setq rep (dirbox "Choisissez un répertoire contenant tous les blocs à redéfinir.")) (setq lst (vl-directory-files rep "*.dwg")) (progn (vla-put-lock lay :vlax-false) (foreach blo lst (and (tblsearch "block" (vl-filename-base blo)) (vla-delete (vla-insertblock esp (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat rep "/" blo)) 1 1 1 0)) ) ) (vla-put-lock lay lck) (vla-regen doc acallviewports) ) ) (vla-endundomark doc) (princ) ) @+
  12. Salut Tu peux faire des tests (setq js (ssget "x" (list (cons 0 "insert") (cons 2 "Bloc*")))) Puis (entget (ssname js 0)) (entget (ssname js 1)) Ou encore (setq js (ssget "x" (list (cons 0 "insert") (cons 2 "Bloc1,Bloc2")))) Si le résultat est nil sur le ssget, c'est que la sélection n'a pas fonctionnée ou n'a rien à sélectionner. @+
  13. Salut Regarde ce message @+
  14. Salut @Hbs69 Tu n'as pas 50 solutions. Il faut insérer tous les nouveaux blocs (en renommant ou pas) dans le dessin via un lisp ou script. Je peux te faire quelque chose mais il faut que tous les nouveaux blocs soient dans un répertoire. @laud69 un petit - devant la commande pour ne pas avoir la boite de dialogue. Par exemple -inserer @+
  15. Salut Je suis comme Goldorak44, dans l'expectative de tes explications. @+
  16. Salut Je pense que RBLOC répond à ton besoin. Par contre, il faudra exporter (wbloc) tes blocs du second dessin pour ensuite les utiliser via RBLOC @+
  17. Patrick_35

    PB BLOCS DYNAMIQUES

    Salut Une idée. Ton archi efface dans son dessin tous les blocs incriminés (sélection via un filtre), purge le dessin et insère ensuite tes blocs. @+
  18. Salut (gile) Quand je vois le lisp, tes commentaires et ce que tu fais maintenant, que de chemin parcouru ;) @+
  19. Patrick_35

    Lisps de Patrick_35

    Bonjour Mise à jour du 1er message et des liens @+
  20. Salut Pour charger un lisp, tu as ce topic @+
  21. Si tu ne veux pas de la boite de dialogue -contour @+
  22. Avec ce sujet, celui-ci ou encore ce pdf @+
  23. +1 avec Megeon qui m'a devancé @+
  24. En partant sur la base que c'est un lisp, qu'il est déjà chargé et que si on tape par exemple PO en ligne de commande, le lisp de lance. (if (= choix "po")(c:po)) @+
  25. C'est juste un exemple pour t'aider à comprendre. En aucun cas un lisp tout fait. L'exemple t'affiche le résultat du choix. @+
×
×
  • 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é