ASTERIXII Posté(e) le 13 avril 2013 Posté(e) le 13 avril 2013 Bonjour, Je pensais mon problème simple, mais je n'ai pas trouvé de réponse. Alors voila, j'ai 2 polylignes perpandiculaire, et je veux dessiner une nouvelle polyligne depuis l'extremité de celle perpendiculaire vers l'autre, mais à 45° Donc la nouvelle commence à l'extremité, et finie sur un point de l'autre avec un angle de 45° avec elle. Plus compliqué, reprendre la polyligne (prolonger) et faire la même chose mais avec un écart de 10 (exemple) comme avec la fonction raccord. Je sais le faire sur AutoCAD avec le repérage polaire, mais je voudrais trouver une fonction plus rapide en lisp
allan59 Posté(e) le 13 avril 2013 Posté(e) le 13 avril 2013 Salut,si j'ai bien compris, tu voudrais un lisp qui te permettrait, en cliquant sur 2 polylignes qui ont un sommet identique, de fermer la forme grâce à une polyligne qui serait forcée à 45° et qui démarrerait d'une des 2 extrémités libres.En fait, si tes 2 polylignes sont jointes, il te faudrait juste une option supplémentaire du genre " clore à 45° ". Le top serait d'avoir cette option avec la possibilité de choisir l'angle de manière libre ou incrémenté de 5°.Je n'ai aucune connaissance en programmation, je ne peux donc t'aider, mais je suis persuadé que nos développeurs préférés auront la solution à ton problème.Cordialement. Allan Bonjour, Je pensais mon problème simple, mais je n'ai pas trouvé de réponse. Alors voila, j'ai 2 polylignes perpandiculaire, et je veux dessiner une nouvelle polyligne depuis l'extremité de celle perpendiculaire vers l'autre, mais à 45° Donc la nouvelle commence à l'extremité, et finie sur un point de l'autre avec un angle de 45° avec elle. Plus compliqué, reprendre la polyligne (prolonger) et faire la même chose mais avec un écart de 10 (exemple) comme avec la fonction raccord. Je sais le faire sur AutoCAD avec le repérage polaire, mais je voudrais trouver une fonction plus rapide en lisp Cordialement Le ch'ti Allan
ASTERIXII Posté(e) le 13 avril 2013 Auteur Posté(e) le 13 avril 2013 Non, les polylignes ne sont pas jointes, mais perpendiculaire
Patrick_35 Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 Salut Et avec la commande native CHANFREIN ? @9 Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
VDH-Bruno Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 (modifié) Salut, Un principe de base avec les commandes natives d’Autocad (chamfrein et prolonger), donc l’ordre et la position des points de sélection ont leurs importantances. (defun c:ProCham45 (/ sel1 *error*) (defun *error* (msg) (ai_sysvar nil) (if msg (princ (strcat "\n*Abandon* " msg)) ) (princ) ) (or *ecart* (setq *ecart* (getvar 'CHAMFERA))) (setq *ecart* (cond ((getdist (strcat "\nSpécifiez l'écart à conserver entre les objets <" (rtos *ecart*) ">: "))) (*ecart*) ) ) (ai_sysvar (list '("CMDECHO" . 0) ; 0 Désactive l'affichage à l'écran. '("TRIMMODE" . 0) ; 0 Laisse intactes les arêtes sélectionnées '("CHAMMODE" . 0) ; 0 Deux distances de chanfrein sont nécessaires (cons "CHAMFERA" *ecart*) ; Définit le premier écart de chanfrein lorsque CHAMMODE est définie sur 0. (cons "CHAMFERB" *ecart*) ; Définit le second écart de chanfrein lorsque CHAMMODE est définie sur 0. ) ) (command "_chamfer" (setq sel1 (entsel "\nSélectionnez l'objet à prolonger: ")) (entsel "\nSélectionnez le second objet: ") ) (command "_extend" (entlast) "" sel1 "") (*error* nil) ) Nota: C'est dans le même esprit que ce qui était suggéré par Patrick_35 A+ - EDIT – En testant le code sur ma version 2007, je viens de découvrir avec amusement que la commande _chamfer avait un comportement différent sur des ligne et des pline (mode non-ajuster), en résumer le code fonctionne avec des lignes, mais pas avec des polylignes, sur des versions plus récente ça donne quoi ? Modifié le 15 avril 2013 par VDH-Bruno Apprendre => Prendre => Rendre
ASTERIXII Posté(e) le 15 avril 2013 Auteur Posté(e) le 15 avril 2013 Le but est de ne pas utiliser la commande chanfrein, car au niveau de la jonction, elle coupe la polyligne qui lui est perpandiculaire. (supprime une partie)Ou il existe une option ? sur chanfrein et les polylignes Bruno, le lisp ne tourne pas chez moi (MEP 2012), mais visiblement tu utilise la commande chanfrein, donc sa ne marchera pas.
Patrick_35 Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 Salut Ok, je viens de comprendre Tu as RA qui permet un raccord sans joindre.Cela peut servir de base pour faire ce que tu demandes (je manque de temps en ce moment) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ASTERIXII Posté(e) le 15 avril 2013 Auteur Posté(e) le 15 avril 2013 Salut Ok, je viens de comprendre Tu as RA qui permet un raccord sans joindre.Cela peut servir de base pour faire ce que tu demandes (je manque de temps en ce moment) @+ Merci pour ta réponse, mais j'ai toujours le même probléme qu'avec la fonction raccord (la ligne perpandiculaire est coupée)
bonuscad Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 Le but est de ne pas utiliser la commande chanfrein, car au niveau de la jonction, elle coupe la polyligne qui lui est perpandiculaire. (supprime une partie)Ou il existe une option ? Oui tu peux prendre l'option Non-ajuster Commande: CHANFREIN (mode AJUSTER) chanfreins actuels Dist1 = 0.0000, Dist2 = 0.0000Sélectionnez la première ligne ou [annUler/Polyligne/Ecart/ANgle/AJuster/méthOde/Multiple]: AJ Entrez l'option du mode Ajuster [Ajuster/Non-ajuster] <Ajuster>: N Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
VDH-Bruno Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 Bruno, le lisp ne tourne pas chez moi (MEP 2012), mais visiblement tu utilise la commande chanfrein, donc sa ne marchera pas. Re,A tester, c’est du dépannage, j’ai pas trop le temps en ce moment pour faire plus, cela devrait fonctionner sur des plines…(defun c:ProCham45 (/ sel1 sel2 *error* svgpline marque) (defun *error* (msg) (ai_sysvar nil) (if msg (princ (strcat "\n*Abandon* " msg)) ) (princ) ) (or *ecart* (setq *ecart* (getvar 'CHAMFERA))) (setq *ecart* (cond ((getdist (strcat "\nSpécifiez l'écart à conserver entre les objets <" (rtos *ecart*) ">: "))) (*ecart*) ) ) (ai_sysvar (list '("CMDECHO" . 0) ; 0 Désactive l'affichage à l'écran. '("TRIMMODE" . 0) ; 0 Laisse intactes les arêtes sélectionnées '("CHAMMODE" . 0) ; 0 Deux distances de chanfrein sont nécessaires (cons "CHAMFERA" *ecart*) ; Définit le premier écart de chanfrein lorsque CHAMMODE est définie sur 0. (cons "CHAMFERB" *ecart*) ; Définit le second écart de chanfrein lorsque CHAMMODE est définie sur 0. ) ) (if (setq sel1 (entsel "\nSélectionnez l'objet à prolonger: ")) (if (setq sel2 (entsel "\nSélectionnez le second objet: ")) ;; si le second objet est une pline => decompo (progn (if (= "LWPOLYLINE" (cdr (assoc 0 (entget (car sel2))))) (progn (setq marque (entlast)) (vl-cmdf "_explode" sel2 "") (setq sel2 (nentselp (osnap (cadr sel2) "_near"))) ) ) (vl-cmdf "_chamfer" sel1 sel2) (ai_sysvar '(("TRIMMODE" . 1) ("FILLETRAD" . 0))) (command "_fillet" sel1 "" (entlast) "") ;; si marque recompo => pline (if marque (progn (vl-cmdf "_pedit" (setq marque (entnext marque)) "O" "Joindre") (while (setq marque (entnext marque)) (vl-cmdf marque)) (vl-cmdf "" "") ) ) ) ) ) (*error* nil) ) A+ Apprendre => Prendre => Rendre
ASTERIXII Posté(e) le 15 avril 2013 Auteur Posté(e) le 15 avril 2013 Merci Bruno :D , ton lisp fonctionne Merci aussi Bonuscad pour le cette option, que je connaissais pas, mais elle ne marche pas bien.Car il n'y a pas une jonction entre les polylignes, ou pas d'ajustement selon la distance qui separe la polyligne à celle qu'il faut "raccorder"Je joint une capture plus parlante Derniere question sur les polylignes, il exite pas une variable pour qu'au tracé les polylignes ne soit pas jointe ? (il me semble que oui, mais ne retrouve pas) Mais merci à tous.
lili2006 Posté(e) le 15 avril 2013 Posté(e) le 15 avril 2013 Bonsoir à toutes et tous, Sur des lignes doubles, préfères les multilignes,... De plus, tu peux ensuite les exploser et ne garder que ce qui t'intéresse,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
ASTERIXII Posté(e) le 16 avril 2013 Auteur Posté(e) le 16 avril 2013 Oups ! Il reste un probleme, dans le cas de polyligne avec une épaisseur.Apres le "raccord" la polyligne perd son épaisseur. Vois l'image. (Lili, c'est pas des lignes double, c'est pour l'exmeple avant / apres)
lili2006 Posté(e) le 16 avril 2013 Posté(e) le 16 avril 2013 Re, (Lili, c'est pas des lignes double, c'est pour l'exmeple avant / apres) Oki ! Désolé,... :unsure: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
VDH-Bruno Posté(e) le 16 avril 2013 Posté(e) le 16 avril 2013 Oups ! Il reste un probleme, dans le cas de polyligne avec une épaisseur.Apres le "raccord" la polyligne perd son épaisseur. Voilà ça devrait être réparé.. (pas testé en profondeur)(defun c:ProCham45 (/ sel1 sel2 *error* dxfpline marque) (defun *error* (msg) (ai_sysvar nil) (if msg (princ (strcat "\n*Abandon* " msg)) ) (princ) ) (or *ecart* (setq *ecart* (getvar 'CHAMFERA))) (setq *ecart* (cond ((getdist (strcat "\nSpécifiez l'écart à conserver entre les objets <" (rtos *ecart*) ">: "))) (*ecart*) ) ) (ai_sysvar (list '("CMDECHO" . 0) '("TRIMMODE" . 0) '("CHAMMODE" . 0) (cons "CHAMFERA" *ecart*) (cons "CHAMFERB" *ecart*) ) ) (if (setq sel1 (entsel "\nSélectionnez l'objet à prolonger: ")) (if (setq sel2 (entsel "\nSélectionnez le second objet: ")) ;; si le second objet est une pline => svg pline (progn (if (= "LWPOLYLINE" (cdr (assoc 0 (setq dxfpline (entget (car sel2)))))) (progn (setq marque (entlast)) (vl-cmdf "_explode" sel2 "") (setq sel2 (nentselp (osnap (cadr sel2) "_near"))) ) ) (vl-cmdf "_chamfer" sel1 sel2) (ai_sysvar '(("TRIMMODE" . 1) ("FILLETRAD" . 0))) (command "_fillet" sel1 "" (entlast)) ;; si marque => restore pline (if marque (progn ((if (= "LWPOLYLINE" (cdr (assoc 0 (entget (car sel1))))) list entdel ) (while (setq marque (entnext marque)) (entdel marque)) ) (entmake dxfpline) ) ) ) ) ) (*error* nil) ) Nota: La fonction reposant essentiellement sur les commandes natives d’AutoCAD (Chanfrein & Raccord), elle est limité au bon fonctionnement de ces dernières.. A+ Apprendre => Prendre => Rendre
ASTERIXII Posté(e) le 16 avril 2013 Auteur Posté(e) le 16 avril 2013 Encore merci bruno, la c'est parfait ! :D
grandss Posté(e) le 30 octobre 2015 Posté(e) le 30 octobre 2015 Bonjour, Je re-up car j'ai voulu testé ce lisp, mais j'ai un probleme de "commande inconnue".Si j'ai bien compris, la commande "COMMAND" a été remplacé par "COMMAND-S".mais ca ne marche pas.Et que faire pour la commande "VL-CMDF" ? Merci Modeler Revit MEP - Référent BIMRevit MEP - Navisworks - MagicadAutocad MEP 2018 (mais plus beaucoup)
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