Aller au contenu

Nuages de points => Cercles


Kris_LC

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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 moyenne

quel sera le principe ?

calcul par les moindres carrés ?

 

j'ai bien compris que ce n'est pas un nuage de points qui est à traiter

pour trouver le cercle passant par la plus grand nombre de points

(avec une erreur moyenne quadratique)

 

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

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-ci

du 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é