titicool Posté(e) le 3 août 2011 Posté(e) le 3 août 2011 Bonjour à toutes et à tous, J'ai besoin d'un peu d'aide pour le développement d'une routine.J'ai développé la routine suivante, elle permet d'insérer des blocs avec incrémentation d'attributs. Le problème que je désire maintenant résoudre est de pouvoir relier les blocs insérés au fur et à mesure de l'insertion par un ligne ou une polyligne. Ou après l'insertion des blocs. Je pense qu'il faut que je récupère les points d'insertion des blocs, mais je ne vois pas du tout comment exécuter cela. Voici la routine actuelle: (defun c:TITI () (setq saveblip (getvar "blipmode") ) (setq savecmde (getvar "cmdecho") ) (setvar "blipmode" 0) (setvar "cmdecho" 0) (setq num (getint "\nNumero du detecteur de depart: ") inc (getint "\nPas incrementation : ") pref (getstring "\nPrefixe = F + ID centrale: ") suff (getstring "\nSuffixe: ") num2 (getint "\nAdresse du detecteur de depart: ") inc2 (getint "\nPas incrementation adresse : ") pref2 (getstring "\nPrefixe = numero de la boucle: ") suff2 (getstring "\nSuffixe: ") ) (setq pos (getpoint "\nLocalisation du premier point: ")) (while (/= nil pos) (setq i (strcat pref " " (itoa num) suff)) (setq s (strcat pref2 " " (itoa num2) suff2)) (command "_insert" "DETECT" pos 1 1 0 i s ) (setq num (+ num inc)) (setq num2 (+ num2 inc2)) (setq pos (getpoint "\nLocalisation du point suivant: ")) ) (setvar "blipmode" saveblip) (setvar "cmdecho" savecmde) (princ)) Une autre évolution que j'aimerais mettre au point, c'est la possibilité de pouvoir utiliser une boite à dialogue pour choisir dans une liste de blocs et définir les préfixe, suffixe et incréments de ma routine. Si quelqu'un peu m'aiguiller à ce sujet cela m'intéresse également. Je ne suis peut-être sur le bon forum pour cela. Merci d'avance des réponses. Titicool
Carboleum Posté(e) le 3 août 2011 Posté(e) le 3 août 2011 Bonjour à toutes et à tous, J'ai besoin d'un peu d'aide pour le développement d'une routine.J'ai développé la routine suivante, elle permet d'insérer des blocs avec incrémentation d'attributs. Le problème que je désire maintenant résoudre est de pouvoir relier les blocs insérés au fur et à mesure de l'insertion par un ligne ou une polyligne. Ou après l'insertion des blocs. Je pense qu'il faut que je récupère les points d'insertion des blocs, mais je ne vois pas du tout comment exécuter cela. Voici la routine actuelle: (defun c:TITI () (setq saveblip (getvar "blipmode") ) (setq savecmde (getvar "cmdecho") ) (setvar "blipmode" 0) (setvar "cmdecho" 0) (setq num (getint "\nNumero du detecteur de depart: ") inc (getint "\nPas incrementation : ") pref (getstring "\nPrefixe = F + ID centrale: ") suff (getstring "\nSuffixe: ") num2 (getint "\nAdresse du detecteur de depart: ") inc2 (getint "\nPas incrementation adresse : ") pref2 (getstring "\nPrefixe = numero de la boucle: ") suff2 (getstring "\nSuffixe: ") ) (setq pos (getpoint "\nLocalisation du premier point: "))(setq lpts nil) (while (/= nil pos) (setq i (strcat pref " " (itoa num) suff)) (setq s (strcat pref2 " " (itoa num2) suff2)) (command "_insert" "DETECT" pos 1 1 0 i s ) (setq num (+ num inc)) (setq num2 (+ num2 inc2)) (setq pos (getpoint "\nLocalisation du point suivant: "))(setq lpts (append lpts (list pos))) )(command "_pline")(mapcar 'command lpts)(command "") (setvar "blipmode" saveblip) (setvar "cmdecho" savecmde) (princ)) Une autre évolution que j'aimerais mettre au point, c'est la possibilité de pouvoir utiliser une boite à dialogue pour choisir dans une liste de blocs et définir les préfixe, suffixe et incréments de ma routine. Si quelqu'un peu m'aiguiller à ce sujet cela m'intéresse également. Je ne suis peut-être sur le bon forum pour cela. Merci d'avance des réponses. Titicool Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
titicool Posté(e) le 8 août 2011 Auteur Posté(e) le 8 août 2011 Bonjour à totes et à tous, Carboleum, merci pour cette réponse.Cela marche pas mal. Le souci, la polyligne ne démarre qu'à partir du 2ème bloc. J'ai modifié l'instruction (setq lpts nil) par (setq lpts pos) mais le résultat n'est pas correct. De même, j'ai essayé de remplacer la commande polyligne (_pline) par la commande ligne (_line).Avec cette comande, il y a un message d'erreur et aucune ligne n'est tracée. Quel pourrais être le souci? Merci de l'aide reçue. Titicool
Carboleum Posté(e) le 8 août 2011 Posté(e) le 8 août 2011 Bonjour à totes et à tous, Carboleum, merci pour cette réponse.Cela marche pas mal. Le souci, la polyligne ne démarre qu'à partir du 2ème bloc. J'ai modifié l'instruction (setq lpts nil) par (setq lpts pos) mais le résultat n'est pas correct. bien vu, sauf qu'il faut plutot mettre (setq lpts (list pos))Parce que append n'accepte que des listes omme arguments. Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
titicool Posté(e) le 8 août 2011 Auteur Posté(e) le 8 août 2011 Merci Carboleum, Ca marche nickel.Par contre pour le problème de l'utilisation de la commande ligne, pourquoi cela ne fonctionne-t-il pas? Dans l'énoncé de ma demande, je précisais que je désirais passer par un boîte à dialogue pour encoder mes différents données et choisir mon bloc. Quelqu'un pourrait-il m'aiguiller à ce sujet? Merci d'avance de vos conseils. Ttiticool
Carboleum Posté(e) le 8 août 2011 Posté(e) le 8 août 2011 Dans l'énoncé de ma demande, je précisais que je désirais passer par un boîte à dialogue pour encoder mes différents données et choisir mon bloc. Quelqu'un pourrait-il m'aiguiller à ce sujet? Si j'étais toi, sans vouloir te vexer évidemment, je ne me lancerai pas encore tout de suite dans les boites de dialogue. Il te manque un peu de maitrise de l'AutoLisp. (c'est un avis perso) Sinon, si tu persistes ;-) va voir du coté des DCL dans le help de ton autocad. Ou encore OpenDCL (cfr google), mais je ne l'ai jamais utilisé. Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
titicool Posté(e) le 8 août 2011 Auteur Posté(e) le 8 août 2011 Carboleum, Ok je vais suivre ton conseil.C'est vrai qu'il faut travailler pas mal avec autolisp, je pense, pour maitriser cet outil. Concernant la routine, je viens de m'apercevoir que la routine fonctionne une seule fois correctement dans un dessin. Lorsque je relance la routine, la polyligne n'es plus dessiné correctement par rapport aux points définis à la souris. Il y a un décalage. Pour l'instant, je n'ai as encore saisi d'où pourrait provenir le souci. Si tu pouvais vérifier de ton côté si tu as le même résultat. Merci beaucoup. Titicool
bryce Posté(e) le 8 août 2011 Posté(e) le 8 août 2011 Bonjour, C'est probablement parce que que ta liste lpts n'est pas remise à zéro à chaque lancement de la routine.Tu devrais la déclarer en tant que variable locale (les autres aussi d'ailleurs) : (defun c:TITI( / lpts) [...] ) [Edité le 8/8/2011 par bryce] Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
bonuscad Posté(e) le 8 août 2011 Posté(e) le 8 août 2011 Bonjour, Un truc que j'avais fais il y a plusieurs années. Si ça peut être d'une inspiration pour toi... 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