DenisHen Posté(e) le 3 avril 2006 Posté(e) le 3 avril 2006 Bonjoir (oui, c'est toujours la même chose...) Voilà, cher CadIxpiens et CadIxpiennes, je cherche à faire, en une seule ligne de commande dans un menu, une polyligne entre deux points uniques une flèche... On clique la pointepuit on clique la fin de la Pline, mais à 20 cm (ex) de début de cette pline, on insert un point. Pour qu'à la fin, on n'ai automatiquement le suite de commande ; pedit;m;e;0.3;0.1;n;e;.1;.1;; On édite la pLine, (donc, de trois sommet (le deuxième sommet est à 20 cm du premier) on donne la largeur 0 au premier, la largeur .3 au deuxième sommet du premier segment, puis, on donne les valeurs 0.1 pour les autres sommets des autres segments... Je ne pouvais pas écrire cela dans la "Personnalisation des Menus" vu qu'il n'y a que du lisp pour le faire... Mais là, j'en appel au ceinture super méga foncées avec, éventuellement, des danes en bonus... Merci d'avance... DenisH... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 3 avril 2006 Posté(e) le 3 avril 2006 (setq pta(getpoint "\nPremier Point")) (setq ptb(getpoint "\nDernier Point")) (if( (progn(alert"\Pas de flèche")(command "_pline" pta ptb nil)) (command "_pline" pta "_W" 2 2(polar ptb (+ pi(angle pta ptb))100) "_W" 50 0 ptb nil)) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 3 avril 2006 Posté(e) le 3 avril 2006 Salut, Un petit LISP vite fait, taper fleche à la ligne de commande : (defun c:fleche (/ p1 p2 p3) (initget 1) (setq p1 (getpoint "\nPointe de la flèche: ")) (initget 1) (setq p2 (getpoint p1 "\nTalon de la flèche: ")) (setq p3 (polar p1 (angle p1 p2) 0.2)) (command "_.pline" "_non" p1 "_w" 0.0 0.3 "_non" p3 "_w" 0.1 0.1 "_non" p2 "") (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 3 avril 2006 Posté(e) le 3 avril 2006 Oh Tramber, (+ pi(angle pta ptb)) C'est pas un peu comme (angle ptb pta) :casstet: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 3 avril 2006 Posté(e) le 3 avril 2006 Si si, mais ca va de A vers B, c'est didactique :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 j'en appel au ceinture super méga foncées La couleur des ceintures n'a rien à voir avec la capacité à répondre à des questions plus ou moins complexes, elle est liée au nombre de messages postés et, à l'allure où tu postes, tu ne devrais pas tarder à être ceinture méga foncée ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
esbe Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Hello J 'essaye ton lisp Gile mais, mais...J 'ai Commande:APPLOAD fleche.lsp correctement chargé(s) Commande: ; erreur: type d'argument incorrect: numberp: nil Commande:Commande: flecheCommande inconnue "FLECHE". Appuyez sur F1 pour obtenir de l'aide. ??? dommage @+
kallain Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Salut,Ce matin je charge defun c:fleche (/ p1 p2 p3)(initget 1)(setq p1 (getpoint "\nPointe de la flèche: "))(initget 1)(setq p2 (getpoint p1 "\nTalon de la flèche: "))(setq p3 (polar p1 (angle p1 p2) 0.2))(command "_.pline" "_non" p1 "_w" 0.0 0.3 "_non" p3 "_w" 0.1 0.1 "_non" p2 "")(princ)) J'essaye et j'obtiens Commande: fleche Corp de la flèche - Point de départ/[Largeur/Type] :Position de la pointe de la flèche:Dessinée avec [Arc/Segment droit]? : :exclam: :casstet: Bizarre, c'est quoi ce truc, il parle pas de Arc/Segment droit dans son lisp En fait j'avais un autre Fleche.lsp sur le disque dur que voici (defun c:fleche ( / key_mod lock_mod p_begin p_end pl_wid d_pts a_pts nb_or p_x l_fl m_osm tg_dir pt_dir)(setvar "cmdecho" 0)(if (or (eq (getvar "USERS1") "Fixed") (eq (getvar "USERS1") "Varie"))(setq key_mod (getvar "USERS1"))(setvar "USERS1" "Fixed"))(if (or (eq (getvar "USERS2") "Yes") (eq (getvar "USERS2") "No"))(setq lock_mod (getvar "USERS2"))(setvar "USERS2" "No"))(initget 9 "Largeur Type _Width Type")(while (eq (type (setq p_begin (getpoint "\nCorp de la flèche - Point de départ/[Largeur/Type] : "))) 'STR)(cond((eq p_begin "Width")(initget 4)(setq pl_wid (getdist (strcat "\nNouvelle largeur <" (rtos (getvar "plinewid")) ">: ")))(if pl_wid (setvar "plinewid" pl_wid) (setq pl_wid (getvar "plinewid"))))((eq p_begin "Type")(initget "Constant Variable _Fixed Varie")(setq key_mod (getkword (strcat "\nCorp de flèche [Constant/Variable]? <" (if (eq (getvar "USERS1") "Fixed") "Constant" "Variable") ">: ")))(if (not key_mod) (setq key_mod (getvar "USERS1")) (setvar "USERS1" key_mod))(initget "Oui Non _Yes No")(setq lock_mod (getkword (strcat "\nVoulez vous verrouiller le sens de gauche à droite [Oui/Non]? <" (if (eq (getvar "USERS2") "No") "Non" "Oui") ">: ")))(if (not lock_mod) (setq lock_mod (getvar "USERS2")) (setvar "USERS2" lock_mod)) )(T (setq key_mod (getvar "USERS1") lock_mod (getvar "USERS2"))))(initget 9 "Largeur Type _Width Type"))(if (not pl_wid) (setq pl_wid (getvar "plinewid")))(initget 9)(setqp_end (getpoint p_begin "\nPosition de la pointe de la flèche: ")d_pts (distance p_begin p_end)a_pts (angle p_begin p_end)nb_or (/ (1+ (sqrt 5)) 2)l_fl (+ (* (* 0.1 nb_or) d_pts) (getvar "plinewid"))m_osm (getvar "osmode"))(if (eq lock_mod "Yes")(cond((and (> a_pts (/ pi 2)) (< a_pts (/ (* pi 3) 2)))(setqa_pts p_endp_end p_beginp_begin a_ptsa_pts (angle p_begin p_end)))))(initget "Arc Segment _Arc Vertex")(cond((eq (getkword "\nDessinée avec [Arc/Segment droit]? : ") "Arc")(grdraw p_begin p_end -1)(initget 1)(setq tg_dir (getangle p_begin "\nTangente du corp de la flèche: ") pt_dir (polar p_begin tg_dir d_pts))(grdraw p_begin p_end -1)(if (and (or (> (- a_pts tg_dir) 0) (< (- a_pts tg_dir) (- pi))) (< (- a_pts tg_dir) pi))(setq p_x (polar p_begin (+ tg_dir (* (1- nb_or) (rem (- (+ (* 2 pi) a_pts) tg_dir) pi))) (* (1- nb_or) d_pts)))(setq p_x (polar p_begin (- tg_dir (* (1- nb_or) (rem (- (+ (* 2 pi) tg_dir) a_pts) pi))) (* (1- nb_or) d_pts))))(setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384)))(if (eq key_mod "Fixed")(command "_.pline" p_begin "_arc" "_direction" pt_dir p_x "_width" l_fl 0.0 p_end "")(command "_.pline" p_begin "_width" (getvar "plinewid") 0.0 "_arc" "_direction" pt_dir p_x "_width" l_fl 0.0 p_end "")))(T(setq p_x (polar p_begin a_pts (* (1- nb_or) d_pts)))(setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384)))(if (eq key_mod "Fixed")(command "_.pline" p_begin p_x "_width" l_fl 0.0 p_end "")(command "_.pline" p_begin "_width" (getvar "plinewid") 0.0 p_x "_width" l_fl 0.0 p_end ""))))(setvar "plinewid" pl_wid)(setvar "osmode" m_osm)(setvar "cmdecho" 1)(princ)) ;)
DenisHen Posté(e) le 4 avril 2006 Auteur Posté(e) le 4 avril 2006 Merci (gile), je ne savais pas pour la couleur des ceintures... Mais je vais me calmer, je vais recevoir un bouquin qui traite du Lisp dans les menus... Le temps que le l'apprenne par coeur et Hop ! ! A moins que je n'y pige rien, dans ce cas, je reveindrai demander des aides explicatives... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Pour Esbe, Bizarre, je ne comprends pas, le viens de faire un copier/coller et un test, çà marche :casstet: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
esbe Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Merci Gile Tu sais que je n 'y connais rien mais il n 'y a pas des variables qui pourraient parasiter ton programme chez moi ???Au fait c 'est quoi numberp: nil ? @+
esbe Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Je viens de penser à quelque chose qui se dit souvent ici....Lors des copier/coller vous parlez des espaces, est-ce que cela pourrait venir de là ?
DenisHen Posté(e) le 4 avril 2006 Auteur Posté(e) le 4 avril 2006 Merci à tous ! ! C'est EXACTEMENT ce que je cherchais... Mais vu l'éficacité des différents protagonistes de ce forum, quelle serait la réponse si je demandais de faire la même chose (clique la pointe, puis la queue) mais avec une polyligne de plusieurs sommets (indéfinis) ? ? Alors là, je suis curieux, ça pourrait me servir pour faire des flèches de rappel avec un texte au bout... Grand merci encore ! ! C'est génial ! ! Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
esbe Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Merci qui ? Tramber, Gile ou Kallain ???Lequel as-tu charge ???
Tramber Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Alors là, je suis curieux, ça pourrait me servir pour faire des flèches de rappel avec un texte au bout... Moi je fais un LREPERERAP et je rentre dans la poignée du bout de flèche puis j'étire avec C (option Copier), ca multiplie les flèche. Ca marche aussi plus simplement avec Majuscule depuis AutoCAD 2004. Esbe :(defun c:flech () (setq pta(getpoint "\nPremier Point")) (setq ptb(getpoint "\nDernier Point")) (if((progn(alert"\Pas de flèche")(command "_pline" pta ptb nil)) (command "_pline" pta "_W" 2 2(polar ptb (+ pi(angle pta ptb))100) "_W" 50 0 ptb nil)) ) Lance FLECH mais ne te laisse pas avoir pas les accrobj, je ne les controle pas dans la routine. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
DenisHen Posté(e) le 4 avril 2006 Auteur Posté(e) le 4 avril 2006 Merci à tout le monde, pour les réponses et l'aide... J'ai choisi la routine de Gile, car c'est la premièer que j'ai testé et vu qu'elle a fonctionnée du premier coup, je n'ai pas cherché plus loin... Je n'ai que quelques petites correction à faire.. Comme changer les é épaisseurs de la polyligne pour qu'elles soit conforme ausx différentes échelles... Mais ne m'en voulez pas Tramber ou Kallain... Rien n'est contre vous... Donc, je remerci l'ensemble du forum pour cette aide précieuse... Maintenant, je dois écrire cette routine en une seulle ligne de menu... ! ! ! J'ai de quoi nourrir la planche en pain... Merci encore... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Mais ne m'en voulez pas Tramber ou Kallain... Rien n'est contre vous... T'inquiète pas, on publie des réponses parfois en 4ème vitesse pour continuer à assurer dans son boulot et sans se soucier vraiment de ce que l'on n'a pas le temps de lire.L'important, c'est aussi de voir de tout. De comprendre...et de prendre. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
esbe Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Hé ce n'etait pas un reproche ! ;) Je voulais juste savoir lequel fonctionné puisque je n 'ai pas reussi à utiliser celui de Gile !! bonsoir
(gile) Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Pour Esbe, Vraiment, je ne vois pas. Le message numberp: nil signifie qu'une fonction (ou une commande) attend un nombre et qu'à la place de ce nombre elle reçoit une variable Lisp nulle (nil) ou contenant autre chose qu'un nombre, or tous les nombres requis sont renseignés par des nombres ou par la fonction angle qui calcule un angle à partir des points spécifiés. Il ne me semble pas que cela puisse provenir d'une variable système (surtout si d'autres LISPs fonctionnent) Il n'y a pas d'histoire d'espace dans cette routine. Ou alors un truc du type de ce qui est arrivé à Kallain (conflit entre 2 LISPs de même nom) essaye de remplacer c:fleche par autre chose : c:fleche1 par exemple. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 4 avril 2006 Auteur Posté(e) le 4 avril 2006 Juste pour info : Bonus_cad a créé un lisp qui se nomme aussi "fleche"... Il a aussi développé plein d'autres supers trucs ! ! Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
bonuscad Posté(e) le 4 avril 2006 Posté(e) le 4 avril 2006 Bonus_cad a créé un lisp qui se nomme aussi "fleche"... Oui en effet, celle que cite Kallain a été publié sur ce site. :exclam: Je rappelle qu'elle est plus destinée à une présentation "Fun";quoique, une fois paramétrée est utlisée toujous à la même taille (utilisation d'@ pour la longueur de la flèche").En effet elle s'auto-proportionne par rapport à sa taille. J'ai déjà vu plein de solutions pour des flèches. Un truc qui revient souvent et qui est peut être une bonne idée est l'utilisation d'une variable de cotation pour paramétrer l'épaisseur de la flèche. (encore faut-il faire de la cotation dans son dessin pour que ce soit fiable) J'ai bien essayer de faire quelque chose de "chiadé" avec (entmake), mais je bloque pour créer le code 210 (avec 2 points fournis en 3D), en fait placer cette poly2D directement dans son SCU objet. Je ne serais pas surpris que (gile) me donne la solution, c'est qu'il planche dessus le garçon ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 4 avril 2006 Auteur Posté(e) le 4 avril 2006 Exactement BonusCad, le coup de la proportion, c'est super bien trouvé ! ! Fallait le faire ! ! Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 5 avril 2006 Posté(e) le 5 avril 2006 Je ne serais pas surpris que (gile) me donne la solution Je serais bien incapable (et je mets quiconque au défi ;) ) de définir un seul plan avec seulement 2 points.Avec 3 points, c'est exactement pour cet usage que Norm_3pts a été faite. Sinon, j'avais aussi fait des flèches, assez sommaires, dont l'utilité était de dessiner les vecteurs représentant les forces en statique graphique, la pointe est proportionnelle à la longueur de la flèche. Une autre routine permet de récupérer les coordonnées du vecteur et sa norme, une troisiéme pour les coordonnées du vecteur normé (si çà peut servir à quelqu'un). ;;; C:VEC ;;; Crée une polyligne 2D symbolisant un vecteur et affiche ses coordonnées et sa norme ;;; Redéfinition de *error* (defun VEC_ERR (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (setq *error* m:err m:err nil ) (princ) ) ;;; Fonction principale (defun c:vec (/ pt1 pt2 ang dist) (setq m:err *error* *error* VEC_ERR ) (princ "Vecteur") (initget 1) (setq pt1 (getpoint "\nSpécifiez l'origine du vecteur: ")) (initget 1) (setq pt2 (getpoint pt1 "\nSpécifiez l'extrémité du vecteur: ")) (DRAW_VEC pt1 pt2) (setq *error* m:err m:err nil ) (princ) ) (defun DRAW_VEC (pt1 pt2 / ang dist pt3 pt4) (setq ang (angle pt1 pt2) dist (/ (distance pt1 pt2) 10) pt3 (polar pt2 (angle pt2 pt1) dist) Norm (trans '(0 0 1) 1 0 T) ) (command "_regen") (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 5) ;_ nombre de sommets '(70 . 0) ;_ ouverte (0) ou fermée (1) (cons 38 (- (caddr pt1) (caddr (trans '(0 0) 0 1)))) ;_ élévation (cons 10 (trans pt1 1 Norm)) (cons 10 (trans pt3 1 Norm)) (cons 40 (/ dist 2)) ;_ largeur de la pointe (cons 41 0.0) (cons 10 (trans pt2 1 Norm)) (cons 210 Norm) ;_ direction d'extrusion ) ) ) ;;; C:GETVEC ;;; Affiche les coordonnées et la norme d'un vecteur défini par son origine et son extrémité (defun C:GETVEC (/ vec pt1 pt2) (initget 1) (setq pt1 (getpoint "\nSpécifiez l'origine du vecteur: ")) (initget 1) (setq pt2 (getpoint pt1 "\nSpécifiez l'extrémité du vecteur: ")) (princ (strcat "\nVecteur: " (PT->COORD (mapcar '- pt2 pt1)) " Norme: " (rtos (distance pt1 pt2)) ) ) (princ) ) ;;; C:NORMVEC ;;; Affiche les coordonnées du vecteur normé décrit par un segment (defun C:NORMVEC (/ vec pt1 pt2) (initget 1) (setq pt1 (getpoint "\nSpécifiez l'origine du segment: ")) (initget 1) (setq pt2 (getpoint pt1 "\nSpécifiez un autre point sur le segment: ") ) (princ (strcat "\nVecteur normé: " (PT->COORD (mapcar '(lambda (x) (/ x (distance pt1 pt2))) (mapcar '- pt2 pt1) ) ) ) ) (princ) ) [Edité le 5/4/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
esbe Posté(e) le 5 avril 2006 Posté(e) le 5 avril 2006 Bonjour à tous Bon j 'ai repris mes essais doncGile, j 'ai reenregistré sous un autre nom , même resultatTramber j 'ai chargé ton programme et Commande: flech Premier PointDernier Point_plineSpécifiez le point de départ:La largeur courante est de 0.000.Spécifiez le point suivant ou [Arc/Demi-larg/LOngueur/annUler/LArgeur]:Spécifiez le point suivant ou [Arc/Clore/Demi-larg/LOngueur/annUler/LArgeur]:Commande: nil et à l 'écran PAS DE FLECHEJe vais essayer les autres...Conseillez moi un bon guide, pas trop aride pour commancer à comprendre vos codes !Sinon, je vais garder ma vieille technique pour faire mes flêchespo, clic, clic,la,.3,0, clic !!
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