eklundh80
Membres-
Compteur de contenus
9 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par eklundh80
-
[Résolu] Dessiner des lignes avec "recouvrement"
eklundh80 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour, Si cela peut aider j'avais fait un bloc pour le recouvrement des TS (répartition d'ou les 240), à adapter pour le sens porteur (600). (voir Wbloc en PJ) Cela peut éviter de passer par un Lisp, ou mieux utiliser le Lisp et le commander en Lisp (gestion de la longueur et de la visibilité selon le recouvrement, ..) TS rec1&2.dwg -
Récupération du nom de SCU lié à un Viewport d'une présentation
eklundh80 a répondu à un(e) sujet de fabcad dans AutoCAD 2020-2024
Bonjour, Voici un lisp qui affiche dans la ligne de commande le nom du scu si présent, à adapter selon les besoins pour entrer la valeur dans un texte. Il suffit de sélectionner la fenêtre. (defun c:ucs_viewport ( / vp a b) (if (and (setq vp (car (entsel "Choix de la fenêtre"))) (= (cdr (assoc 0 (entget vp))) "VIEWPORT") (setq a (assoc 345 (entget vp))) (setq b (assoc 2 (entget (cdr a)))) ) (cdr b) (princ) ) ) -
Je me sers également de la routine de Didier (merci au passage pour ton site qui m'a servi et me sert encore a mieux comprendre le langage) avec le lisp suivant pour changer de lisp (j'ai toujours la variable ucsfollow à 1 pour que d'autres puissent basculer les scu avec l'icone). Cela me permet de créer un menu déroulant reprenant la liste des mes scu et de valider par le chiffre devant le nom du scu. La bascule me permettant de rester au même endroit avec le même zoom. ;;changer le scu (defun c:90 ( / *error* dyn ucs lst i lst2 a b c h ) (defun *error* (msg) (if dyn (setvar "DYNMODE" dyn)) (if ucs (setvar "UCSFOLLOW" ucs)) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) ) (vl-load-com);charge le support ActiveX Vlisp (setq dyn (getvar "DYNMODE") ucs (getvar "UCSFOLLOW") ) (setvar "DYNMODE" 3) (setvar "UCSFOLLOW" 1) (vlax-for n (vla-get-usercoordinatesystems (vla-get-activedocument (vlax-get-acad-object))) (setq lst (append lst (list (vla-get-name n)))) ) (setq lst (acad_strlsort (append (list "_SCG") lst)) c (trans (getvar "viewctr") 1 0) ;;stocker centre de la vue en SCG h (getvar "viewsize") ;;stocker hauteur d'affichage i 0) (foreach n lst (setq n (strcat (itoa (setq i (1+ i))) " " n);; concatène chiffre " " et nom du scu lst2 (cons n lst2);; crée la liste avec chiffre en préfixe ) );;fin de foreach (setq lst2 (reverse lst2)) (initget 6) (or (setq a (getint (strcat "choix du scu" " [" (lst2str lst2 "/") "] <" (nth 0 lst2) ">"))) (setq a (atoi;;convertit en entier (substr (nth 0 lst2) 1;;début de la chaîne (vl-string-position (ascii " ") (nth 0 lst2));;position de " " ))) ) (foreach n lst2 (if (= a;;si chiffre = (atoi (substr n 1 (vl-string-position (ascii " ") n))));;chiffre de l'élément (setq b (substr n (+ 2 (vl-string-position (ascii " ") n)));;crée le nom du calque choisi ))) (and b (if (= b "_SCG") (progn (command "_ucs" "_world"); passer au scg (command "_ZOOM" "_C" c h) ) (progn (command "_ucs" "_Named" "R" b) (command "_ZOOM" "_C" (trans c 0 1) h) ) ) ) (setvar "DYNMODE" dyn) (setvar "UCSFOLLOW" ucs) (princ) )
-
Bonjour, Après une modification de bloc si ucsfollow est à 1, la fermeture de l'éditeur de bloc entraîne un retour au point 0.0. Problème connu d'Autodesk: zoom avant après bclose Voici un lisp qui m'a permis d'utiliser les réacteurs : Si ucsfollow à 1 = mise à 0 de ucsfollow automatique à l'ouverture de l'éditeur de bloc et mise à 1 de ucsfollow à la fermeture de l'éditeur de bloc. (defun c:ucs1 () (kd:ucsfollow T)) ;;activation manuelle (defun c:ucs0 () (kd:ucsfollow nil)) ;;désactivation manuelle (defun kd:ucsfollow ( on ) ;;nettoyage des réacteurs (foreach grp (vlr-reactors :vlr-command-reactor) (foreach obj (cdr grp) (if (= "kd:ucsfollow" (vlr-data obj)) (vlr-remove obj) ) ) ) (or (and on (vlr-command-reactor "kd:ucsfollow" '( (:vlr-commandwillstart . kd:ucs_off) (:vlr-commandended . kd:ucs_on) (:vlr-commandcancelled . kd:ucs_on) (:vlr-commandfailed . kd:ucs_on) ) ) (princ "\nreacteur ucsfollow sur bedit actif") ) (princ "\nreacteur ucsfollow sur bedit inactif") ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;; (defun kd:ucs_off (reac arg ) (if (and (wcmatch (car arg) "BEDIT,-BEDIT,BCLOSE") (= 1 (getvar "ucsfollow")) ) (progn (setq *ucsfollow* T) (setvar "ucsfollow" 0) ) ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; (defun kd:ucs_on (reac arg) (if (and *ucsfollow* (= (getvar "UCSFOLLOW") 0) (wcmatch (car arg) "BEDIT,-BEDIT,BCLOSE") ) (setvar "UCSFOLLOW" 1) ) (setq *ucsfollow* nil) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;execution auto au lancement ;;à intégrer à acaddoc si existe, ;|((lambda ( ) (vl-load-com) (if (= 'list (type s::startup)) (if (not (member '(kd:ucsfollow t) s::startup)) (setq s::startup (append s::startup '((kd:ucsfollow t)))) ) (defun-q s::startup nil (kd:ucsfollow t)) ) (princ) ) )|;
-
Bonjour, Voici un lisp pour afficher le style de tracé dans toutes les présentations ;;affiche le style de tracé dans toutes les présentations (defun c:actb ( / *error*) (defun *error* (msg) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) ) (vl-load-com) (vlax-for l (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (or (= (vla-get-name l) "Model") (vla-put-showplotStyles l :vlax-true) ) ) (vla-Regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports) (princ) )
-
Bonjour, Et en utilisant le lisp de Lee Mac Nburst?
-
Salut, voici un lisp avec une routine de Lee Mac pour remettre les chemins relatifs en absolu: (defun c:fullxref ( / etat) (defun *error* (msg) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) ) (vl-load-com) (vlax-for b (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (= (vla-get-isxref B) :vlax-true) ;; bloc = xref (wcmatch (vla-get-path B) ".*") ;; chemin commence par . ) (progn (setq etat (logand 32 (cdr (assoc 70 (tblsearch "block" (vla-get-name B)))))) ;;enregistre l'état de chargement (if (findfile (LM:XRef:Relative->Full (vl-filename-directory (getvar 'dwgprefix)) (vla-get-path B))) ;;si chemin existe (progn (vla-put-path b (LM:XRef:Relative->Full (vl-filename-directory (getvar 'dwgprefix)) (vla-get-path B)));; modifie le chemin de l'xref (vla-reload B) ;;recharge l'xref (if (/= etat 32) ;;si état différent de 32 (chargé) (vla-unload B) ;;décharger l'xref ) ;;fin de if ) ;;fin de progn ) ;;if findfile ) ;;progn ) ;;fin de if ) ;;fin de vlax (princ) ) ;;-------------=={ Relative Path to Full Path }==-------------;; ;; ;; ;; Converts a Relative XRef path to a Full Path. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; dir - Directory of the Drawing in which the Xref resides ;; ;; path - Relative Xref Path ;; ;;------------------------------------------------------------;; ;; Returns: Full XRef Path ;; ;;------------------------------------------------------------;; (defun LM:XRef:Relative->Full ( dir path ) (setq dir (vl-string-right-trim "\\" dir)) (cond ( (eq ".." (substr path 1 2)) (LM:XRef:Relative->Full (substr dir 1 (vl-string-position 92 dir nil t)) (substr path 4) ) ) ( (eq "." (substr path 1 1)) (strcat dir (substr path 2)) ) ( (strcat dir "\\" path)) ) )
-
Un LISP pour créer une polyligne qui représente un isolant ?
eklundh80 a répondu à un(e) sujet de brunomu dans AutoCAD 2010
Salut, Merci pour ces routines. Cela fonctionne comme le souhaitait l'auteur de ce post. Je suis sur Autocad 2016. Mais je pensais que cela créait une polyligne avec le motif de l'isolant, Je me suis dit: si je mettais en pratique les explications sur DA-Code (il est super ce site, merci Didier) "bulge, vlax-curve" mais en cherchant sur le net je suis tombé sur ce lien qui semble bien fonctionné InsulBattPoly.zip Merci lecrabe pour le partage des routines -
Un LISP pour créer une polyligne qui représente un isolant ?
eklundh80 a répondu à un(e) sujet de brunomu dans AutoCAD 2010
Salut à tous, est-ce que quelqu'un aurait ces 4 routines en stock ? (liens hs) J'ai fait un bloc dynamique avec une option réseau, mais ce n'est pas très concluant wbloc isolation
