joell Posté(e) le 21 novembre 2007 Posté(e) le 21 novembre 2007 Bonjour, J'ai cherché un peut partout sur le forum sans rien trouver a ce sujet.Je cherche une petite routine me permettant, sur une polyligne de marquer (à l'image de diviser ou mesurer) un point à un Z donné sur la polyligne (X Y etant en plan et Z en altitude). exemple une polyligne début (500,500,400) fin (600,500,410) .je veux noter sur cette polyligne le point a Z 409.00 (ou mieux encore tout les entiers) j'espère avoir été assez claire et vous remercie par avance. Joël [Edité le 21/11/2007 par joell]
lovecraft Posté(e) le 21 novembre 2007 Posté(e) le 21 novembre 2007 Bonjour,Dans un premier temps ce n'est pas possible avec un polyligne "uniquement un elevation" mais avec une ligne ou une polyligne3D. Je vais voir si je peux faire qques chose. Autrement c'est un bon challenge . @plus http://www.youtube.com/user/CADMINATOR?feature=mhee
Matt666 Posté(e) le 21 novembre 2007 Posté(e) le 21 novembre 2007 Par contre il peut y avoir plusieurs points sur cette polyligne... Si elle n'est pas linéaire en Z... C'est vrai que c'est un bon challenge ! "Chacun compte pour un, et nul ne compte pour plus d'un."
bonuscad Posté(e) le 21 novembre 2007 Posté(e) le 21 novembre 2007 Bon, j'entame ce challenge ;) Le code qui suit ne fonctionnera que sur une polyligne 3D.Il vous sera demandé un interval en Z qui devra être répété pour placer les points en Z correspondants (exemple tout les 1 mètres, ou 25 mètre (centimètre,...) (defun round_number (xr n / ) (* (fix (atof (rtos (* xr n) 2 0))) (/ 1.0 n)) ) (defun c:z_interval ( / js dxf_ent vla_obj n pt_lst z_value z_min z_max pt_int) (vl-load-com) (princ "\nSélectionnez une polyligne 3D.") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "POLYLINE") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) '(-4 . "[b]<[/b]NOT") '(-4 . "&") '(70 . 112) '(-4 . "NOT>") ) ) ) ) (princ "\nCe n'est pas une polyligne 3D!") ) (setq dxf_ent (entget (ssname js 0)) vla_obj (vlax-ename->vla-object (cdar dxf_ent)) n -1 pt_lst nil ) (if (zerop (getvar "USERR1")) (setvar "USERR1" 1.0)) (initget 6) (setq z_value (getreal (strcat "\nEntrez l'interval en Z [b]<[/b]" (rtos (getvar "USERR1")) ">: "))) (if (not z_value) (setq z_value (abs (getvar "USERR1")))) (setvar "USERR1" z_value) (repeat (fix (vlax-curve-getEndParam vla_obj)) (setq pt_lst (cons (vlax-curve-getPointAtParam vla_obj (setq n (1+ n))) pt_lst)) ) (if (zerop (boole 1 1 (cdr (assoc 70 dxf_ent)))) (setq pt_lst (cons (vlax-curve-getEndPoint vla_obj) pt_lst)) (setq pt_lst (cons (vlax-curve-getStartPoint vla_obj) pt_lst)) ) (while (cdr pt_lst) (setq z_min (round_number (min (caddar pt_lst) (car (cddadr pt_lst))) (/ 1 z_value)) z_max (max (caddar pt_lst) (car (cddadr pt_lst))) ) (while ([b]<[/b] z_min z_max) (setq pt_int (inters (car pt_lst) (cadr pt_lst) (list (caar pt_lst) (cadar pt_lst) z_min) (list (caadr pt_lst) (cadadr pt_lst) z_min) T ) ) (if pt_int (entmake (list (cons 0 "POINT") (cons 100 "AcDbPoint") (cons 10 pt_int) (list 210 0.0 0.0 1.0) ) ) ) (setq z_min (+ z_min z_value)) ) (setq pt_lst (cdr pt_lst)) ) (prin1) ) NB: Le calcul des Z et les points sont traités dans tous les cas dans le SCG. Le code a été testé rapidement. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lovecraft Posté(e) le 22 novembre 2007 Posté(e) le 22 novembre 2007 bonjour,Bon j'ai commencé mais je bloque sur une fonction j'ai trouvé la fonction Atan mais je ne trouve pas de fonction tangente.Comme fait on. Autrement c'est du grand art bonuscad. En ce qui me concerne je vais le faire a mon niveau c'est a dire sur un ligne.@plus http://www.youtube.com/user/CADMINATOR?feature=mhee
bonuscad Posté(e) le 22 novembre 2007 Posté(e) le 22 novembre 2007 je ne trouve pas de fonction tangente.Comme fait on. tangente alpha = sinus alpha / cosinus alpha cotangente alpha = cosinus alpha / sinus alpha Débloqué ? ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lovecraft Posté(e) le 22 novembre 2007 Posté(e) le 22 novembre 2007 Bon merci ca avance. J'avais complétement effacer ces relations.Mais bon je suis un peu degouté j'ai vu que t'utilisé la fonction (inters) que je ne connaissais pas donc j'ai créé un fonction d'intersection. enfin bref ca permet d'évoluer @plus http://www.youtube.com/user/CADMINATOR?feature=mhee
joell Posté(e) le 27 novembre 2007 Auteur Posté(e) le 27 novembre 2007 Super boulot, et quel vitesse pour répondre a ma petite question. J'ai une autre question a bonuscad et tu celui qui a fait bonuscad justement ? merci encore Joël
bonuscad Posté(e) le 28 novembre 2007 Posté(e) le 28 novembre 2007 es tu celui qui a fait bonuscad justement ? C'est bien moi, un utilisateur ancien d'autocad, qui a horreur des taches répétitives, et qui fait tout pour l'éviter. :P Donc je partage pour simplifier la vie des dessinateurs comme moi. Une solidarité dans le corps du métier en sorte. ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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