Kris_LC Posté(e) le 17 juillet 2013 Posté(e) le 17 juillet 2013 Bonjour à tous ! Je suis la recherche depuis un moment et je n'arrive pas a faire ce que je veux.J'ai essayé de m'inspirer des LISP existant, mais trop complexe pour mon niveau. Je voudrai créer des cercles qui ont pour point de centre un nuage de point existant.Et ceci en choisissant le diamètre des cercles à créer. Principe détaillé : - Choix des objets (points), - Demander si l'on veux supprimer ou non les points, - Demander le diamètre des cercles à créer, - Créer les cercles au diamètre indiquer sur le calque courant. Pour info, j'utilise très souvent le LISP "Fusion" de Gilles je crois.Je le trouve très bien fait et très simple.J'ai donc essayer de m'en inspirer, mais je n'arrive à rien.Et même après de multiples recherche sur ce forum, je n'ai trouver aucune solutions. Pouvez-vous m'aider ? Merci d'avance.Kris
didier Posté(e) le 17 juillet 2013 Posté(e) le 17 juillet 2013 Coucou des cercles qui ont pour point de centre un nuage de point existant.et lequel de ces points sera le centre ?je pense qu'il va falloir faire une moyennequel sera le principe ?calcul par les moindres carrés ? j'ai bien compris que ce n'est pas un nuage de points qui est à traiterpour trouver le cercle passant par la plus grand nombre de points(avec une erreur moyenne quadratique) amicalement Éternel débutant… Mon site perso : Programmer dans AutoCAD
Kris_LC Posté(e) le 17 juillet 2013 Auteur Posté(e) le 17 juillet 2013 Merci pour ta réponse, mais je pense que tu vois trop loin. C'est plus simple que ça. Je veux créer un cercles par points, dont le centre seras justement le points. Exemple, j'ai un nuage de points, je veux créer à chaque points un cercle centré sur celui-cidu diamètre sélectionné.Si j'ai 1000 points, je voudrai 1000 cercles. Où chaque cercles aura pour points de centre un points du jeu de sélection. Merci encore
lecrabe Posté(e) le 17 juillet 2013 Posté(e) le 17 juillet 2013 Hello Je suis "un gros Nul en Lisp" mais j'ai adapte une autre routine ! Routine : P2C Good Luck, lecrabe ;;; ;;; Micro-Modif par Le Crabe pour dessiner des Cercles ... ;;; Avec Question sur le Rayon ;;; Les cercles sont dessines sur la calque courant ... ;;; ATTENTION : AUCUNE gestion des erreurs ;;; (defun c:p2c (/ ss ct len e eb pt rayon) ;;;set command echo off (setvar "CMDECHO" 0) ;;; Rayon (setq rayon (getreal "\nRayon du cercle: ")) ;;;prompt for point selection (princ "\nSelect Point objects: ") ;;; --- if point objects were selected --- (if (setq ss (ssget '((0 . "POINT")))) (progn ;;;walk through point objects (setq len (sslength ss)) (setq ct 0) (while (< ct len) ;;;for each point (setq e (ssname ss ct)) (setq ct (+ ct 1)) (setq eb (entget e)) ;;;get insert point (setq pt (cdr (assoc 10 eb))) ;;; Dessiner un Cercle avec Rayon ( command "_CIRCLE" pt rayon ) ) ) ) ;;;set command echo on (setvar "CMDECHO" 1) (princ) ) Autodesk Expert Elite Team
alala Posté(e) le 17 juillet 2013 Posté(e) le 17 juillet 2013 bonjour, J'arrive un poil après la bionne réponse mais j'avais commencé à écrire un truc donc je le met tout de même : Une sélection avec filtre sur un type (point) : (ssget '((0 . "POINT"))) Puis une série de question : (initget "Oui Non") (setq SuppPoint (getkword "Conserver les points après traitement? [Oui/Non]")) (setq Diam (getreal "Indiquer le diamètre des cercles")) Puis faire une boucle en Vlisp (vl-load-com) (setq acDoc (vla-get-activedocument (vlax-get-acad-object))) (setq mspace (setq mspace (vla-get-modelspace acDoc))) (vlax-for Ent (vla-get-ActiveSelectionSet acdoc) (vla-AddCircle mspace (vlax-get Ent 'Coordinates)( / Diam 2)) (if (eq SuppPoint "Oui") (vla-delete ent) ) ) ce qui donne le code complet suivant : (defun c:cerclepoint ( / ss ent acDoc mspace SuppPoint DiamCercle) (vl-load-com) (setq acDoc (vla-get-activedocument (vlax-get-acad-object))) (setq mspace (setq mspace (vla-get-modelspace acDoc))) (setq ss (ssget '((0 . "POINT")))) (if ss (progn (initget "Oui Non") (setq SuppPoint (getkword "Conserver les points après traitement? [Oui/Non]")) (setq DiamCercle (getreal "Indiquer le diamètre des cercles :")) (vlax-for Ent (vla-get-ActiveSelectionSet acdoc) (vla-AddCircle mspace (vlax-3D-point (vlax-get Ent 'Coordinates))( / DiamCercle 2)) (if (eq SuppPoint "Non") (vla-delete ent) ) ) ) (princ "Aucune sélection valable!") ) (princ) ) @+ C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Kris_LC Posté(e) le 17 juillet 2013 Auteur Posté(e) le 17 juillet 2013 C'est déconcertant ! C'est déconcertant de voir la facilité avec laquelle tu jongle avec les LISP. Le pire de tout, avoir le LISP, c'est que j'ai l'impression que ce n'était pas si compliqué. Je essayer de me pencher dessus pour comprendre un peu mieux le principe de fonctionnement de tout ça. Lecrabe ! encore une fois, Merci Beaucoup !!! Ca fonctionne à merveille !
Kris_LC Posté(e) le 17 juillet 2013 Auteur Posté(e) le 17 juillet 2013 Merci Beaucoup alala ! Ta réponse est tout aussi bonne !!! :-)Et en plus c'est bien expliqué.ça me permet de bien apprendre ! Merci encore !
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