usegomme
Membres-
Compteur de contenus
621 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par usegomme
-
Un petit lisp pour tracé des réductions inox Iso en 3d. Je n'ai pas rentré de norme car la longueur= (D - d ) x 3 et j'ai essayé de réduire les petits écarts. La longueur s'affiche à la fin, ça permet de vérifier. Ce lisp n'est pas encore finalisé , mais il fonctionne et à partir d' autocad 2007. ; Réduction Inox Iso en 3D version 1 ; usegomme le 23/02/2009 (defun c:RedIso (/ pd pdir pf pfd h d1 d2 r r2 r3 a) (command "_undo" "_be") (setq pd (getpoint "\nPoint de départ de la reduction :")) (if pd (setq pdir (getpoint pd "\n direction de la réduction <>: "))) (cond ((and pd pdir) (command "_ucs" "_zaxis" "_none" pd "_none" pdir) (setq pd '(0. 0. 0.)) ) ) (if pd (setq d1 (getdist "\nDiamètre de départ de la reduction :"))) (if d1 (setq d2 (getdist "\nDiamètre final de la reduction :"))) (cond (d2 (setq h (* 3 (if (> d1 d2)(- d1 d2) (- d2 d1)))) (if (< 0.7 (- h (fix h)))(setq h (+ (fix h) 1))(setq h (fix h))) (setq pf (list (car pd)(cadr pd) h)) (command "_circle" "_none" pd (setq r (/ d1 2))) (setq b (entlast)) (command "_circle" "_none" pf (setq r2 (/ d2 2))) (setq b2 (entlast)) (initget "Aucun") (setq a (getangle pf "\nSi déport de quel coté?[]:")) (if (= a "Aucun")(setq a nil)) (if a (setq pfd (polar pf a (- r r2)))) (if pfd (command "_move" b2 "" "_none" pf "_none" pfd)) (command "_loft" b b2 "" "") (setq trc (entlast)) (setq epr 2) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EPAISSEUR (setq r (- r epr)) (command "_circle" "_none" pd r) (setq b (entlast)) (setq r3 (- r2 epr)) (if pfd (setq pf pfd)) (command "_circle" "_none" pf r3) (setq b2 (entlast)) ;;; pour conserver par défaut le dernier rayon valable ; (command "_circle" "_none" pf r2) ; (entdel (entlast)) ;;; (command "_loft" b b2 "" "") (command "_subtract" trc "" "_L" "") ) ) (if pdir (command "_ucs" "_p")) (command "_undo" "_e") (princ "Longueur ")(princ h) (princ) )
-
Ben, moi je suis allé boire un chocolat car tu m'as épuisé , mais tu es un gentil impitoyable , 14/20 , je n' espérais pas tant. Ouais c'est beau, mais mon carré n'est plus l'option par défaut.Je trouvais amusant d' essayer d'avoir différentes figures géométriques sans se servir d'options. Non, mais alors et si j'ai envie , et puis ça fonctionne ! Dis-donc , c'est la méthode à papy autocad14 ! Je trouve que le mode polaire est un grand progrés , je serais fâché de devoir m'en passer maintenant. J'ai pas rêvé là dis donc ! Tu me cherches ! T'ar ta gueule à la récré !
-
Bonjour à tous, A l'intention de Mr Tramber , ECR est un lisp qui ce trouve à cette adresse dans ce post , comme indiqué précédemment dans le post n° 3 , c'est pas top mais je ne sais pas faire du "PowerClic" . Entre crochet signifie que c'est ce qu'on obtient si on répond par "entrée" , c'est pas nouveau du tout ??? Je vais voir pour ta hauteur par défaut , il va falloir pour cela que je vire mon carré par défaut, mais comme il n'a guère d'utilité je ne vais pas le pleurer. Ceci dit , on PEUT taper "longueur" "entrée" "largeur" "entrée" à la volée aprés avoir donné le 1er point et indiqué une direction orthogonale (sans cliquer) avec la souris . (comme déjà indiqué plus haut). Cela ce fait trés bien en mode polaire , sans aucun mode c'est plus difficile mais on peut toujours modifier le lisp et augmenter la tolérance angulaire qui est de + ou - 1 degré actuellement. Il faut juste pousser le curseur suffisamment loin pour ne pas se retrouver avec un triangle à la place du rectangle. a+
-
Salut Lilian, effectivement on démarre bien avec la cde autocad. J'ai d'abord crée ce lisp avec la fonction getcorner pour faire la boite dynamique , mais getcorner n'est pas satisfaisant ,la boite dyn ne pivote pas avec le scu et ne suit pas le mode polaire ,et ce n' était pas facile de faire la base ortho . Du coup j'ai utilisé la cde rectang pour faire la boite dynamique, et les options visibles de cette cde sont utilisables dans le lisp.
-
Je viens de mettre l'option "Carré" accessible depuis clavier et souris pour ne pas me faire tirer les oreilles une seconde fois.
-
C'est corrigé , merci impitoyable Tramber. Petites explications : Quand les 2 premiers points sont alignés orthogonalement , un 3 eme est demandé. Si on répond par entrée un carré est dessiné , si on clique encore dans le même prolongement un rectangle est dessiné , ceci permettant de donner une direction (axe ortho) est de taper la longueur , puis la largeur sans retoucher la souris. Si on revient en sens inverse, et clique entre les 2 premiers pts, un triangle équilatéral est dessiné et si on clique plus loin que le premier point un losange est dessiné. Et évidemment si le 3 pt est selon un axe perpendiculaire c'est un rectangle sinon un parallélogramme. [Edité le 20/2/2009 par usegomme]
-
C'est vrai je ne m'en suis pas aperçu car je répond par entrée. Je vais corriger. ECR est dans ce post .
-
Bonjour J'ai creusé l'idée de tramber , voici que ça a donné. ; usegomme 20-02-2009 modif 25-02-09 intégration ex ECR.lsp ;; dessine rectangle par diagonale ;;et si a et b horiz ou vertical, parallélogramme,carré,rect,triangle équilatéral,losange équil. ;; selon orientation 3 eme point (defun er:xbox (msg) (setvar "plinewid" pw)(setvar "CMDECHO" 1) (setq *error* m:err m:err nil) (princ) ) (defun cvcp (coord1 coord2) (= (rtos coord1 2 4) (rtos coord2 2 4))) (defun modif:sommet ( ent lent typent pd pf / l1 s xs ys xp yp i ) (setq pd (trans pd 1 0) ok nil xp (car pd) yp (cadr pd)) (if (= typent "POLYLINE") (progn (setq l1 (entget (entnext (cdr (assoc -1 lent))))) ;analyse sommets (while (and (= ok nil) (/= "SEQEND" (cdr (assoc 0 l1)))) (setq s (cdr (assoc 10 l1)) xs (car s) ys (cadr s)) (if (and (cvcp xs xp)(cvcp ys yp)) ;modif sommet (progn (setq ok T pf (trans pf 1 0) l1 (subst (cons 10 pf) (assoc 10 l1) l1)) (entmod l1) (entupd ent) ) (setq l1 (entget (entnext (cdr (assoc -1 l1))))) ) ) ;fin while ) ;fin progn (progn ;; pour LWPOLYLINE (setq i 9) (while (and (= ok nil) (nth (setq i (+ i 1)) lent)) (if (= 10 (car (nth i lent))) (progn (setq s (cdr (nth i lent)) xs (car s) ys (cadr s)) (if (and (cvcp xs xp)(cvcp ys yp)) ;modif sommet (progn (setq ok T pf (trans pf 1 0) lent (subst (cons 10 pf) (nth i lent) lent)) (entmod lent) (entupd ent) ) ;fin progn ) ; fin if ) ;fin progn ) ; fin if ) ;fin while ) ;fin progn ) ) (defun c:EtirCotRect (/ sel lent typent p0 p1 p2 p3 p4 p5 p6 M F disetir angetir rect-ok) (setq m:err-ecr *error* *error* err-ecr) (setq rect-ok nil) (setq sel (entsel "\n Choix du rectangle à Modifier :")) (setq ent (car sel) lent (entget ent) typent (cdr (assoc 0 lent))) (cond ((or (= typent "POLYLINE")(= typent "LWPOLYLINE")) (redraw ent 3) (setq p0 (cadr sel) p1 (osnap p0 "_endp") p2 (osnap p0 "_mid") ang (angle p1 p2) dis (distance p1 p2) p3 (polar p2 ang dis) ) (setq x1 (car p1) y1 (cadr p1) x3 (car p3) y3 (cadr p3)) ;; trouver 2 autres sommets (if (= typent "LWPOLYLINE") (progn (setq i 9 ok 0) (while (and (/= ok 3) (nth (setq i (+ i 1)) lent)) (if (= 10 (car (nth i lent))) (progn (setq s (cdr (nth i lent)) xs (car s) ys (cadr s)) (cond ((and (not (cvcp xs x1)) (not (cvcp ys y1))) (setq F s xF (car s) yF (cadr s) ok (+ ok 1))) ((and (not (cvcp xs x3)) (not (cvcp ys y3))) (setq M s xM (car s) yM (cadr s) ok (+ ok 1))) ) ) ;fin progn ) ; fin if ) ;fin while ; verification (if (and (= ok 2)(or (and (cvcp xF x3) (cvcp yF yM) (cvcp xM x1) (cvcp y1 y3)) (and (cvcp yF y3) (cvcp xF xM) (cvcp yM y1) (cvcp x1 x3)))) (setq rect-ok T) ) );fin progn ) (if rect-ok (progn (setq p4 (getcorner "\n nouveau sommet :" F)) (if (not p4) (setq p4 (getpoint "\n nouveau sommet:" p1)) ) (setq x4 (car p4) y4 (cadr p4)) (modif:sommet ent lent typent p1 p4) ;modif 1 er sommet ; mise a jour de la liste necessaire pour LWPOLYLIGNE avant modif 2 eme sommet (setq lent (entget ent)) (cond ((cvcp x3 xF) (setq p6 (list xF y4))) ((cvcp y3 yF) (setq p6 (list x4 yF)))) (modif:sommet ent lent typent p3 p6) ; modif 2 eme sommet (setq lent (entget ent)) ; mise a jour (cond ((cvcp xM xF) (setq p5 (list xF y4))) ((cvcp yM yF) (setq p5 (list x4 yF)))) (modif:sommet ent lent typent M p5) ; modif 3 eme sommet (setq lent (entget ent)) ; mise a jour (setq ent nil) ) (progn (setq d1 (distance p0 p1) d2 (distance p0 p2)) (if (< d1 d2)(setq p2 p1)) (setq p4 (getpoint "\n nouvelle position du segment:" p2)) (setq angetir (angle p2 p4) disetir (distance p2 p4)) (setq p5 (polar p1 angetir disetir) p6 (polar p3 angetir disetir)) (modif:sommet ent lent typent p1 p5) ;modif 1 er sommet (setq lent (entget ent)); mise a jour (modif:sommet ent lent typent p3 p6) ;modif 2 eme sommet (setq ent nil) ) ) ) (T (setq ent nil) (prompt "\n * CE N'EST PAS UNE POLYLIGNE * ") (princ)) ) (gc) (setq *error* m:err-ecr m:err-ecr nil) (princ) ) (defun recartrilo (a b / c d angl_base long angl_haut larg pt) (setq m:err *error* *error* er:xbox) (setvar "CMDECHO" 0) (setq angl_base (angle a b) long (distance a b)) (setq pt nil) ; pour losange (grdraw a b -1) (initget "Carré") (setq c (getpoint b "\nPoint suivant ou [] : ")) (if (= c "Carré")(setq c nil)) (cond (c ;; if c (setq angl_haut (angle b c)) (setq ah angl_haut)(setq ab (angle a b)) (cond ((= (angtos angl_haut 0 1) (angtos angl_base 0 1)) ;;; orientation incorrecte pour rectangle ou parallèlogr. (setq larg (distance b c)) (setq c (polar b (+ angl_base (* 0.5 pi)) larg)) ; replacé à 90° (setq d (polar c (+ angl_base pi) long)) ) ((or (= (angtos (+ angl_haut pi) 0 1) (angtos angl_base 0 1)) (= (angtos (- angl_haut pi) 0 1) (angtos angl_base 0 1)) ) ;;; orientation incorrecte pour rectangle ou parallèlogr. (setq larg (distance b c) ) (setq c (polar a (+ angl_base (/ pi 3)) long));;; ->triangle équilatéral (cond ((> larg long) (setq d (polar a (+ angl_base (* 5 (/ pi 3))) long)) ;;-> losange ;;permutation des points (setq pt c c b b pt) ) ) ) (t (setq d (polar c (+ angl_base pi) long)) ) ) ) ; if c (t ;; not c -> CARRE (setq c (polar b (+ angl_base (* 0.5 pi)) long)) (setq d (polar a (+ angl_base (* 0.5 pi)) long)) ) ) (if pt (grdraw a c -1)(grdraw a b -1)) (cond ((and a b c d) (if epaisseur_box (setvar "plinewid" epaisseur_box)(setvar "plinewid" 0)) (command "_PLINE" "_none" a "_none" b "_none" c "_none" d "_c") (setvar "plinewid" pw) ) ((and a b c ) (if epaisseur_box (setvar "plinewid" epaisseur_box)(setvar "plinewid" 0)) (command "_PLINE" "_none" a "_none" b "_none" c "_c") (setvar "plinewid" pw) ) ) (er:xbox) ) (defun c:xbox (/ xa ya xb yb a b tolang angl_base ) (setvar "CMDECHO" 1) (setq pw (getvar "plinewid")) ; svgd epais polylign (setq xa (getvar "lastpoint")) ;pour controle cde rectang (setq a "Epaisseur" b nil) (while (= a "Epaisseur") (initget "Epaisseur éTirer.cotés") (setq a (getpoint "\nPremier coin ou [Epaisseur/<éTirer.cotés>]: ")) (if (= a "éTirer.cotés")(setq a nil)) (cond ((not a) (c:EtirCotRect)) ((= a "Epaisseur") (if epaisseur_box (if (setq b (getdist (strcat "\n Epaisseur du trait <" (rtos epaisseur_box 2 4) ">:")))(setq epaisseur_box b)) (setq epaisseur_box (getdist "\n Epaisseur du trait:")) ) ) ) ;cond ) (cond (a (command "_rectang" "_t" (getvar "thickness")"_c" "0" "0" "_f" "0" "_w" (if epaisseur_box epaisseur_box 0.0) "_none" a "_r" "0" pause) (setq b (getvar "LASTPOINT")) (if (or (equal a b)(equal xa b)) (setq b nil)) (if b (entdel (entlast))) ) ) (cond (b ;; if b (setq tolang 1.0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TOLERANCE ANGULAIRE + ou - 1° (setq xa (car a) ya (cadr a) xb (car b) yb (cadr b)) (setq angl_base (* (angle a b) (/ 180 pi))) (cond ((or (= angl_base 0.0) (or (= angl_base 0.0)(and (< angl_base (+ 0.0 tolang))(> angl_base (- 0.0 tolang)))(> angl_base (- 360.0 tolang))) (or (= angl_base 180.0)(and (< angl_base (+ 180.0 tolang))(> angl_base (- 180.0 tolang)))) ) (setq b (list xb ya)) (recartrilo a b) ) ((or (or (= angl_base 90.0)(and (< angl_base (+ 90.0 tolang))(> angl_base (- 90.0 tolang)))) (or (= angl_base 270.0)(and (< angl_base (+ 270.0 tolang))(> angl_base (- 270.0 tolang)))) ) (setq b (list xa yb)) (recartrilo a b) ) (t ;; rectangle par diagonale (if epaisseur_box (setvar "plinewid" epaisseur_box)(setvar "plinewid" 0)) (command "_PLINE" "_none" a "_none" (list xa yb) "_none" b "_none" (list xb ya) "_c") (setvar "plinewid" pw) ) ) ) ) (princ) ) [Edité le 20/2/2009 par usegomme][Edité le 20/2/2009 par usegomme][Edité le 25/2/2009 par usegomme][Edité le 25/2/2009 par usegomme] [Edité le 26/2/2009 par usegomme]
-
J'en profite pour faire un rappel , à tester absoluement dyn_offset de Bonuscad dans ce post . Je ne comprend pas comment ça fonctionne , mais c'est top !
-
Salut , je ne sais pas te répondre mais bonuscad à fait ce que tu désires , vas voir sur son site , tu pourras ainsi terminer ton lisp.
-
Bonsoir, tu peux rajouter toi même des commandes au menu contextuel d'autocad. Ce n'est pas trés compliqué , maintenant je ne sais pas si on peut faire exactement la même chose qu' avec LT. Je ne suis pas utilisateur de LT ni de la cde grouper d'ailleurs, je l'ai abandonnée il y a qlq années.
-
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Salut , voici un autre version avec 3 changement de scu , pour permettre de dessiner un cadre à plat en étant en vue de dessus , ce n'est pas parfait car selon l'orientation du scu de départ, le basculement du fer n'est pas toujours ce que l'on voulait. Merci à (gile) en passant, ses explications sur la fonction (trans.. ) m' ont permit ces changements de scu. En espérant n'être pas le seul à pouvoir le faire fonctionner. ;; FTD --> Fer Trois D de usegomme 20-02-2007 ;; version 3 12-02-2009 ;; tracer un profilé 3D en passant par des points et en selectionnant sa section ;; grace à l'interface écran de L.Bouquillon ;; et de PROFIL.LSP de L.Bouquillon ,adapté par Maxence Delannoy, ;; et modifié par moi-même , sans lequel cette petite routine ne peut pas fonctionner. (defun c:FTD (/ pt_i_fer ftd:clore ftd:ps ftd:sommets ftd:profmet ftd:point ftd:fer ftd:pp ftd:axefer i pt_i_fer_SCG ftd:ps_SCG) (if (null profil) (load "PROFIL") (exit)) (setq pt_i_fer (getpoint "\n Point de départ du fer: ")) (if pt_i_fer (setq ftd:clore nil ftd:ps (getpoint pt_i_fer "\n point suivant : "))) (cond ((and pt_i_fer ftd:ps) (command "_undo" "_be") ; sauve scu courant (command "_ucs" "_s" "tempftd") (if (not (zerop (getvar "cmdactive")))(command "_y")) (command "_line" "_none" pt_i_fer "_none" ftd:ps "") (setq ftd:axefer (entlast)) (setq pt_i_fer_SCG (trans pt_i_fer 1 0)) (setq ftd:ps_SCG (trans ftd:ps 1 0)) (command "_ucs" "_zaxis" "_none" pt_i_fer "_none" ftd:ps) (setq pt_i_fer (trans pt_i_fer_SCG 0 1)) (setq ftd:ps (trans ftd:ps_SCG 0 1)) (c:profil) (setq ftd:profmet (entlast)) (setq pt_i_fer_SCG (trans pt_i_fer 1 0)) (setq ftd:ps_SCG (trans ftd:ps 1 0)) (command "_ucs" "_x" "-90") (setq pt_i_fer (trans pt_i_fer_SCG 0 1)) (setq ftd:ps (trans ftd:ps_SCG 0 1)) (setq pt_i_fer_SCG (trans pt_i_fer 1 0)) (setq ftd:ps_SCG (trans ftd:ps 1 0)) (command "_ucs" "_Z" "-90") (setq pt_i_fer (trans pt_i_fer_SCG 0 1)) (setq ftd:ps (trans ftd:ps_SCG 0 1)) (setq ftd:sommets (list ftd:ps)) ;; extrusion suivant chemin (path) (command "_extrude" ftd:profmet "" "_p" ftd:axefer) (setq ftd:fer (entlast)) (while ftd:ps (setq ftd:pp ftd:ps) (if (< i 2) (setq ftd:ps (getpoint ftd:pp "\n point suivant :")) (progn (initget "Clore") (setq ftd:ps (getpoint ftd:pp "\n point suivant [Clore] :")) (if (= ftd:ps "Clore") (setq ftd:clore t) ) ) ) (if ftd:ps (progn (if ftd:clore (setq ftd:ps nil) (setq ftd:sommets (append ftd:sommets (list ftd:ps))) ) (entdel ftd:fer); efface fer 3d ;efface AXE précédent (if (or (= 0 (getvar "delobj"))(= 1 (getvar "delobj"))) (entdel ftd:axefer) ) (command "_3dpoly" "_none" pt_i_fer) (setq i 0) (repeat (length ftd:sommets) (setq ftd:point (nth i ftd:sommets)) (command "_none" ftd:point) (setq i (1+ i)) ) (if (not ftd:clore) (command "") (command "_c") ) (setq ftd:axefer (entlast)) (if (or (= 1 (getvar "delobj"))(= 2 (getvar "delobj"))) (entdel ftd:profmet) ; restaure profil 2d ) (command "_extrude" ftd:profmet "" "_p" ftd:axefer) (setq ftd:fer (entlast)) ) ) ) (if (= 1 (getvar "delobj")) (entdel ftd:axefer) ;efface AXE ) (command "_ucs" "_r" "tempftd") (command "_undo" "_e") ) ) (princ) ) -
Bonjour , j'avais oublié de désactivé l'accroche objet avec "_none" , c'est rectifié post 11.
-
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Bonjour, Lili2006 le problème doit venir de chez toi, j'ai réimporté le code depuis cadxp , désactivé mon chargement automatique, utilisé appload dans tous les sens sans problème d'autant que j'ai renommé les variables et qu'il n'y a pas de fonction dans ftd.lsp. Il te faut vérifier si profil.lsp fonctionne seul et voir avec la 1er version de ftd. Après je ne vois plus qu'un problème de chemin d' accès ou de mémoire dispo pour lisp. -
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
J'ai remplacé le code au dessus , ça devrait fonctionner chez vous aussi . Mais je vais essayer de l'améliorer encore un peu. -
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Effectivement , il y a un conflit entre ma nouvelle version et profil.lsp que je n'avais pas remarqué lors des essais probablement parce que j'utilise autoload pour charger les lisps, je cherche le problème ... En passant les noms de fonction dans profil sont trop simple du genre (ipe) là aussi il y a risque de soucis avec d'autres lisp. -
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Bonjour, est-ce que profil.lsp se charge si tu fais un glisser-deposer de celui ci depuis l'explorateur windows dans un dessin ouvert ? -
Générateur de profil métallique 2d et 3d
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Salut, j'ai modifié FTD pour pouvoir tracer un fer avec plusieurs tronçons soudés et éventuellement clos pour faire par exemple un cadre métallique soudé. ;; FTD --> Fer Trois D de usegomme 20-02-2007 ;; version 2.1.2 11-02-2009 ;; tracer un profilé 3D en passant par des points et en selectionnant sa section ;; grace à l'interface écran de L.Bouquillon ;; et de PROFIL.LSP de L.Bouquillon ,adapté par Maxence Delannoy, ;; et modifié par moi-même , sans lequel cette petite routine ne peut pas fonctionner. (defun c:FTD (/ pt_i_fer ftd:clore ftd:ps ftd:sommets ftd:profmet ftd:point ftd:fer ftd:pp ftd:axefer i) (if (null profil) (load "PROFIL") (exit)) (setq pt_i_fer (getpoint "\n Point de départ du fer: ")) (if pt_i_fer (setq ftd:clore nil ftd:ps (getpoint pt_i_fer "\n point suivant : "))) (cond ((and pt_i_fer ftd:ps) (command "_undo" "_be") (command "_line" "_none" pt_i_fer "_none" ftd:ps "") (setq ftd:axefer (entlast)) (command "_ucs" "_zaxis" "_none" pt_i_fer "_none" ftd:ps) (setq pt_i_fer (trans (cdr (assoc 10 (entget ftd:axefer))) 0 1)) (setq ftd:ps (trans (cdr (assoc 11 (entget ftd:axefer))) 0 1)) (setq ftd:sommets (list ftd:ps)) (c:profil) (setq ftd:profmet (entlast)) ;; extrusion suivant chemin (path) (command "_extrude" ftd:profmet "" "_p" ftd:axefer) (setq ftd:fer (entlast)) (while ftd:ps (setq ftd:pp ftd:ps) (if (< i 2) (setq ftd:ps (getpoint ftd:pp "\n point suivant :")) (progn (initget "Clore") (setq ftd:ps (getpoint ftd:pp "\n point suivant [Clore] :")) (if (= ftd:ps "Clore") (setq ftd:clore t) ) ) ) (if ftd:ps (progn (if ftd:clore (setq ftd:ps nil) (setq ftd:sommets (append ftd:sommets (list ftd:ps))) ) (entdel ftd:fer); efface fer 3d ;efface AXE précédent (if (or (= 0 (getvar "delobj"))(= 1 (getvar "delobj"))) (entdel ftd:axefer) ) (command "_3dpoly" "_none" pt_i_fer) (setq i 0) (repeat (length ftd:sommets) (setq ftd:point (nth i ftd:sommets)) (command "_none" ftd:point) (setq i (1+ i)) ) (if (not ftd:clore) (command "") (command "_c") ) (setq ftd:axefer (entlast)) (if (or (= 1 (getvar "delobj"))(= 2 (getvar "delobj"))) (entdel ftd:profmet) ; restaure profil 2d ) (command "_extrude" ftd:profmet "" "_p" ftd:axefer) (setq ftd:fer (entlast)) ) ) ) (if (= 1 (getvar "delobj")) (entdel ftd:axefer) ;efface AXE ) (command "_ucs" "_p") (command "_undo" "_e") ) ) (princ) ) [Edité le 10/2/2009 par usegomme] j'ai retouché qlq variables[Edité le 11/2/2009 par usegomme] Encore une retouche [Edité le 11/2/2009 par usegomme] -
Le hasard, aurait-il du plomb dans l\'aile ?
usegomme a répondu à un(e) sujet de usegomme dans Pause café
Salut, me revoilà ,certes bien tard mais il aurait été dommage de laisser passer un si bon post. Ce qui est magique c'est Noël qui nous permet de ressentir, quand l'environnement s'y prête, le profond sentiment d'une autre dimension .C'est les vibrations de l'âme sensible à la tendresse ambiante qui "s'élèvant" quelque peu vers sa Source nous donne une douce sensation. "Le message" est clair, cultivons de beaux sentiments et les actes qui vont avec pour grandir interieurement. C'est tellement simple et bête d'être à raz de terre, on sait tous le faire sans effort et on se gâche l'existance. Ce n'est pas avec le scalpel d'un chirurgien mais avec les sentiments d'amour et de tendresse que l'on découvre l'âme et la joie que l'on ressent ne trompe pas. Il ne s'agit ni de rêve ni d'illusion, mais d'ume ouverture sur la "réalité" de notre nature. Une infime parcelle de Dieu est en nous, il nous appartient de la faire notre. Apprendre, c'est le mot juste. Encore faut-il prendre ses sources aux bons endroits , être un peu cartésien et se poser des questions sans idée préconcue, plus facile a dire qu´à faire. Par rapport au créationisme biblique c´est évident, mais c´est travesti par la vision athée. Cela me semble être une trés bonne réflexion, car il reste l´option du créateur qui crée en toute logique, comme nous le faisons nous même élément par élément pour arriver à un ensemble cohérent et fonctionnel qu´il fait évoluer au gré des besoins et nécessités. Cela à partir de l´énergie "libérée" au moment du big bang , l´énergie du "vide" étant infinie d´aprés la théorie quantique, étrange non, d´autant que la théorie du big bang ne tient qu´avec l´appoint d´une force extérieure ou d´une hypothétique particule nommée inflaton. Tu as raison, mais comment faire quand on y croit soi même et malheureusement quand on est borné on peut être trés stupide. A+ -
Salut , il faut faire comme ce qu' a fait la boite à Circus , acheter 2009 mais n'installer que la 2010 , et la formation vous la programmez plus tard.
-
Bonjour, il existe aussi la commande : _.laywalk ou PARCOURCALQUES qui n'est pas mal , le retour à l'état initial ce fait par la commande CALQUEP. C'est une alternative pour éviter de jongler avec les paramètres de la cde ISOCALQUE.
-
Salut à tous , j'ai aussi quelques icônes en vrac dont ceux de la 2008 . Ils sont ici
-
Etirer rectangle par coin comme si vrai rectangle
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Non, non, pas un vrai, seulement comme si , encore que ça reste moins bien que les poignées avec l'affichage dynamique des dimensions . Mais bon , je fais avec mes petits moyens. -
Etirer rectangle par coin comme si vrai rectangle
usegomme a répondu à un(e) sujet de usegomme dans Routines LISP
Voilà j'espère qu'il a quelques intérêts. p0 point de sélection p1 sommet le plus proche p2 milieu du segment select. p3 sommet de l'autre coté du segment F sommet fixe opposé à p1 M sommet mobile opposé à p3 p4 nouveau sommet p1 p5 nouveau sommet M p6 nouveau sommet p3 ;ECR Etire Cotés Rectangle , polygone et polyligne ; usegomme le 19-01-2009 (defun err-ecr (msg) (if ent (progn (redraw ent 4) (setq ent nil))) (setq *error* m:err-ecr m:err-ecr nil) (princ ) ) (defun cvcp (coord1 coord2) (= (rtos coord1 2 4) (rtos coord2 2 4))) (defun modif:sommet ( ent lent typent pd pf / l1 s xs ys xp yp i ) (setq pd (trans pd 1 0) ok nil xp (car pd) yp (cadr pd)) (if (= typent "POLYLINE") (progn (setq l1 (entget (entnext (cdr (assoc -1 lent))))) ;analyse sommets (while (and (= ok nil) (/= "SEQEND" (cdr (assoc 0 l1)))) (setq s (cdr (assoc 10 l1)) xs (car s) ys (cadr s)) (if (and (cvcp xs xp)(cvcp ys yp)) ;modif sommet (progn (setq ok T pf (trans pf 1 0) l1 (subst (cons 10 pf) (assoc 10 l1) l1)) (entmod l1) (entupd ent) ) (setq l1 (entget (entnext (cdr (assoc -1 l1))))) ) ) ;fin while ) ;fin progn (progn ;; pour LWPOLYLINE (setq i 9) (while (and (= ok nil) (nth (setq i (+ i 1)) lent)) (if (= 10 (car (nth i lent))) (progn (setq s (cdr (nth i lent)) xs (car s) ys (cadr s)) (if (and (cvcp xs xp)(cvcp ys yp)) ;modif sommet (progn (setq ok T pf (trans pf 1 0) lent (subst (cons 10 pf) (nth i lent) lent)) (entmod lent) (entupd ent) ) ;fin progn ) ; fin if ) ;fin progn ) ; fin if ) ;fin while ) ;fin progn ) ) (defun c:ECR (/ sel lent typent p0 p1 p2 p3 p4 p5 p6 M F disetir angetir rect-ok) (setq m:err-ecr *error* *error* err-ecr) (setq rect-ok nil) (setq sel (entsel "\n Choix du rectangle à Modifier :")) (setq ent (car sel) lent (entget ent) typent (cdr (assoc 0 lent))) (cond ((or (= typent "POLYLINE")(= typent "LWPOLYLINE")) (redraw ent 3) (setq p0 (cadr sel) p1 (osnap p0 "_endp") p2 (osnap p0 "_mid") ang (angle p1 p2) dis (distance p1 p2) p3 (polar p2 ang dis) ) (setq x1 (car p1) y1 (cadr p1) x3 (car p3) y3 (cadr p3)) ;; trouver 2 autres sommets (if (= typent "LWPOLYLINE") (progn (setq i 9 ok 0) (while (and (/= ok 3) (nth (setq i (+ i 1)) lent)) (if (= 10 (car (nth i lent))) (progn (setq s (cdr (nth i lent)) xs (car s) ys (cadr s)) (cond ((and (not (cvcp xs x1)) (not (cvcp ys y1))) (setq F s xF (car s) yF (cadr s) ok (+ ok 1))) ((and (not (cvcp xs x3)) (not (cvcp ys y3))) (setq M s xM (car s) yM (cadr s) ok (+ ok 1))) ) ) ;fin progn ) ; fin if ) ;fin while ; verification (if (and (= ok 2)(or (and (cvcp xF x3) (cvcp yF yM) (cvcp xM x1) (cvcp y1 y3)) (and (cvcp yF y3) (cvcp xF xM) (cvcp yM y1) (cvcp x1 x3)))) (setq rect-ok T) ) );fin progn ) (if rect-ok (progn (setq p4 (getcorner "\n nouveau sommet :" F)) (if (not p4) (setq p4 (getpoint "\n nouveau sommet:" p1)) ) (setq x4 (car p4) y4 (cadr p4)) (modif:sommet ent lent typent p1 p4) ;modif 1 er sommet ; mise a jour de la liste necessaire pour LWPOLYLIGNE avant modif 2 eme sommet (setq lent (entget ent)) (cond ((cvcp x3 xF) (setq p6 (list xF y4))) ((cvcp y3 yF) (setq p6 (list x4 yF)))) (modif:sommet ent lent typent p3 p6) ; modif 2 eme sommet (setq lent (entget ent)) ; mise a jour (cond ((cvcp xM xF) (setq p5 (list xF y4))) ((cvcp yM yF) (setq p5 (list x4 yF)))) (modif:sommet ent lent typent M p5) ; modif 3 eme sommet (setq lent (entget ent)) ; mise a jour (setq ent nil) ) (progn (setq d1 (distance p0 p1) d2 (distance p0 p2)) (if (< d1 d2)(setq p2 p1)) (setq p4 (getpoint "\n nouvelle position du segment:" p2)) (setq angetir (angle p2 p4) disetir (distance p2 p4)) (setq p5 (polar p1 angetir disetir) p6 (polar p3 angetir disetir)) (modif:sommet ent lent typent p1 p5) ;modif 1 er sommet (setq lent (entget ent)); mise a jour (modif:sommet ent lent typent p3 p6) ;modif 2 eme sommet (setq ent nil) ) ) ) (T (setq ent nil) (prompt "\n * CE N'EST PAS UNE POLYLIGNE * ") (princ)) ) (gc) (setq *error* m:err-ecr m:err-ecr nil) (princ) ) -
Bonjour , suite au post de lili2006 souhaitant de vrai entité rectangle , et en attendant qu'autodesk lui fasse ce plaisir, j'ai fait un lisp qui permet d'étirer un rectangle par un sommet comme s'il s'agissait d'un vrai rectangle . Ca reste limité (au moins pour l'instant) car le rectangle ne doit pas être pivoté et doit être en LWPOLYLINE pour être reconnu , dans les autres cas le lisp réagit à peu près comme ce que j'avais fait dans ce post ci et qui m'a servi de base. Le code suit.
