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. Un exemple qui est de Bruno_l pour les reacteurs voici un petit lisp qui redresse l' attribut "REF" aprés un commande rotation d'un bloc @+ (defun REDRESSE () (setq JEU_BLOC NIL CX NIL DEF_LE_BLOC NIL FILS NIL DEF_FILS NIL TYPE_ENTITE NIL ) ;_ Fin de setq (setq JEU_BLOC (ssget "p")) (setq CX 0) (while (setq LE_BLOC (ssname JEU_BLOC CX)) (setq CX (1+ CX) DEF_LE_BLOC (entget LE_BLOC) ) ;_ Fin de setq (if (= "INSERT" (cdr (assoc 0 DEF_LE_BLOC))) (progn (setq FILS LE_BLOC) (while (/= "SEQEND" (setq TYPE_ENTITE (cdr (assoc 0 (setq DEF_FILS (entget (setq FILS (entnext FILS)))) ) ;_ Fin de assoc ) ;_ Fin de cdr ) ;_ Fin de setq ) ;_ Fin de /= (if (and (= "ATTRIB" TYPE_ENTITE) (= "REF" (cdr (assoc 2 (entget FILS)))) ) ;_ Fin de and (progn (setq P41 (cdr (assoc 41 DEF_LE_BLOC)) P42 (cdr (assoc 42 DEF_LE_BLOC)) ) ;_ Fin de setq (cond ((= 0 (- P41 P42)) (setq F41 1.0) ) (t (setq F41 -1.0)) ) ;_ Fin de cond (setq DEF_FILS (subst (cons 41 F41) (assoc 41 DEF_FILS) DEF_FILS ) ;_ Fin de subst ) ;_ Fin de setq (setq DEF_FILS (subst '(50 . 0.0) (assoc 50 DEF_FILS) DEF_FILS ) ;_ Fin de subst ) ;_ Fin de setq (entmod DEF_FILS) (entupd LE_BLOC) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while ) et le lisp initialisant le reacteur ;;; chargement des extensions lisp (vl-load-com) (vlr-remove-all) ;;; fonction cleanreac ;;; nettoyage de tous les reacteurs (defun CLEANREAC () (mapcar 'vlr-remove-all '(:vlr-acdb-reactor :vlr-editor-reactor :vlr-linker-reactor :vlr-object-reactor ) ) ) ;;; (defun CHOIX_REAC (REACTEUR COMMANDE) (setq reaction "rien") (setq NOM_CDE (car COMMANDE)) (cond ((= "ROTATE" NOM_CDE) (REDRESSE)) ;((= "DDATTE" NOM_CDE) (chgbloc)) ) ) ;; appel de cleanreac (CLEANREAC) ;;; initialisation des reacteurs ;;; quand on execute une commande appel de la fonction de redressement des attributs (vlr-command-reactor NIL '((:vlr-commandended . choix_reac)))
  2. Patrick_35

    Verrouillage des vues

    Ou encore ce lisp pour verrouiller toutes les fenêtres dans toutes les présentations (defun c:verr(/ fen n sel tot) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq sel (ssget "x" (list (cons 0 "VIEWPORT")))) (progn (setq n 0 tot 0) (while (ssname sel n) (if (and (= (logand (cdr (assoc 90 (entget (ssname sel n)))) 16384) 0) (/= (cdr (assoc 69 (entget (ssname sel n)))) 1)) (progn (setq fen (vlax-ename->vla-object (ssname sel n))) (vlax-put-property fen "displaylocked" :vlax-true) (setq tot (1+ tot)) ) ) (setq n (1+ n)) ) (princ (strcat "\n" (itoa tot) " fenêtre(s) de verrouillée(s)")) ) (princ "\nPas de fenêtres") ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) ps : pour ceux que ça interresse, regardez le vla-startundomark ainsi que le vla-endundomark. Résultat, un lisp sans command @+
  3. Patrick_35

    Débutant

    Le cd est sûrement en lecture seul et autocad à besoin d'écrire dessus. Donc une copie sur le disque dur devrait faire l'affaire @+
  4. Salut Tramber voulait dire qu'avec le gratuiciel Doslib, tu as la fonction dos_getdir qui te permet de choisir seulement le répertoire, sans pour autant donner un nom de fichier @+
  5. Patrick_35

    Les variants

    Salut (vlax-safearray->list (vlax-variant-value [i]variant[/i])) @+
  6. Salut, Tu vas sur la page d'acceuil de Google Puis sur le lien Outils linguistiques Tu peux faire des traductions avec un copier/coller, ou mieux, en donnant un lien à traduire @+
  7. Ouf, ça commence à décoiffer sérieux Pour les routines, tu as ce forum @+
  8. En faisant une comparaison avec des (entlast) ?
  9. Salut en faisant (setq a (vla-open (vla-get-documents (vlax-get-acad-object)) "MON_FICHIER.DWG" :vlax-true)) Et pour se retrouver sur le dessin MON_FICHIER (vla-activate a) Attention à la variable SDI, si elle est à 1, ça plante @+
  10. Salut Tramber, un (vlax-erased-p objet) = T pour savoir si l'objet a été effacé ou encore un (vlax-read-enabled-p objet) = T pour savoir s'il est toujours valable @+
  11. Maximilien A force de t’enlever les épines du pied, on dirait que tu as marché sur un oursin :’) Blague à part, tu as aussi ce sujet pour un dessin vide de quelques méga @+
  12. Si dans la liste, tu ne trouves pas le code 62, c’est que c’est ducalque, idem pour le code 370 @+
  13. Modemacro est une commande autocad sur une version pleine, donc si cette commande existe sur LT, je ne vois pas pourquoi elle ne fonctionnerait pas en script @+
  14. Un petit cadeau, ça ne fonctionne que sur des lignes mais il est facilement adaptable. C’est un de mes premiers et quand je le regarde, je vois des améliorations à apporter mais bon, il marche bien @+ ;;;================================================================= ;;; ;;; COU.LSP V1.00 ;;; ;;; Copyright (C) Patrick ;;; ;;;================================================================= (defun c:cou(/ cmd h s) (defun *errcoup* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (setq *error* s) (setvar "pickadd" h) (setvar "cmdecho" cmd) (princ) ) (defun couper_ligne(/ a b c d e f g n o p1 p2 q) (defun trie_liste(o / b c d f i k n l) (setq b e) (setq l 0) (while (/= (car b) nil) (setq i (car b)) (cond ((or (= o "DG") (= o "GD")) (foreach n b (if (< (car n) (car i)) (setq i n) ) ) ) ) (cond ((or (= o "HB") (= o "BH")) (foreach n b (if (< (cadr n) (cadr i)) (setq i n) ) ) ) ) (cond ((or (= o "BGH") (= o "HDB")) (foreach n b (if (< (car n) (car i)) (setq i n) ) ) (foreach n b (if (and (= (car n) (car i)) (< (cadr n) (cadr i))) (setq i n) ) ) ) ((or (= o "HGB") (= o "BDH")) (foreach n b (if (< (car n) (car i)) (setq i n) ) ) (foreach n b (if (and (= (car n) (car i)) (> (cadr n) (cadr i))) (setq i n) ) ) ) ) (setq d (append (list i) d)) (setq c nil) (foreach n b (if (/= n i) (setq c (append (list n) c)) ) ) (setq b c) (setq l (1+ l)) ) (if (or (= o "GD") (= o "BH") (= o "BGH") (= o "BGD") (= o "HGB") (= o "BDG")) (setq e (reverse d)) (setq e d) ) ) (princ "\nSélectionnez la ligne à couper.") (setq e nil) (setvar "pickadd" 0) (setq a (ssget)) (if a (progn (setq n 0) (while (ssname a n) (if (= (cdr (assoc 0 (entget (ssname a n)))) "LINE") (setq b n) ) (setq n (1+ n)) ) (if b (progn (princ "\nSélectionnez les intersections.") (setvar "pickadd" 1) (setq c (ssget)) (if c (progn (setq n 0) (setq d nil) (while (ssname c n) (if (= (cdr (assoc 0 (entget (ssname c n)))) "LINE") (setq d n) ) (setq n (1+ n)) ) (if d (progn (setq n 0) (setq i 0) (setq b (entget (ssname a b))) (while (ssname c n) (setq d (entget (ssname c n))) (if (= (cdr (assoc 0 d)) "LINE") (progn (setq f (inters (list (cadr (assoc 10 b)) (caddr (assoc 10 b))) (list (cadr (assoc 11 b)) (caddr (assoc 11 b))) (list (cadr (assoc 10 d)) (caddr (assoc 10 d))) (list (cadr (assoc 11 d)) (caddr (assoc 11 d))))) (if f (progn (setq i (1+ i)) (setq e (append (list f) e)) ) ) ) ) (setq n (1+ n)) ) (if e (progn (cond ((= (cadr (assoc 10 b)) (cadr (assoc 11 b))) (if (> (caddr (assoc 10 b)) (caddr (assoc 11 b))) (setq o "HB") (setq o "BH") ) ) ((= (caddr (assoc 10 b)) (caddr (assoc 11 b))) (if (> (cadr (assoc 10 b)) (cadr (assoc 11 b))) (setq o "DG") (setq o "GD") ) ) ((> (cadr (assoc 10 b)) (cadr (assoc 11 b))) (if (> (caddr (assoc 10 b)) (caddr (assoc 11 b))) (setq o "HDB") (setq o "BGH") ) ) ((< (cadr (assoc 10 b)) (cadr (assoc 11 b))) (if (> (caddr (assoc 10 b)) (caddr (assoc 11 b))) (setq o "HGB") (setq o "BDH") ) ) ) (trie_liste o) (if (or (= o "BDH") (= o "BGH")) (progn (setq e (reverse e)) (setq k (angle (list (cadr (assoc 11 b)) (caddr (assoc 11 b))) (list (cadr (assoc 10 b)) (caddr (assoc 10 b))))) ) (setq k (angle (list (cadr (assoc 10 b)) (caddr (assoc 10 b))) (list (cadr (assoc 11 b)) (caddr (assoc 11 b))))) ) (setq g (getreal (strcat "\nValeur du décalage <" (rtos g_lign) "> : "))) (if g (setq g_lign g) ) (setq n 0) (while (nth n e) (setq p1 (polar (nth n e) k g_lign)) (setq p2 (polar (nth n e) k (- g_lign))) (command "_.break" (cdr (assoc -1 b)) p1 p2) (setq q (entget (ssname (ssget "_l") 0))) (if (/= (cdr (assoc -1 b)) (cdr (assoc -1 q))) (setq b q) (setq b (entget (cdr (assoc -1 b)))) ) (setq n (1+ n)) ) ) (princ "\nPas d'intersection.") ) ) (princ "\nAucune ligne de sélectionnée.") ) ) (princ "\nAucune Sélection.") ) ) (princ "\nAucune ligne de sélectionnée.") ) ) (princ "\nAucune Sélection.") ) (princ) ) (setq s *error*) (setq *error* *errcoup*) (setq cmd (getvar "cmdecho")) (setq h (getvar "pickadd")) (setvar "cmdecho" 0) (command "_.undo" "_group") (if (not g_lign) (setq g_lign 1.0) ) (couper_ligne) (command "_.undo" "_end") (setq *error* s) (setvar "pickadd" h) (setvar "cmdecho" cmd) (princ) )
  15. Le code 420 n'existe pas sur toutes les versions alors que le 62 est passe partout et c'est juste pour expliquer la couleur ducalque, pas le RVB (ou RGB au choix) @+
  16. Patrick_35

    vlisp

    Salut Tu as ce site en français sur autolisp, par contre, pour ce qui est du vlisp, je me sers de l’aide et de ce forum @+
  17. C'est le code 62 du dxf Si un (cdr (assoc 62 (entget (car (entsel "Objet:"))))) donne nil, c'est la couleur ducalque
  18. Juste une question bête Et avec Modemacro pour le script ? @+
  19. Patrick_35

    vlisp

    Le visual est ce qui se rapproche de vba, mais à la sauce lisp. Ce sont toutes les fonctions commençant par vl* @+
  20. Salut, Patrick content, oui...oui content Bon, blague à part, c'est très bien et le principal c'est que ça fonctionne, quels que soient les critiques que l'on puisse formuler Maintenant que tu demandes notre avis, je vais te le refaire en plus court. C’est selon ma manière de fonctionner et ce n'est surtout pas une critique de ce que tu as fait, au contraire, j’aurai cherché ailleurs. C’est juste pour mettre l'accent sur deux ou trois choses (je n'ai pas trop les chevilles qui gonflent, non...., non, donc ça va) Regarde-le et n'hésite pas à poser des questions (defun c:dg(/ i namesel entdef) (if (setq namesel (ssget)) (progn (setq i 0) (while (ssname namesel i) (setq entdef (entget (ssname namesel i))) (if (= (cdr (assoc 102 entdef)) "{ACAD_REACTORS") (entdel (cdr (assoc 330 entdef))) ) (setq i (1+ i)) ) ) ) (princ) )
  21. Pour avoir la liste des groupes (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 3)) (dictsearch (namedobjdict) "acad_group"))) @+
  22. Si tu as une image incorporée dans ton dessin et de plus s'il elle est en transparence, tu exploses la taille de ton plt @+
  23. Tu as aussi la commande lman (toujours des express) pour conserver l’état de tes calques à un instant T, que tu pourras nommer et rappeler à tout moment @+
  24. Salut Tu mets un * devant le nom du bloc que tu veux insérer pour le décomposer Ex : commande _.insert "*MON_BLOC" 0,0 1 1 0 Par contre, pour ce qui est des blocs imbriqués, par de remède miracle, il faut faire un lisp du style (non testé) (command "_.undo" "_group") (while (setq sel (ssget "x" (list (cons 0 "INSERT")))) (setq n 0) (while (ssname sel n) (if (/= (logand (cdr (assoc 70 (entget (ssname sel n))))) 16) (command "_.explode" (ssname sel n)) ) (setq n (1+ n)) ) ) (command "_.undo" "_end") (princ) @+
  25. Du moment que ça ne se transforme pas en douze travaux. C’est quand tu veux que tu passes dans ma région, et je me ferai un plaisir de t’indiquer les coins à visiter @+
×
×
  • 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é