vinslille Posté(e) le 14 octobre 2022 Posté(e) le 14 octobre 2022 Bonjour, Je débute totalement avec les lisp... je cherche à créer une routine me permettant de tracer des polylignes avec la fonction "mainlev", que ces polylignes se closent et qu'une qu'une hachure (échelle annotative) remplisse l'intérieur. A l'aide d'outils séparé, ça fonctionne, mais en utilisant trois outils distinct. Je souhaiterai que cela se fasse en une seule opération. j'ai fait quelque essais (un est en dessous, soyez indulgents, c'est ma première aventure ! ), mais ça ne fonctionne pas (je n'ai malheureusement assez de temps à y consacrer) Pouvez-vous m'aider ? D'avance merci ! (defun c:essais (/ *error* oldcmd ply) (vl-load-com) (defun *error* (msg) (if oldcmd (setvar "CMDECHO" oldcmd)) (if (not (member msg '("Function cancelled" "quit / exit abort"))) (princ (strcat "\n<< Error: " msg " >>")) (princ "\n<< Cancelled >>")) (princ)) (setq oldcmd (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setvar "HPNAME" "ETOILE-02") (setvar "SKETCHINC" 0.001) (setvar "SKPOLY" 1) (command "mainlev" "") (prompt "tracer EC") (while (eq 1 (logand 1 (getvar "CMDACTIVE"))) (command pause)) (vla-put-Closed (command "PEDIT" "M") (setq ply(entlast)) "C" (setq ply(entlast)) (command "_hatch" "_S" ply "" "") (princ))
didier Posté(e) le 14 octobre 2022 Posté(e) le 14 octobre 2022 Bonjour @vinslille En lisant ça, on sait que tu débutes. Tout le monde a débuté et je ne me permettrais pas de me moquer. Par contre, quand on débute, on ne se coltine pas tout de suite aux polylignes. Il faut se familiariser avec des objets simples, comprendre chaque action et interaction... Je vais regarder ce qu'on peut faire pour cette demande de dessin... Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Luna Posté(e) le 15 octobre 2022 Posté(e) le 15 octobre 2022 Coucou, Je n'ai pas d'AutoCAD sous la main pour l'instant. Serait-il possible de savoir à quel endroit tu rencontres une erreur ? Une chose est sûre, la fin ne peut pas fonctionner ainsi et pour un début, tu fais déjà appel à des concepts assez complexes ! Si j'étais à ta place, j'essaierai d'y aller pas à pas, une fois le premier pas franchi, on passe au suivant, etc... Ainsi la première étape serait la commande MAINLEV (pas besoin de clore pour l'instant). Si tu arrives à tracer une polyligne avec cette commande, sans générer d'erreur alors on passe à la seconde étape : clore la polyligne dernièrement créée. Et ainsi de suite. Tu verras qu'en procédant de la sorte, tu auras beaucoup moins d'erreurs (ou du moins beaucoup moins les unes après les autres ! Bisous, Luna
vinslille Posté(e) le 24 octobre 2022 Auteur Posté(e) le 24 octobre 2022 Bonjour, désolé pour la réponse tardive, j'ai essayé de suivre le conseil de @Luna, j'y suis allé pas à pas. (Command "skpoly" "1") (command "mainlev" "0.001") Jusque là ça fonctionne, mais pas besoins d'une lisp si ça devait s'arrêter là. La ou je bloque, c'est qu'une fois ma polyligne tracée, je voudrai la clore avec PEDIT, j'ai essayé de coder comme ça : (Command "skpoly" "1") (command "mainlev" "0.001" (command "PEDIT" "m" (entlast) "" "C" "")) en gros, je souhaite sélectionner mon dernier tracé, et clore la polyligne créé avant de passer à la prochaine étape (les hachures). Là, quand je valide mon tracé par la touche entrée ou espace, ça interrompt la commande. Avez vous une solution (j'ai cherché mais pas trouvé) ?
vinslille Posté(e) le 24 octobre 2022 Auteur Posté(e) le 24 octobre 2022 sinon la fin, après l'étape de la polyligne à main levée, fonctionne (quand on l'utilise à part) : (command "PEDIT" "m" (entlast) "" "C" "SO") (command "_hatch" "p" "ETOILE-02" "0.2" "0" (entlast) "")
bonuscad Posté(e) le 24 octobre 2022 Posté(e) le 24 octobre 2022 Bonjour, Peut être sous cette forme ? (en conservant tes paramètres de Main Levée et de motif de hachure propre à ton dessin.) (defun c:essai ( / Borne ss Suivant) (setvar "SKPOLY" 1) (setq Borne (entlast)) (command "_.SKETCH" 0.001) (while (not (zerop (getvar "CMDACTIVE"))) (command pause) ) (if (and Borne (entget Borne)) (progn (setq ss nil ss (ssadd)) (while (setq Suivant (entnext Borne)) (ssadd Suivant ss) (setq Borne Suivant) ) ss ) ) (command "_.PEDIT" "_Multiple" ss "" "_Close" "_eXit") (command "_.HATCH" "ETOILE-02" 0.2 0 ss "") ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
vinslille Posté(e) le 26 octobre 2022 Auteur Posté(e) le 26 octobre 2022 Le 24/10/2022 à 15:06, bonuscad a dit : Bonjour, Peut être sous cette forme ? (en conservant tes paramètres de Main Levée et de motif de hachure propre à ton dessin.) Super, ça fonctionne très bien, et j'ai légèrement adapté et modifié pour répondre à mon besoin. J'ai "presque" entièrement compris le fonctionnement, maintenant je vais essayé d'aller plus loin, je reviendrai vers vous je pense, car j'ai beaucoup d'idée, mais pas sur que je soit en mesure de tout réussir moi-même! En tout cas merci à vous trois pour vos réponses/conseil/solution
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