Aller au contenu

adi.p

Membres
  • Compteur de contenus

    3
  • Inscription

  • Dernière visite

Tout ce qui a été posté par adi.p

  1. Merci beaucoup pour tes précieux conseils VDH-Bruno. J'ai mis à jour mon code, si ça peut aider quelqu'un je le met à disposition. ;Gestion de l accrochage aux objets (defun c:tremie ( / p1 p2 BG HD a b c d *error*) ; ####################################### ; ######### GESTION DES ERREURS ######### ; Sauvegarder les variables AutoCAD (defun svgvar () (setq cc (getvar "clayer") cmd (getvar "cmdecho") osm (getvar "osmode") cec (getvar "cecolor") ) ) ; Restaurer les variables AutoCAD (defun resvar () (setvar "clayer" cc) (setvar "cmdecho" cmd) (setvar "osmode" osm) (setvar "cecolor" cec) ) ; Redéfinition de la fonction *error* (defun *error* (msg) (princ (strcat "\nErreur: " msg)) ; renvoie un msg d erreur (resvar) ; Restore les variables AutoCAD (princ) ; Quitte silencieusement ) ; ######### GESTION DES ERREURS ######### ; ####################################### (svgvar) ;sauvegarde var AutoCAD ;Intéractions utilisateur (setq p1 (getpoint "\nPremier point")) (setq p2 (getcorner p1 "\nDeuxième point")) (setvar "OSMODE" 0) ;désactive l accrochage aux objets ; Position des coins ; *c1 *c2 ; ; *c3 *c4 (cond ((and (< (car p1) (car p2)) (> (cadr p1) (cadr p2))) ;p1 = c1 & p2 = c4 (setq c3 (list (car p1) (cadr p2))) (setq c2 (list (car p2) (cadr p1))) ) ((and (> (car p1) (car p2)) (> (cadr p1) (cadr p2))) ;p1 = c2 & p2 = c4 (setq c3 p2) (setq c2 p1) ) ((and (> (car p1) (car p2)) (< (cadr p1) (cadr p2))) ;p1 = c4 & p2 = c1 (setq c3 (list (car p2) (cadr p1))) (setq c2 (list (car p1) (cadr p2))) ) ((and (< (car p1) (car p2)) (< (cadr p1) (cadr p2))) ;p1 = c3 & p2 = c2 (setq c3 p1) (setq c2 p2) ) ( (*error* ("Erreur de condition")) ) ) ;Calcul des points abcd qui forment la polyligne de la trémie (setq a (list (+ (car c3) 10) (- (cadr c2) 10))) (setq b (list (- (car c2) 10) (- (cadr c2) 10))) (setq c (list (+ (car a) 15) (- (cadr a) 15))) (setq d (list (+ (car c3) 10) (+ (cadr c3) 10))) ;Création du calque 0_ouverture si non existant (if (not (tblsearch "LAYER" "0_ouverture")) (progn (command "_layer" "_new" "0_ouverture" "") (command "_layer" "_color" 251 "0_ouverture" "") ) ) ;Choix du calque 0_ouverture (setvar "clayer" "0_ouverture") ;Dessin et hachure de la trémie (command "_pline" a b c d "c") (command "_hatch" "SOLID" (entlast) "") ;Réinitialisation des variables autocad (resvar) (princ) )
  2. C'est PARFAIT! :) Merci beaucoup pour cette réponse rapide et complète! Je vais bosser sur ce LISP et le posterai si ça peut aider quelqu'un. Par contre, je ne comprend pas bien ton conseil sur la gestion d'erreur de la méthode. Tu parles de ta possibilité n° 2 avec l'OSMODE? Car le code n'est pas terminé (je voulais déjà pouvoir résoudre ce facheux soucis avant de continuer). Je dois encore adapter mon code pour tester la position des 2 points donnés et adapter le dessin en conséquence. [EDIT: j'ai compris ce que tu voulais dire... Si mon lisp plante, je perd la configuration de mes accrochages :blink: ] Le code mis à jour: (setq OSN (GETVAR "OSMODE")) (setvar "OSMODE" 0) (setq p1 (getpoint "\nPremier point")) (setq p2 (getcorner p1 "\nDeuxième point")) (setq a (list (+ (car p1) 10) (- (cadr p2) 10))) (setq b (list (- (car p2) 10) (- (cadr p2) 10))) (setq c (list (+ (car a) 15) (- (cadr a) 15))) (setq d (list (+ (car p1) 10) (+ (cadr p1) 10))) (if (not (tblsearch "LAYER" "0_ouverture")) (progn (command "_layer" "_new" "0_ouverture" "") (command "_layer" "_color" 251 "0_ouverture" "") ) ) (setvar "clayer" "0_ouverture") (command "_pline" a b c d "c") (command "_hatch" "SOLID" (entlast) "") (setvar "OSMODE" OSN)
  3. Bonjour à tous, je me lance dans un premier projet LISP qui consiste à dessiner une polyligne composé de 4 point décalé de 10cm entre 2 points opposés représentant une ouverture (porte, fenêtre, escalier...) ensuite une hachure remplie l'intérieur. Mon LISP ne gère pas encore les différentes position des 2 points donnés au début car je veux régler mon premier problème en premier. Pour faire fonctionner mon LISP, j'ai choisi le point BAS-GAUCHE et HAUT-DROITE d'un rectangle. Mon problème est que si je donne mes 2 points proche du 0,0,0 le LISP fonctionne, par contre si je m'éloigne... Le LISP ne dessine que 2 traits l'un sur l'autre. Quelqu'un aurait une idée? (setq p1 0 p2 0 a 0 b 0 c 0 d 0) (setq p1 (getpoint "\nPremier point")) (setq p2 (getcorner p1 "\nDeuxième point")) (setq a (list (+ (car p1) 10) (- (cadr p2) 10))) (setq b (list (- (car p2) 10) (- (cadr p2) 10))) (setq c (list (+ (car a) 15) (- (cadr a) 15))) (setq d (list (+ (car p1) 10) (+ (cadr p1) 10))) (if (not (tblsearch "LAYER" "0_ouverture")) (progn (command "_layer" "_new" "0_ouverture" "") (command "_layer" "_color" 251 "0_ouverture" "") ) ) (setvar "clayer" "0_ouverture") (command "_pline" a b c d "c") (command "_hatch" "SOLID" (entlast) "") D'avance merci pour votre aide
×
×
  • 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é