blizard Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 bon c'est un lisp probablement impossible à faire mais je pose la question au cas ou... Voila, peut on faire un lisp qui snap sur autocad, c'est à dire que je dessine un carré et ce lisp placerait automatiquement les sommets de ce carré sur le point le plus proche de la grille....
didier Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 coucou, y'a beaucoup de vent chez Toi ? (hihihihi)c'est à cause du pseudo :( blague à part, concrètementcest toi qui dessine le carré, okles côtés font combien ?est ce un seul point du carré qui sera sur la grille ?si oui lequel ?sont ce les quatre sommets ? la balle est dans ton, camp... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 Salut, Voilà déjà une routine qui retourne le point le plus proche sur la grille. (defun snap-pt (pt) (mapcar '(lambda (x1 x2) (if (minusp x1) (* x2 (fix (- (/ x1 x2) 0.5))) (* x2 (fix (+ (/ x1 x2) 0.5))) ) ) pt (getvar "SNAPUNIT") ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 14 juin 2007 Posté(e) le 14 juin 2007 SalutEt la resol ???Une touche :casstet: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
didier Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 coucou, je suis bien d'accord avec Toi, mon her Patrick_35, j'ai posé mes questions pour savoir si il souhaite des coordonnées rondesen fonction du pas de la grille, ou autre chose. c'est faisable, (gile) le prouve, les routines de carroyage aussimais dans son cas, quel est le réel besoin de programmation ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 Bonjour Vous donnez un peu espoir la... Alors, la résolution qui serait parfaite serait le cm. Effectivement c'est moi qui fait le carré mais sans que je sache si l'emplacement de ces sommets est sur la grille ou pas, et sans que je sache la longueur des arêtes.Le but serait que chaque sommet en executant le lisp se retrouve automatiquement sur un point de ma grille de 1 cm de résolution. Merci encore
didier Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 coucou, pas de lisp pour çaAutoCad sait le faire de lui même Touche F9 amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 A pas tout compris :exclam: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 oui F9 permet de snaper ces points, c'est à dire que lorsque snap est activé mon pointeur ce déplace uniquement sur ma grille.Ce que je voulais c'était dessiner un carré sans la commande snap, ci bien que les sommets de mon carré sont placé sans tenir compte de la grille et que la commande me resnape tous les sommets, c'est à dire me met les sommets sur ma grille Mon bon c'est probablement impossible, je posais juste la question...
bonuscad Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Toujours avec RESOL: Un exemple pas à pas LIGNE Spécifiez le premier point:[surligneur] < Résol inactif > [/surligneur] on désactive resol et on pointe le point de départ Spécifiez le point suivant ou [annUler]: [surligneur]'snapbase [/surligneur] tapé au clavier! >>Entrez une nouvelle valeur pour SNAPBASE <0.00,0.00> : [surligneur] @ [/surligneur] pour définir le dernier point entré comme point de base Reprend la commande LIGNE. Spécifiez le point suivant ou [annUler]: [surligneur]< Résol actif > [/surligneur] on réactive résol et on pointe le point suivant Spécifiez le point suivant ou [annUler]:Spécifiez le point suivant ou [Clore/annUler]:Spécifiez le point suivant ou [Clore/annUler]:Spécifiez le point suivant ou [Clore/annUler]: et on continu tant qu'on veut Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 en fait ce que je fais jusquà maintenant consiste à sélectionner le sommet, faire F9 et je replace le point, ca reviens un peu au meme non?
bonuscad Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 faire F9 et je replace le point J'ai du mal à te suivre :casstet: Ce que j'ai voulu te montrer et l'utilisation de 'SNAPBASE qui va te recaler ta grille de résolution au dernier point entré. Après forcément les cotés de ton carré seront des multiple de la valeur de RESOL, ce qui ne serait pas le cas si tu ne RECALE PAS le point de base de ta résolution. Ou alors on se comprend mal, as tu essayé la démarche proposée?Si c'est le cas exprime toi avec des imagesUn dessin vaut mieux qu'un long discours Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Coucou La manip de bonuscad me semble parfaite ! Et donc à partir de tes explications, j'ai compris la meme chose que bonuscad ... Donc 2 choses l'une : soit nous (Bonuscad, Didier, Lecrabe, etc) sommes "à coté de la plaque" ! soit tu t'expliques mal ! Le Decapode "interrogatif" Autodesk Expert Elite Team
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 bon, je suis vraiment désolé de ne pas être assez clair...je le tente avec duex images: La première image correspond à une ligne dessinée sans snap La seconde image correspond à ce que je voudrais obtenir automatiquement avec un lisp, c'est à dire la ligne avec chaque sommet sur un point de la grille, l'idée étant que je peux avoir des dizaine de lignes et qu'elles se placent toutes en un clic sur la grille http://img525.imageshack.us/img525/8932/image1eu8.jpghttp://img161.imageshack.us/img161/9786/image2jo9.jpg
(gile) Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Ce que je comprends : il s'agirait de mettre, à posteriori, les entités sélectionnées sur la grille. Avant d'aller plus avant, je te propose un premier jet qui fonctionne avec les lignes et polylignes et les paramètres courant de RESOL. (defun c:snap (/ snap-pt ss n elst) (defun snap-pt (pt) (mapcar '(lambda (x1 x2) (if (minusp x1) (* x2 (fix (- (/ x1 x2) 0.5))) (* x2 (fix (+ (/ x1 x2) 0.5))) ) ) pt (getvar "SNAPUNIT") ) ) (prompt "\nSélectionner les objets à accrocher à la grille ou : " ) (or (setq ss (ssget '((0 . "LINE,LWPOLYLINE")))) (setq ss (ssget "_X" '((0 . "LINE,LWPOLYLINE")))) ) (if ss (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (cond ((= (cdr (assoc 0 elst)) "LINE") (entmod (subst (cons 10 (snap-pt (cdr (assoc 10 elst)))) (assoc 10 elst) (subst (cons 11 (snap-pt (cdr (assoc 11 elst)))) (assoc 11 elst) elst ) ) ) ) ((= (cdr (assoc 0 elst)) "LWPOLYLINE") (entmod (mapcar '(lambda (x) (if (= (car x) 10) (cons 10 (snap-pt (cdr x))) x ) ) elst ) ) ) ) ) ) (princ) ) [Edité le 15/6/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Je ne compren pas :o Un F9 suffit :exclam: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Je ne compren pas :o Un F9 suffit :exclam: @+ Un F9 avant de dessiner, bien sûr ;) Mais si les objets ont été dessinés alors que RESOL était inactif, ou si on en change les paramètres, le LISP accroche les entités sélectionnés sur les point les plus proches de la grille. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 oui c'est exactement ca, c'est à posteriori... En fait pour expliquer un peu plus, je dessine sur autocad presque uniquement en snap parce qu'avec l'accrochage objet il y a trop d'imprecisions, c'est une technique qui marche très bien, seulement je reçois des fois des fichiers ou les imprecisions sont importantes si bien que je dois snaper les lignes et c'est assez long c'est pourquoi je rêve d'un lisp snaper! j'ai essayé le lisp snap-pt:1 je trace une rectangle2 je lance le lisp : snapunit3 " ENTREZ UNE NOUVELLE VALEUR POUR SNAPUNIT (.01,.01)"4 Je clic sur l'un des sommet de mon rectangle Mon sommet se trouve sur mon snap mais pas les autres, et l'échelle de mon snap à changerX:2.137295526507614Y:2.877070619494418 a t'il qqchose que je fais de travers? [Edité le 15/6/2007 par blizard]
(gile) Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 En fait pour expliquer un peu plus Tu aurais dû commencer par là ... Sinon, tu charges le LISP (voir ici), tu entres snap, et tu sélectionnes les entités (lignes et polylignes pour l'instant) que tu veux accrocher à la grille. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 C'est incroyable!!!Ca fonctionne superbement bien!Un énorme merci, vous ne pouvez pas vous rendre compte à quel point c'est énorme! Merci encore MERCI, MERCI, MERCI, MERCI, MERCI, MERCI, MERCI,MERCI, MERCI, MERCI, MERCI, MERCI!!! [Edité le 15/6/2007 par blizard]
(gile) Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 De rien... Je modifie le LISP, pour pouvoir sélectionner toutes les lignes et polylignes en faisant Enter, Espace ou clic droit ou sélectionner seulement quelques objets. Si tu veux aussi traiter d'autre types d'objets, fais le savoir, j'essayerais de les intégrer. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
blizard Posté(e) le 15 juin 2007 Auteur Posté(e) le 15 juin 2007 je suis en train de tester sur mes fichiers, j'en reviens toujours pas!!!! Il faut rentrer dans les blocs pour les sniper, mais c'est un gain de temps et de précision incroyable
Patrick_35 Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Tu aurais dû commencer par là ... Je trouve aussi @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 15 juin 2007 Posté(e) le 15 juin 2007 Ca me rappelle ce sujet similaire La question était plus explicite :mad: Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
blizard Posté(e) le 16 juin 2007 Auteur Posté(e) le 16 juin 2007 oui effectivement ca aurait été plus compréhensible...Les choses les plus évidentes des fois....Escusez moi pour le détour Pour le lisp de bonuscad, j'ai un souci de chargement, j'ai enregistré le lisp sousregular_draw et j'ai ce message d'erreur:Commande: ; erreur: type d'argument incorrect: numberp: nil C'est possible d'intégrer le point d'insertion des blocs et les côtes?Bon je crois que j'exagère un peu... je suis déjà très content que ce lisp soit possible
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