azop Posté(e) le 6 juillet 2010 Posté(e) le 6 juillet 2010 Bonjour, j'essais de faire un "programme" qui permettrai de faire une bande de 90mm de largeur avec au milieu de cette bande 4 cerclessoit la bande fait un "coude" dans ce cas a priori sa marchesoit elle fait un "double coude" dans ce cas uniquement une des trois bande a ses cotés parallèle les 2 autres ne sont pas parallèle et elles ne font pas 90 de large mais 90 et des poussières (defun c:cli (/ nbr C1 C2 C3 C4 A1 A2 A3 Q MQ CT P1 P2 P31 P32 P41 P42 P71 P72 P81 P82 P5 P6 P3 P4 P7 P8 P61 P62 S1 S2 S3 S4 S5 i nom ) (setq nbr (getint "nombre de branche, 2 ou 3 ?")) (setq C1 (getpoint "1er point")) (setq C2 (getpoint "2eme point")) (setq C3 (getpoint "3eme point")) (setq C4 (getpoint "4eme point")) (setq A1 (angle C1 C2)) (setq A2 (angle C2 C3)) (setq A3 (angle C4 C3)) (setq Q (/ pi 2.0)) (setq MQ (* (/ 3.0 2.0) pi)) (setq ct 90.) (if (= nbr 3) (progn (Setq P1 (polar C1 (+ A1 MQ) 45.)) (setq P1 (polar P1 (+ A1 pi) 40.)) (Setq P2 (polar P1 (+ A1 Q) ct)) (setq P31 (polar C2 (+ A1 Q) 45.)) (setq P32 (polar (polar C2 A1 40.) (+ A2 Q) 45.)) (setq P41 (polar (polar C3 A3 40.) (+ A2 Q) 45.)) (setq P42 (polar C3 (+ A3 MQ) 45.)) (setq P71 (polar C3 (+ A3 Q) 45.)) (setq P72 (polar P41 (+ A2 MQ) ct)) (setq P81 (polar P32 (+ A2 MQ) ct)) (setq P82 (polar C2 (+ A1 MQ) 45.)) (Setq P5 (polar C4 (+ A3 MQ) 45.)) (setq P5 (polar P5 (+ A3 pi) 40.)) (Setq P6 (polar P5 (+ A3 Q) ct)) (setq P3 (inters P2 P31 P32 P41 nil)) (setq P4 (inters P32 P41 P42 P5 nil)) (setq P7 (inters P6 P71 P72 P81 nil)) (setq P8 (inters P72 P81 P82 P1 nil)) (command "dimaligned" P1 P2 (polar P1 (+ A1 pi) ct)) (command "dimaligned" P2 P3 (polar P2 (+ A1 Q) ct)) (command "dimaligned" P3 P4 (polar P3 (+ A2 Q) ct)) (command "dimaligned" P4 P5 (polar P4 (+ A3 MQ) ct)) (command "dimaligned" P5 P6 (polar P5 (+ A3 pi) ct)) (command "cercle" C1 "10") (setq s1 (entlast)) (command "cercle" C2 "10") (setq s2 (entlast)) (command "cercle" C3 "10") (setq s3 (entlast)) (command "cercle" C4 "10") (setq s4 (entlast)) (command "polylign" P1 P2 P3 P4 P5 P6 P7 P8 "cl") (setq s5 (entlast)) ) ) (if (= nbr 2) (progn (Setq P1 (polar C1 (+ A1 MQ) 45)) (setq P1 (polar P1 (+ A1 pi) 40)) (Setq P2 (polar P1 (+ A1 Q) 90)) (setq P31 (polar C2 (+ A1 Q) 45)) (setq P32 (polar C3 (+ A3 MQ) 45)) (setq P61 (polar C3 (+ A3 Q) 45)) (setq P62 (polar C2 (+ A1 MQ) 45)) (Setq P4 (polar C4 (+ A3 MQ) 45)) (setq P4 (polar P4 (+ A3 pi) 40)) (Setq P5 (polar P4 (+ A3 Q) 90)) (setq P3 (inters P2 P31 P32 P4 nil)) (setq P6 (inters P5 P61 P62 P1 nil)) (command "dimaligned" P1 P2 (polar P1 (+ A1 pi) ct)) (command "dimaligned" P2 P3 (polar P2 (+ A1 Q) ct)) (command "dimaligned" P3 P4 (polar P3 (+ A2 Q) ct)) (command "dimaligned" P4 P5 (polar P4 A2 ct)) (command "cercle" C1 "10") (setq s1 (entlast)) (command "cercle" C2 "10") (setq s2 (entlast)) (command "cercle" C3 "10") (setq s3 (entlast)) (command "cercle" C4 "10") (setq s4 (entlast)) (command "polylign" P1 P2 P3 P4 P5 P6 "cl") (setq s5 (entlast)) ) ) (setq i 1) (while (tblsearch "BLOCK" (setq nom (strcat "éclisse spé_" (itoa i))) ) (setq i (1+ i)) ) (command "-bloc" nom C1 S1 S2 S3 S4 S5 "") (command "-inserer" nom C1 1 1 0) )
(gile) Posté(e) le 7 juillet 2010 Posté(e) le 7 juillet 2010 Salut, Je n'ai pas le temps d'étudier en profondeur ton code ce matin, mais tu peux essayer d'appliquer la règle d'or qui veut que quand on utilise command pour dessiner des entités, on désactives les accrochages aux objets. Soit à chaque appel de la fonction command ("_non" ou "auc" pour une version française correspond à "aucun" accrochage):(command "dimaligned" "_non" P1 "_non" P2 "_non" (polar P1 (+ A1 pi) ct)) Soit en mettant la variable OSMODE à 0 après avoir stocké sa valeur en début de code pour pouvoir la restaurer à la fin : (setq accrobj (getvar "OSMODE")) (setvar "OSMODE" 0) ;; ici le code avec les appels à command (setvar "OSMODE" accrobj) PS : Quand tu postes du code, pour le rendre plus lisible utilise les bbcodes : [surligneur][[/surligneur][surligneur]code[/surligneur][surligneur]][/surligneur] ici le code [surligneur][[/surligneur][surligneur]/code[/surligneur][surligneur]][/surligneur] donne : ici le code Accessible via l'icône [#] : http://img94.imageshack.us/img94/8380/bbcode.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 7 juillet 2010 Posté(e) le 7 juillet 2010 Re, J'ai fait quelques tests même si je ne comprends pas bien ce qu'est censé faire la routine suivant qu'on choisisse 2 ou 3 branches. J'ai effectivement vu un problème avec l'option 3 branches qui semble plus dû à un problème de géométrie qu'à un problème de LISP proprement dit. Si j'ai bien compris, les points de références sont des prolongement de 40 unités des segments C1 C2 et C4 C3. Or tu calcules tes points à partir de ceux-ci mais en utilisant les perpendiculaires à l'angle du segment C2 C3 au lieu de celles à l'angle décris par ces deux points de référence. En espérant avoir été clair. PS : ceci n'enlève rien à ce que j'ai dit précédemment concernant les accrochages aux objets Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant