Rechercher dans la communauté
Affichage des résultats pour les étiquettes 'présentation'.
3 résultats trouvés
-
Bonjour à tous, Je travaille en tant que géomètre et aimerais optimiser mon temps de travail sur des tâches répétitives sur le logiciel Autocad covadis/zwcad avec géogex Je m’explique. Lors d’un dossier, il peut nous arriver d’établir plusieurs plans. (jusqu’à 7 différents) Sur ces plans, plusieurs références restent les mêmes : Commune, section et numéro cadastral, opérateur, client… Lorsque je glisse mes présentations dans mon fichier de dessin, je dois donc compléter les mêmes informations sur ces différentes présentations. Pour les présentations similaires, je réalise un copier et un coller avec point de base (facile et rapide) mais lorsque les présentations sont différentes, je dois re modifier à la main les infos similaires. Afin de ne renseigner qu'une seule fois les informations, j’ai donc imaginé qu’une table à renseigner au début dans le fichier de dessin .dwg, et liée avec un lips aux présentations avec des champs de fusion(par exemple), pourrait être la solution. Seul problème, je ne connais pas cette programmation. Pourriez-vous m’aider sur le sujet ou me conseiller sur un outil existant dans autocad/zwcad. En vous remerciant par avance. Rémi,
-
Salut à tous ! Je cherche une routine LISP qui pour chaque calque présent dans un fichier pourrait dupliquer une présentation "Modele" contenant une fenêtre et un texte simple. La fenêtre n'afficherai qu'un seul calque par présentation, le nom de l'onglet ainsi que le texte de chaque serait le nom du calque. Vous auriez ceci en stock ? J'ai fait quelques recherches sans succès et j'ai même essayer de passer par nos amis les IA pour coder cette routine mais ça n'a jamais fonctionné ... Merci à tous pour l'aide !
- 11 réponses
-
- lisp
- présentation
-
(et 1 en plus)
Étiqueté avec :
-
Lisp : aplomb et balade entre les étages - Copie et déplacement incrémenté
OïD a posté un sujet dans Routines LISP
Salut, Voici ma Lisp qui me fait gagner un temps fou . N'hésiter pas à me faire des retours ou idées d'amélioration. 1. Présentation de la routine LISP d'aplomb et balade entre les étages : - PAN PAN Cette routine permet de définir un écart personnalisé correspondant à la distance entre les étages, rendant vos opérations d'aplomb précises et rapides. C'est un outil très pratique pour les plombages et pour gérer efficacement des plans multi-niveaux. En gros elle fait des Pan, Copies et Déplacements incrémentés. Cette LISP fonctionne aussi sur Autocad LT. 2. Intérêt de la routine Navigation fluide entre les étages : Utilisez les commandes 'BBB' et 'HHH' pour passer rapidement d'un étage à l'autre sans effort. Copie et déplacement précis : Les commandes 'HH', 'BB', 'DH', et 'DB' permettent de copier ou déplacer des éléments avec une grande précision. Cohérence dans la disposition des étages : Grâce à un écart prédéfini, ça assure l'aplomb entre les étages dans votre plan. Flexibilité d'inversion : Appuyez sur 'I' ou 'N' pour inverser facilement la direction (haut/bas) pendant vos opérations. Facilite les Présentations : Copier une fenêtre/présentation, faite 'HHH' dans la fenêtre et vous avez l'étage du dessus d'aplomb avec la disposition de la présentation précédente. 3. Prérequis Avant de commencer, assurez-vous de : Disposer vos étages aligné avec un écart constant entre chaque étages et de préférence un chiffre rond (par exemple : RDC à x0 y0, R+1 à x0 y10, R+2 à x0 y20). Définir l'écart (incrément) entre les étages en utilisant la commande 'EE' avant d'utiliser les autres fonctions. 4. Utilisation Voici comment tirer parti de cette routine : EE : Configurez l'écart (incrément) en spécifiant deux points ( de Bas en Haut) correspondant à la distance entre deux étages consécutifs. Mettez un écart rond pour plus de précision et de facilité. BBB/HHH : Naviguez vers l'étage supérieur ou inférieur. HH/BB : Copiez la sélection d'aplomb sur l'étage supérieur ou inférieur. DH/DB : Déplacez la sélection d'aplomb sur l'étage supérieur ou inférieur. 5. Exemple pratique : Faites une ligne représentant votre décalage entre étages (par exemple, une ligne verticale de 10 de longueur ) Utilisez 'EE' pour définir l'écart (incrément) entre le RdC et le R+1 avec les 2 extrémités de la ligne précédente (par exemple, 10 unités en Y ). Sélectionnez les objets à copier du RdC au R+1. Utilisez 'HH' pour copier d'aplomb vers le haut, répétez (Espace ou Entrer) pour copier au R+2, ou entrez 'I' ou 'N' pour inverser et copier d'aplomb vers le bas au Sous-Sol. 6. Conseils et astuces Configurez des raccourcis clavier (exemple : boutons précédent/suivant de la souris) pour accéder rapidement aux commandes fréquentes, comme ^c^cHHH pour monter d'un étage. Créez des boutons sur la palette d'outils pour un accès rapide aux commandes. N’oubliez pas que vous pouvez inverser la direction ( 'I' ou 'N') pour alterner facilement entre les copies/déplacements vers le haut et vers le bas. Peut aussi servir pour des déplacements/copies rapide dans une légende, tableau ou n'importe quel paterne régulier. Très utile pour avoir des présentations qui plombent d'un étage à l'autre. Cette routine LISP est là pour faciliter les plans multi-étages, c'est une méthode rapide et précise pour naviguer, présenter et manipuler les éléments entre les différents niveaux. Profitez-en ! Bonne journée. ;; Raccourcis clavier ==> ^c^cHHH ;; Raccourcis clavier ==> ^c^cBBB ;; Code AutoLISP pour gérer le décalage en X et en Y et effectuer des opérations de panoramique ;; Code AutoLISP original avec ajout des commandes HH, BB, DH, et DB avec fonctionnalité de répétition ;; Commande EE pour configurer l'écart en X et Y en spécifiant deux points (defun c:ee () ;; Demander à l'utilisateur de spécifier deux points (setq pt1 (getpoint "\nSpécifiez le premier point: ")) (setq pt2 (getpoint "\nSpécifiez le second point: ")) ;; Calculer la distance entre les deux points (setq dx (- (car pt2) (car pt1))) (setq dy (- (cadr pt2) (cadr pt1))) ;; Stocker les valeurs de décalage dans des variables d'environnement (setenv "EcartX" (rtos dx 2 9)) (setenv "EcartY" (rtos dy 2 9)) ;; Afficher les valeurs de décalage (princ (strcat "\nEcart en X défini à: " (rtos dx 2 9))) (princ (strcat "\nEcart en Y défini à: " (rtos dy 2 9))) ;; Message explicatif (princ "\nL'écart a été configuré avec succès.") (princ "\nUtilisez les commandes 'BBB', 'HHH', 'HH', 'BB', 'DH', et 'DB' pour naviguer, copier et déplacer en utilisant ces écarts.") (princ) ) ;; Commande pour effectuer un PAN vers le bas avec les valeurs de décalage en X et Y (defun c:bbb () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer des valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Exécuter la commande PAN avec les valeurs de décalage en X et Y (command "_.pan" "0,0" (strcat "@" ecartX "," ecartY)) (princ) ) ;; Commande pour effectuer un PAN vers le haut avec les valeurs de décalage négatives (defun c:hhh () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer des valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Calculer les valeurs de décalage négatives (setq ecartX-neg (rtos (- (atof ecartX)) 2 9)) (setq ecartY-neg (rtos (- (atof ecartY)) 2 9)) ;; Exécuter la commande PAN avec les valeurs de décalage négatives (command "_.pan" "0,0" (strcat "@" ecartX-neg "," ecartY-neg)) (princ) ) ;; Commande HH (Copie Haut) (defun c:hh () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer les valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Vérifier s'il y a une sélection active (setq sel (ssget)) (if sel (progn (setq multiplier-up 1) (setq multiplier-down 1) (setq direction 1) (setq first-inversion T) (while T (setq current-multiplier (if (> direction 0) multiplier-up multiplier-down)) (setq vector (strcat "@" (rtos (* (atof ecartX) direction current-multiplier) 2 9) "," (rtos (* (atof ecartY) direction current-multiplier) 2 9))) (command "_.COPY" sel "" "0,0" vector) (princ (strcat "\nCopie effectuée: " vector)) (initget "Inverser Nouveau Quitter") (setq input (getkword "\nAppuyez sur Entrée pour continuer, tapez [I]nverser, [N]ouveau ou [Q]uitter: ")) (cond ((= input "Quitter") (exit)) ((or (= input "Inverser") (= input "Nouveau")) (setq direction (* direction -1)) (if first-inversion (setq first-inversion nil) (if (> direction 0) (setq multiplier-up (1+ multiplier-up)) (setq multiplier-down (1+ multiplier-down)) ) ) ) (T (if (> direction 0) (setq multiplier-up (1+ multiplier-up)) (setq multiplier-down (1+ multiplier-down)) ) ) ) ) ) (princ "\nAucune sélection n'a été faite.") ) (princ) ) ;; Commande BB (Copie Bas) (defun c:bb () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer les valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Vérifier s'il y a une sélection active (setq sel (ssget)) (if sel (progn (setq multiplier-up 1) (setq multiplier-down 1) (setq direction -1) (setq first-inversion T) (while T (setq current-multiplier (if (> direction 0) multiplier-up multiplier-down)) (setq vector (strcat "@" (rtos (* (atof ecartX) direction current-multiplier) 2 9) "," (rtos (* (atof ecartY) direction current-multiplier) 2 9))) (command "_.COPY" sel "" "0,0" vector) (princ (strcat "\nCopie effectuée: " vector)) (initget "Inverser Nouveau Quitter") (setq input (getkword "\nAppuyez sur Entrée pour continuer, tapez [I]nverser, [N]ouveau ou [Q]uitter: ")) (cond ((= input "Quitter") (exit)) ((or (= input "Inverser") (= input "Nouveau")) (setq direction (* direction -1)) (if first-inversion (setq first-inversion nil) (if (> direction 0) (setq multiplier-up (1+ multiplier-up)) (setq multiplier-down (1+ multiplier-down)) ) ) ) (T (if (> direction 0) (setq multiplier-up (1+ multiplier-up)) (setq multiplier-down (1+ multiplier-down)) ) ) ) ) ) (princ "\nAucune sélection n'a été faite.") ) (princ) ) ;; Commande DH (Déplacement Haut) (defun c:dh () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer les valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Vérifier s'il y a une sélection active (setq sel (ssget)) (if sel (progn (setq direction 1) (while T (setq vector (strcat "@" (rtos (* (atof ecartX) direction) 2 9) "," (rtos (* (atof ecartY) direction) 2 9))) (command "_.MOVE" sel "" "0,0" vector) (princ (strcat "\nDéplacement effectué: " vector)) (initget "Inverser Nouveau Quitter") (setq input (getkword "\nAppuyez sur Entrée pour continuer, tapez [I]nverser, [N]ouveau ou [Q]uitter: ")) (cond ((= input "Quitter") (exit)) ((or (= input "Inverser") (= input "Nouveau")) (setq direction (* direction -1))) ) ) ) (princ "\nAucune sélection n'a été faite.") ) (princ) ) ;; Commande DB (Déplacement Bas) (defun c:db () ;; Récupérer les valeurs des variables de dessin "EcartX" et "EcartY" (setq ecartX (getenv "EcartX")) (setq ecartY (getenv "EcartY")) ;; Si les variables ne sont pas définies, demander à l'utilisateur d'entrer les valeurs (if (not ecartX) (setq ecartX (getreal "\nEntrez la valeur pour Ecart en X: ")) ) (if (not ecartY) (setq ecartY (getreal "\nEntrez la valeur pour Ecart en Y: ")) ) ;; Vérifier s'il y a une sélection active (setq sel (ssget)) (if sel (progn (setq direction -1) (while T (setq vector (strcat "@" (rtos (* (atof ecartX) direction) 2 9) "," (rtos (* (atof ecartY) direction) 2 9))) (command "_.MOVE" sel "" "0,0" vector) (princ (strcat "\nDéplacement effectué: " vector)) (initget "Inverser Nouveau Quitter") (setq input (getkword "\nAppuyez sur Entrée pour continuer, tapez [I]nverser, [N]ouveau ou [Q]uitter: ")) (cond ((= input "Quitter") (exit)) ((or (= input "Inverser") (= input "Nouveau")) (setq direction (* direction -1))) ) ) ) (princ "\nAucune sélection n'a été faite.") ) (princ) ) ;; Afficher un message pour indiquer que les fonctions ont été chargées (princ "\n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Les commandes suivantes sont disponibles :") (princ "\n 1. 'EE' - Configurer l'écart en spécifiant deux points (de Bas en Haut).") (princ "\n 2. 'BBB' - Effectuer un panoramique vers le Bas.") (princ "\n 3. 'HHH' - Effectuer un panoramique vers le Haut.") (princ "\n 4. 'HH' - Copier la sélection vers le Haut (copies multiples possibles, tapez 'I' ou 'N' pour inverser).") (princ "\n 5. 'BB' - Copier la sélection vers le Bas (copies multiples possibles, tapez 'I' ou 'N' pour inverser).") (princ "\n 6. 'DH' - Déplacer la sélection vers le Haut (déplacements multiples possibles, tapez 'I' ou 'N' pour inverser).") (princ "\n 7. 'DB' - Déplacer la sélection vers le Bas (déplacements multiples possibles, tapez 'I' ou 'N' pour inverser).") (princ "\n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pour configurer des Raccourcis Clavier pour les Pan dans tes Commandes Personalisée ==> ^c^cHHH & ^c^cBBB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -") (princ) - PanPan.lsp
