-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
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)))
-
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 @+
-
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 @+
-
Getfiled pour un dossier et non un fichier
Patrick_35 a répondu à un(e) sujet de LUDWIG dans Débuter en LISP
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 @+ -
Salut (vlax-safearray->list (vlax-variant-value [i]variant[/i])) @+
-
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 @+
-
Groupes et Base de donnée
Patrick_35 a répondu à un(e) sujet de Titifonky dans Pour aller plus loin en LISP
Ouf, ça commence à décoiffer sérieux Pour les routines, tu as ce forum @+ -
En faisant une comparaison avec des (entlast) ?
-
ouvrir en lecture seule
Patrick_35 a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
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 @+ -
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 @+
-
Groupes et Base de donnée
Patrick_35 a répondu à un(e) sujet de Titifonky dans Pour aller plus loin en LISP
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 @+ -
activer couleur d\'un objet
Patrick_35 a répondu à un(e) sujet de MAC dans Personnalisation, macros, DIESEL
Si dans la liste, tu ne trouves pas le code 62, c’est que c’est ducalque, idem pour le code 370 @+ -
exécuter MODEMACRO
Patrick_35 a répondu à un(e) sujet de rebcao dans Personnalisation, macros, DIESEL
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 @+ -
Diviser avec des objets
Patrick_35 a répondu à un(e) sujet de Titifonky dans Pour aller plus loin en LISP
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) ) -
activer couleur d\'un objet
Patrick_35 a répondu à un(e) sujet de MAC dans Personnalisation, macros, DIESEL
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) @+ -
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 @+
-
activer couleur d\'un objet
Patrick_35 a répondu à un(e) sujet de MAC dans Personnalisation, macros, DIESEL
C'est le code 62 du dxf Si un (cdr (assoc 62 (entget (car (entsel "Objet:"))))) donne nil, c'est la couleur ducalque -
Juste une question bête Et avec Modemacro pour le script ? @+
-
Le visual est ce qui se rapproche de vba, mais à la sauce lisp. Ce sont toutes les fonctions commençant par vl* @+
-
Groupes et Base de donnée
Patrick_35 a répondu à un(e) sujet de Titifonky dans Pour aller plus loin en LISP
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) ) -
Groupes et Base de donnée
Patrick_35 a répondu à un(e) sujet de Titifonky dans Pour aller plus loin en LISP
Pour avoir la liste des groupes (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 3)) (dictsearch (namedobjdict) "acad_group"))) @+ -
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 @+
-
simultanément.geler ou dégeler les calques ?
Patrick_35 a répondu à un(e) sujet de bmolama dans AutoCAD 2005
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 @+ -
Insertion et décomposition de blocs multiples
Patrick_35 a répondu à un(e) sujet de jms dans AutoCAD 2005
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) @+ -
importer un bloc sans la commande _insert
Patrick_35 a répondu à un(e) sujet de Patrick_35 dans Visual LISP
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 @+
