PhilBat Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Bonjour,En saisissant les coordonnées de deux points à l'écranje voudrais tracer une spline entre ceux-ciet de façon automatique (routine LSP)MerciPhil.
Fraid Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Bonjour, Cela va être difficile, car une Spline a besoin de 3 points l'expression la plus simple d'une spline doit correspondre a un polygone Mais peut être veut tu déduire le 3em point automatiquement ? Pour cela il faudrait que tu nous donne tes contraintes https://github.com/Fraiddd
PhilBat Posté(e) le 1 juin 2011 Auteur Posté(e) le 1 juin 2011 ah oui,exacte pour le troisième point qui est le milieu de la ligne imaginaire dont les extrémités sontles deux 1er points.Déterminé de façon automatique lui aussia+Phil
(gile) Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Salut, On peut très bien faire une spline avec seulement deux points de lissage (mais je ne vois pas l'intérêt). On peut aussi le faire (faire) en LISP pour économiser un "Enter" (là encore, je ne vois pas bien l'intérêt). (defun c:toto () (command "_.spline" pause pause "" "" "") (princ)) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PhilBat Posté(e) le 1 juin 2011 Auteur Posté(e) le 1 juin 2011 Pour clarifier la chose,les deux 1er points sont les coordonnées d'insertions de deux blocset je voudrais tracer une spline (automatique) entre ceux-ci en les sélectionnantuniquement.à bientôt ...
didier Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Coucou drôle d'idée de tracer une spline rectilignemais le client est roi ! voici un truc à deux balles : (setq bloc1 (cdr(assoc 10 (entget (car (entsel "\Bloc 1\n"))))) bloc2 (cdr(assoc 10 (entget (car (entsel "\Bloc 2\n"))))) ) (command "_spline" bloc1 bloc2 "" "" "") amicalement édition pour demander à Fraidpourquoi parles-tu de trois points mini pour une spline ?mon lisp à deux balles est la preuve que deux points suffisent. amicalement [Edité le 1/6/2011 par didier] Éternel débutant... Mon site perso : Programmer dans AutoCAD
PhilBat Posté(e) le 1 juin 2011 Auteur Posté(e) le 1 juin 2011 Merci pour vos réponsesMais le problème .... ce n'est pas une spline rectiligneque je veux (sinon aucun intérêt).il faudrait comme une petite ondulation (sinusoïde) entre mesdeux blocs...amicalement
Fraid Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 Comme tu m'a mis le doute Didierje suis aller voir http://fr.wikipedia.org/wiki/Spline qui confirme mes dires et meme avec trois point cela fait une spline en forme de droite (defun c:sppl (/ pt1 pt3 pt2 ) (setq pt1 (getpoint "\nPremier point") pt3 (getpoint "\nDeuxième point") pt2 (mid_pt pt1 pt3) ) (command "_spline" pt1 pt2 pt3 "" "" "") ) ;; MID_PT Retourne le milieu de deux points (Gile) (defun mid_pt (p1 p2) (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2)) p1 p2) ) il y a surement moyen de tripotter le code dxf pour l'arrondir je finis mes plans et je regarde cela https://github.com/Fraiddd
didier Posté(e) le 1 juin 2011 Posté(e) le 1 juin 2011 coucou alors là, tu exagères vraimentpourquoi est-ce que tu n'en parles que maintenant que tu veux une "ondulation" :mad: :mad: je vais bientot regretter de répondre à ces questions si flouestu le savais depuis le début ? et comment on fait, nous pour savoir ce qu'il y a dans ta tête ? est-ce que tu sais au moins ce qui donnera la hauteur de l'onde que tu souhaites ? allez, je coupe, je vais bosser à la maison maintenant... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
PhilBat Posté(e) le 3 juin 2011 Auteur Posté(e) le 3 juin 2011 Désolé,pour moi, l'utilisation d'une spline, c'est forcémentpour faire une "courbe" sinon j'utiliserai une simple ligne.Je m'excuse encore, c'était tellement logique pour moimais pas pour tout le monde...(la hauteur de l'onde -> une valeur par défaut modifiable)a+Salutations
Fraid Posté(e) le 3 juin 2011 Posté(e) le 3 juin 2011 Bonjours En fait c'est aussi simple de passé par l'insertion d'un bloc voici le bloc a placer dans un dossiers reconnu par Autocad http://dl.dropbox.com/u/27217009/Splin.dwg j'ai repris l'invite de didier (defun c:spll (/ bloc1 bloc2 ech oldosmode ) (setq bloc1 (cdr(assoc 10 (entget (car (entsel "\Bloc 1\n"))))) bloc2 (cdr(assoc 10 (entget (car (entsel "\Bloc 2\n"))))) ech (distance bloc1 bloc2) oldosmode (getvar "osmode") ) (setvar "osmode" 0) (command "_-insert" "Splin" bloc1 ech ech bloc2) (setvar "osmode" oldosmode) (princ) ) pour augmenter ton rayon de courbure tu n'a qu'a augmenté l'echelle en y de ton blocdans la fenetre de proprietéstu peus l'exploser si cela te chante j'ai enleveé l'accrochage qui pourrait eventuelement te gener[Edité le 3/6/2011 par Fraid] [Edité le 6/6/2011 par Fraid] https://github.com/Fraiddd
PhilBat Posté(e) le 6 juin 2011 Auteur Posté(e) le 6 juin 2011 Bonjour,ah oui, bonne idée, l'utilisation d'un bloc "spline".Je voulais faire les choses dans les règles de l'arten utilisant vraiment la fonction spline avec modificationdes tangentes (pas réussi).Donc j'ai adopté et adapté la solution du bloc avec décompositionet déplacement dans le calque courant et cela marche sans se prendre la tête.Merci encore à tousSalutations
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