Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 25/07/2019 dans toutes les zones

  1. Bonjour ! Oui c'est encore moi, le mec chiant avec son LISP de quadrillage :D MAIS cette fois-ci je tenais à partager un programme que j'ai fait en parallèle sur l'insertion automatique de blocs dynamiques de banches pour la réalisation de calepinage (et de rotation de banches). Ci-joint la représentation des blocs dynamiques avec plusieurs visibilités : Donc le but du programme est l'insertion automatique de banches avec le choix entre les différentes visibilités (avec/sans ré-hausse/sous-hausse) mais aussi le fait de pouvoir incrémenter le jour de rotation et ranger les banches par calques selon le jour. De plus j'ai ajouté la possibilité de simplifier les blocs en désactivant un calque qui permet de n'avoir plus que les joints et les trous de banches (en vert et rouge) ce qui reste plus agréable pour dessiner. Si je partage ce programme, déjà si jamais quelqu'un en a besoin et bien tant mieux, sinon c'est pour m'en servir pour apprendre. J'aimerai savoir si vous avez une idée de comment l'améliorer (je pars du principe qu'il est toujours possible d'améliorer un programme) tout aussi bien dans l'écriture que dans son utilisation et m'expliquer pourquoi, voilà tout. :P Ci-joint le programme LISP : (Edit suite à la remarque de eklundh80) ;; +---------------------------+ ;; | Projet : CALEPINAGE | ;; +---------------------------+ ;;;***************** ;;; DONNEES ;;;***************** ;;Recuperation et redefinition des donnees utilisateur (defun init () (setq acrobj (getvar "OSMODE")) ;Accrochage aux objets (setq units_angle (getvar "AUNITS")) ;Unites angulaire (setq nbdeci (getvar "LUPREC")) ;Nombre de decimal (setq attreq (getvar "ATTREQ")) (setq attdia (getvar "ATTDIA")) (setvar "OSMODE" 167) ;Accrobj (Ext'/Mil'/Centre/Intersect'/Perpendi') (setvar "AUNITS" 0) ;Angle en degres (setvar "LUPREC" 2) ;Decimale choisie : 2 (setvar "ATTREQ" 1) (setvar "ATTDIA" 0) ) ;;RàZ des modifications des donnees utilisateur (defun reinit () (setvar "OSMODE" acrobj) (setvar "AUNITS" units_angle) (setvar "LUPREC" nbdeci) (setvar "ATTREQ" attreq) (setvar "ATTDIA" attdia) ) (defun IncrCalq (name value inf sup) (cond ((= calq_color sup) (setq calq_color inf)) ((or (= calq_color nil) (< calq_color inf) (> calq_color sup)) (setq calq_color value)) ((and (<= calq_color sup) (>= calq_color inf)) (setq calq_color (1+ calq_color))) ) (setq i (1+ i)) (setq calq_name (strcat name (rtos i 2 0))) (VerifCalq calq_name calq_color "CONTINUOUS") ) (defun VerifCalq (name color typel) (if (not (tblsearch "LAYER" name)) (command "_LAYER" "N" name "CO" color name "TL" typel name "") ) (command "_LAYER" "CH" name "") ) (defun Ins_Banche (Pt) (cond ((= SH RH "Non") (setq Chx "SH / RH" Num "0")) ((and (/= SH "Non") (/= RH "Non")) (setq Chx "SH / RH" Num (strcat SH " / " RH))) ((and (= SH "Non") (/= RH "Non")) (setq Chx "RH" Num RH)) ((and (/= SH "Non") (= RH "Non")) (setq Chx "SH" Num SH)) ) (setq Vis (strcat Chx " - " Num)) (setq name (strcat "Bloc_Banche_" Dim)) (command "-INSERER" name Pt 1 1 0 "") (cond ((= Vue "Face") (setpropertyvalue (entlast) (strcat "AcDbDynBlockProperty" "Visibilité1") Vis)) ((= Vue "Dessus") (setpropertyvalue (entlast) (strcat "AcDbDynBlockProperty" "Visibilité1") Vue)) ) ) ;;; ***************** ;;; PROGRAMME ;;; ***************** (defun c:CALEPINAGE (/ Choix_unit Choix Dim Vue SH RH Chx Num name acrobj units_angle nbdeci attreq attdia) (init) (initget 1 "MIllimetre Centimetre MEtre") (setq Choix_unit (getkword "\nSpécifier l'unité du dessin [MIllimetre/Centimetre/Metre] : ")) (cond ((= Choix_unit "MIllimetre") (setvar "INSUNITS" 4)) ((= Choix_unit "Centimetre") (setvar "INSUNITS" 5)) ((= Choix_unit "MEtre") (setvar "INSUNITS" 6)) ) (if (null i) (setq i 0)) (initget "62.5 125 250") (setq Dim (cond ((getkword "\nQuelle taille de banche souhaitez-vous implanter [62.5/125/250] <250> ?")) ("250"))) (initget "100 150 Non") (setq SH (cond ((getkword "\nSouhaitez-vous une sous-hausse [100/150/Non] <Non> ?")) ("Non"))) (initget "500 Non") (setq RH (cond ((getkword "\nSouhaitez-vous une ré-hausse [500/Non] <Non> ?")) ("Non"))) (initget "Face Dessus") (setq Vue (cond ((getkword "\nSous quelle vue souhaitez-vous l'implanter [Face/Dessus] <Dessus> ? ")) ("Dessus"))) (while (/= Choix "Quitter") (initget "J-Incrément Banche Quitter Implanter") (if (null (setq Choix (getkword "\nQue souhaitez-vous faire [J-Incrément/Banche/Quitter] <Implanter> ? "))) (progn (setq Choix "Implanter") (while (setq Pt (getpoint "\nVeuillez saisir un nouveau point d'insertion : ")) (Ins_Banche Pt) ) ) (cond ((= Choix "J-Incrément") (IncrCalq "00-CALEPINAGE JOUR " 1 1 7)) ((= Choix "Banche") (progn (initget "62.5 125 250") (setq Dim (cond ((getkword "\nQuelle taille de banche souhaitez-vous implanter [62.5/125/250] <250> ? ")) ("250")) ) (initget "100 150 Non") (setq SH (cond ((getkword "\nSouhaitez-vous une sous-hausse [100/150/Non] <Non> ?")) ("Non")) ) (initget "500 Non") (setq RH (cond ((getkword "\nSouhaitez-vous une ré-hausse [500/Non] <Non> ?")) ("Non")) ) (initget "Face Dessus") (setq Vue (cond ((getkword "\nSous quelle vue souhaitez-vous l'implanter [Face/Dessus] <Dessus> ?")) ("Dessus")) ) ) ) ) ) ) ) Bonne journée. Ksow
    1 point
×
×
  • 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é