G_P_TP Posté(e) le 26 mars 2013 Posté(e) le 26 mars 2013 Bonjour. Je voudrais savoir s'il est possible d'automatiser la manip suivante : dans une polyligne, remplacer deux segments successifs par un arc qui passe par les 3 points de ces segments. En fait, j'effectue aujourdhui la manip suivante : - avec les poignées je supprime le point du milieu (où doit être créé l'arc) - avec les poignées, je converti en arc et j'amène l'arc sur la position de l'ancien point En fait ça marche mais c'est pas très rapide et il faut garder une trace du point du milieu (en dessinant un point par ex.) merci de votre aide. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
G_P_TP Posté(e) le 27 mars 2013 Auteur Posté(e) le 27 mars 2013 Ben le sujet ne passionne pas... ou alors je n'ai pas été clair dans ma demande... ou il n'y a peut être pas de solution (hormis un lisp j'imagine) a+ AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
philsogood Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 helloavec RACCORD tu peux le faire, non?il te suffit de donner le rayon de ton arc puis de sélectionner tes deux aprties de polylignesJ'ai tout faux?Phil Projeteur Revit Indépendant - traitement des eaux/CVC
Dinosor Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 Hello, en fait, ce qu'il te faudrait c'est un outil qui te permet de tracer un arc par trois points que tu choisis sur une polyligne, que la polyligne soit ajustée aux extrémités de cet arc, et que l'arc soit intégré ensuite à la polyligne.J'ai compris cela, mais je ne sais pas le faire... Un spécialiste du lisp sûrement :) Bonne journée. Seuls nous allons vite, ensemble nous allons plus loin... CPU Intel 3,5Go / Nvidia RTX-3090 AutoCad (Architecture) 2022 - Lumion PRO BMW R-1200-RT, c'est moche, oui... je sais... www.neda.ch
FormaBois Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 Je voudrais savoir s'il est possible d'automatiser la manip suivante : dans une polyligne, remplacer deux segments successifs par un arc qui passe par les 3 points de ces segments.Salut,Quand tu dis les 3 points de ces segments, cela veut-il dire les 3 sommets des polylignes ? Studio Gfilm - Agence de communication par l'image "Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
G_P_TP Posté(e) le 27 mars 2013 Auteur Posté(e) le 27 mars 2013 Hello, en fait, ce qu'il te faudrait c'est un outil qui te permet de tracer un arc par trois points que tu choisis sur une polyligne, que la polyligne soit ajustée aux extrémités de cet arc, et que l'arc soit intégré ensuite à la polyligne.J'ai compris cela, mais je ne sais pas le faire... Un spécialiste du lisp sûrement :) Bonne journée. merci pour la réponse. Tu as bien compris mon besoin. et effectivement en lisp ça doit être possible... mais j'ai pas trop le temps ni l'envie de faire de la programmation pour l'instant... j'espèrais que quelqu'un avait déjà cela en stock.. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
G_P_TP Posté(e) le 27 mars 2013 Auteur Posté(e) le 27 mars 2013 Salut,Quand tu dis les 3 points de ces segments, cela veut-il dire les 3 sommets des polylignes ? merci pour ta réponse. Oui c'est bien par 3 sommets d'une polyligne que je veut l'arc. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
G_P_TP Posté(e) le 27 mars 2013 Auteur Posté(e) le 27 mars 2013 helloavec RACCORD tu peux le faire, non?il te suffit de donner le rayon de ton arc puis de sélectionner tes deux aprties de polylignesJ'ai tout faux?Phil merci de ta réponse. c'est un peu le principe d'un raccord mais je ne connais pas le rayon et en plus je veux que l'arc passe exactement par 3 sommets de la polyligne. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
FormaBois Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 Dans ce cas la procédure est relativement simple1.ARC 3 points2.PE (pedit)3.Sélectionner l'arc et valider4.Effacer la polyligne d'origineÇa pourrait donner ça sur un bouton : Code corrigé^C^Carc;\\\pe;\;ef;\; Studio Gfilm - Agence de communication par l'image "Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
bryce Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 Bonjour, Si j'ai bien compris, il s'agit d'inclure un arc passant par 3 sommets dans une polyligne qui a plus de 3 sommets.Pas si simple donc, hors lisp je ne vois pas vraiment de solution plus rapide que la manip décrite dans le 1er post. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
bonuscad Posté(e) le 27 mars 2013 Posté(e) le 27 mars 2013 (modifié) effectivement en lisp ça doit être possible... mais j'ai pas trop le temps ni l'envie de faire de la programmation pour l'instant... N'ayant pas trop de temps non plus, voici une base à creuser (je pense qu'il reste un problème de signe d'arrondi suivant les cas) (vl-load-com) (defun c:AddBulgeAtvertex ( / js e_name obj_vla oldsmd pt prm@pt pt1 t1 rtx1 pt2 t2 rtx2 pt_cen ang_cen vertexlist cnt nbv newlist new_bulge new_ewidth bulgelist ewidthlist index indexlist sw ew) (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nCe n'est pas un objet valable!") ) (setq obj_vla (vlax-ename->vla-object (setq e_name (ssname js 0))) oldsmd (getvar "osmode") ) (cond ((> (cdr (assoc 90 (entget e_name))) 2) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setvar "osmode" 1) (initget 9) (setq pt (getpoint "\nDonner le sommet à traiter: ")) (while (or (null (setq prm@pt (vlax-curve-getparamatpoint obj_vla (trans pt 1 0)))) (equal (vlax-curve-getStartParam obj_vla) prm@pt 1E-13) (equal (vlax-curve-getEndParam obj_vla) prm@pt 1E-13) ) (princ "\nLe sommet choisi ne convient pas!") (initget 9) (setq pt (getpoint "\nDonner le sommet à traiter: ")) ) (setvar "osmode" oldsmd) (setq pt1 (trans (vlax-curve-getpointatparam obj_vla (- prm@pt 0.5)) 0 e_name) t1 (vlax-curve-getfirstderiv obj_vla (- prm@pt 0.5)) rtx1 (- (atan (cadr t1) (car t1)) (* 0.5 pi)) pt2 (trans (vlax-curve-getpointatparam obj_vla (+ prm@pt 0.5)) 0 e_name) t2 (vlax-curve-getfirstderiv obj_vla (+ prm@pt 0.5)) rtx2 (- (atan (cadr t2) (car t2)) (* 0.5 pi)) pt_cen (inters pt1 (polar pt1 rtx1 (distance (trans pt 1 e_name) pt1)) pt2 (polar pt2 rtx2 (distance (trans pt 1 e_name) pt2)) nil) ang_cen (- (angle pt_cen (trans (vlax-curve-getpointatparam obj_vla (1+ prm@pt)) 0 e_name)) (angle pt_cen (trans (vlax-curve-getpointatparam obj_vla (1- prm@pt)) 0 e_name))) vertexlist (vlax-get obj_vla "Coordinates") cnt 0 nbv -1 newlist '() new_bulge '() bulgelist '() new_ewidth '() ewidthlist '() index (* 2 (fix (+ 0.5 (vlax-curve-getparamatpoint obj_vla (trans pt 1 0))))) indexlist (list index (1+ index)) ) (repeat (fix (* 0.5 (length vertexlist))) (setq bulgelist (cons (vla-GetBulge obj_vla (setq nbv (1+ nbv))) bulgelist)) ) (setq nbv -1) (repeat (if (zerop (vlax-get obj_vla "Closed")) (fix (* 0.5 (length vertexlist))) (1- (fix (* 0.5 (length vertexlist))))) (vla-GetWidth obj_vla (setq nbv (1+ nbv)) 'sw 'ew) (setq ewidthlist (cons (list sw ew) ewidthlist)) ) (foreach ordinate vertexlist (if (not (vl-position cnt indexlist)) (setq newlist (cons ordinate newlist)) ) (setq cnt (1+ cnt)) ) (setq cnt 0) (foreach bulge (reverse bulgelist) (if (not (vl-position cnt (list (fix (* 0.5 index))))) (setq new_bulge (cons bulge new_bulge)) ) (setq cnt (1+ cnt)) ) (setq cnt 0) (foreach ewidth (reverse ewidthlist) (if (not (vl-position cnt (list (fix (* 0.5 index))))) (setq new_ewidth (cons ewidth new_ewidth)) ) (setq cnt (1+ cnt)) ) (vl-catch-all-apply 'vlax-put (list obj_vla "Coordinates" (reverse newlist)) ) (setq nbv -1) (foreach bulge (reverse new_bulge) (vla-SetBulge obj_vla (setq nbv (1+ nbv)) bulge) ) (setq nbv -1) (foreach ewidth (reverse new_ewidth) (vla-SetWidth obj_vla (setq nbv (1+ nbv)) (car ewidth) (cadr ewidth)) ) (vla-SetBulge obj_vla (1- prm@pt) (/ (sin (/ ang_cen 4.0)) (cos (/ ang_cen 4.0)))) (if (not (vlax-curve-getparamatpoint obj_vla (trans pt 1 0))) (vla-SetBulge obj_vla (1- prm@pt) (- (/ (cos (/ ang_cen 4.0)) (sin (/ ang_cen 4.0))))) ) (vla-endundomark doc) ) (T (princ "\nLa polyligne doit avoir au moins 3 sommets!") ) ) (prin1) ) Modifié le 2 avril 2013 par bonuscad Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
G_P_TP Posté(e) le 28 mars 2013 Auteur Posté(e) le 28 mars 2013 bon il ne me reste plus qu'à tester tout ça.. merci pour votre temps. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
bonuscad Posté(e) le 29 mars 2013 Posté(e) le 29 mars 2013 J'ai résolu le problème de signe des arrondis, et un autre qui déplaçait les arrondis de segments.Dans l'ensemble cela devrait mieux fonctionner.Il reste des contrôles à faire (que je n'ai pas fais!):La polyligne doit avoir + de 2 sommets et la sélection du 1er et dernier sommet doit être prohibé. J'ai modifié le code précédent. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 29 mars 2013 Posté(e) le 29 mars 2013 Hello Bruno Merci pour le developpement ... Routine testee et OK sur un AutoCAD 2014 French 32 bits sous Win XP Pro SP3 ! Par contre j'aimerais bien que G_P_TP nous explique pourquoi il a besoin de faire cette manipulation ? Si ce n'est pas Top-Secret !? lecrabe Autodesk Expert Elite Team
FormaBois Posté(e) le 30 mars 2013 Posté(e) le 30 mars 2013 Par contre j'aimerais bien que G_P_TP nous explique pourquoi il a besoin de faire cette manipulation ? Si ce n'est pas Top-Secret !? Comme toi j'aimerais bien connaitre l'utilité de cette manip :huh: Je n'ai toujours pas compris pourquoi dans la macro je n'arrive pas à enchainer les 3 fontions Studio Gfilm - Agence de communication par l'image "Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
bryce Posté(e) le 2 avril 2013 Posté(e) le 2 avril 2013 Bonjour, Pour ta macro, il faudrait plutôt quelque chose comme ça:^C^Carc;\\\pe;d;;;efIl faut 3 pauses après la commande Arc (pour les 3 points). Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
FormaBois Posté(e) le 2 avril 2013 Posté(e) le 2 avril 2013 (modifié) La prochaine fois il faudra que je creuse un peu plus avant de poser la questionUn grand merci BryceJ'ai corrigé sur le postMais à quoi sert le "d", il n'y a pas d'option d sur la fonction PE ça doit être la dernière sélection, mais dans ce cas avec d ça ne fonctionne pas, je l'ai donc suppriméLa macro se termine donc par 2 clics successifs, 1 sur l'arc et l'autre sur la polyligne Modifié le 2 avril 2013 par FormaBois Studio Gfilm - Agence de communication par l'image "Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
bonuscad Posté(e) le 2 avril 2013 Posté(e) le 2 avril 2013 J'ai encore peaufiné: Correction pour tenir compte des largeurs éventuelle des segments et en respectant l'affectation.Correction pour un fonctionnement dans ou depuis n'importe quel SCUAjout des contrôles des saisies de sommets non valide. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 2 avril 2013 Posté(e) le 2 avril 2013 Hello Bruno Toujours magnifique cette routine ! Testee et validee sur AutoCAD 2014 32 bits sous Win XP Pro SP3 ... Par contre, tu as oublie la ligne : (vl-load-com) qui est VITALE si on n'a pas deja chargee d'autres routines Lisp/VLisp avec cette instruction ! Merci, lecrabe (toujours en attente avec Lilian du pourquoi de cette routine) Autodesk Expert Elite Team
bonuscad Posté(e) le 2 avril 2013 Posté(e) le 2 avril 2013 Merci Lecrabe, D'habitude j'y pense, mais là effectivement... oubli corrigé! toujours en attente avec Lilian du pourquoi de cette routineOn peut se poser la question...En tout cas cela peut faire de jolies moulures en partant simplement de lignes brisées. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
G_P_TP Posté(e) le 9 avril 2013 Auteur Posté(e) le 9 avril 2013 Bonjour à tous. J'étais en vacances donc je n'ai pas trop regardé cadxp. je suis donc géomètre et quand je fais mes levé, il y a souvent des élément courbes. Au bureau, sur autocad, je récupère un semis de points numérotés. Covadis a une fonction bien pratique qui permet de dessiner une polyligne passant des points en donnant le début et la fin. Par exemple, Si j'ai une bordure qui va du 142 au 158.je lance la comande polyligne. je tape 142-158je validej'ai ma polyligne. Soit j'ai un croquis, soit je fais à l'oeil, mais je décide alors de transformer certaines portions en arc. En général c'est plus rapide que de construire ma polyligne point par point, en changeant de segment à arc, en donnant le début de l'arc, le milieu, la fin,... voilà rien de secret... bon maintenant je vais tester un peu vos solutions... Hello Bruno Merci pour le developpement ... Routine testee et OK sur un AutoCAD 2014 French 32 bits sous Win XP Pro SP3 ! Par contre j'aimerais bien que G_P_TP nous explique pourquoi il a besoin de faire cette manipulation ? Si ce n'est pas Top-Secret !? lecrabe AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
G_P_TP Posté(e) le 9 avril 2013 Auteur Posté(e) le 9 avril 2013 EH bien bravo. Cela fonctionne super. un grand merci à tous. je suis admiratif. A bientôt. N.B. j'ai répondu dans un message précédent pour l'usage. AUTOCAD 2019 + COVADIS 17c + MENSURA 9 & 10 sous Windows 10 64bit
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