willy95 Posté(e) le 14 décembre 2008 Posté(e) le 14 décembre 2008 Bonjour à Tous ... Comment décaler une polyligne et en modifié le calque et l'épaisseur de l'objet résultant ? Merci d'avance pour toute votre aide .
(gile) Posté(e) le 15 décembre 2008 Posté(e) le 15 décembre 2008 Salut, Ce coup ci, pas de poisson tout préparé, juste quelques conseil pour la pêche.Tu devrais arriver à écrire tout seul un petit LISP ou un macro qui fait ça. Appeler les commandes _offset, _pedit et _chprop.Faire des pauses pour les entrées utilisateur : pause en LISP ou \ en macroAppeler la dernière entité créée avec la fonction LISP (entlast) ou "_last" Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 15 décembre 2008 Posté(e) le 15 décembre 2008 Quand on fait un DECALER, il y a l'option Calque.... maintenant (V2006) Pour l'épaisseur, c'est autre chose, une macro s'impose en effet. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
willy95 Posté(e) le 15 décembre 2008 Auteur Posté(e) le 15 décembre 2008 Bonsoir à tous... Alors voila j'ai pondu un oeuf qui ne fonctionne pas, j'ai tout essayé mais je suis perdu : (defun C:decaltrame (/ OldAccr Ent Dis Pol) ;creation de la nouvelle commande(Setq OldAccr (GetVar "OSMODE")) ;enregistre l'accrochage courant(SetVar "OSMODE" 0) ;aucun accrochage(command "_-layer" "_make" "Limites-Trames" "_color" 20 "" "") ;creer le calque(setvar "CLayer" "Limites-Trames") ;calque courant (Setq Ent (Car (entsel "\nChoix de l'objet à décaler: "))) ;choix de l'objet(setq Dis "0.3") ;distance par defaut(setvar "CMDECHO" 0) ;aucun accrochage(command "_OFFSET" Dis Ent Pause "") ;decalage (setq Pol (entlast Ent)) ;selectionne la polyligne et c'est la que commence mon probleme(command "pedit" Pol "_la" "0.60" "") ;applique l'epaisseur(SetVar "OSMODE" OldAccr) ;mettre accrochage d'avant)(princ) Quelqu'un peu t-il m'aider, pour que j'avance sur mon probleme ? Merci
(gile) Posté(e) le 15 décembre 2008 Posté(e) le 15 décembre 2008 Salut, Plusieurs petites choses : (setq Pol (entlast Ent)) -> erreur: nombre d'arguments trop importantentlast ne requiert aucun argument (setq Pol (entlast)) mais tu peux éviter cette expression en utilisant l'option "_last" ou "dernier" dans les expressions (command...) (command "pedit" Pol "_la" "0.60" "") -> Choix de l'option incorrect.le souligné (underscore) devant les noms de commande et options sert à utiliser le langage international (reconnu par toutes les version linguistiques) quand il est placé devant le nom anglais. Il faut donc écrire soit :(command "pedit" Pol "largeur" "0.60" "") ; version française uniquementsoit :(command "_pedit" Pol "_width" 0.60 "") ; toutes versionsNote que 0.60 est accepté sous forme de chaîne ou de réel. (setvar "CLayer" "Limites-Trames") est inutile, l'option "_make" de l'expression précédente l'a déjà rendu courant. (setvar "CMDECHO" 0) ;aucun accrochageCMDECHO ne concerne pas l'accrochage, mais les échos en ligne de commande.En phase de debogage, il vaut mieux que CMDECHO soit à 1 pour avoir les retours d'erreurs.Une fois la fonction déboguée tu peux faire comme avec OSMODE : récupérer la valeur initiale, mettre à 0 et restaurer la valeur initiale en fin de routine. Le (princ) final devrait être avant la dernière parenthèse. Je te laisse corriger... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 15 décembre 2008 Auteur Posté(e) le 15 décembre 2008 Grâce à votre aide très précieuse, j'ai enfin réussi à faire fonctionner un programme presque correctment. Merci J'aimerais du reste le perfectionner, je m'explique : je souhaite faire apparaitre une boite de dialogue pour pouvoir choisir parmi certaines couleurs que j'ai défini (11,21,31,41,etc...) Je pense partir de ce genre de chose : strcat "IncTxt:dialog{" mais je n'y comprend pas grand chose.! Pouvez vous me guider sur ce sujet ? (defun C:decaltrame (/ OldAccr Ent Dis Pol) ;creation de la nouvelle commande(Setq OldAccr (GetVar "OSMODE")) ;enregistre l'accrochage courant(SetVar "OSMODE" 0) ;affichage détails du programme(command "_-layer" "_make" "Limites-Trames" "_color" 20 "" "") ;creer le calque courant(Setq Ent (Car (entsel "\nChoix de l'objet à décaler: "))) ;choix de l'objet(setq Dis "0.3") ;distance par defaut(setvar "CMDECHO" 0) ;aucun accrochage(command "_OFFSET" Dis Ent Pause "") ;decalage (setq Pol (entlast)) ;selectionne la polyligne(command "chprop" Pol "" "_layer" "Limites-Trames" "") ;Met la selection dans le calque(command "chprop" Pol "" "_color" "91" "") ;Met dans la couleur(command "chprop" Pol "" "t" "continuous" "") ;Type de ligne(command "pedit" Pol "_width" "0.60" "") ;applique l'epaisseur(command "_draworder" Pol "" "AR" "") ;met en arriere le contour trame(command "_draworder" Ent "" "Av" "") ;met en avant la ligne depart (SetVar "OSMODE" OldAccr) ;mettre accrochage d'avant(command "_-layer" "_make" "0" "" "")(princ))
(gile) Posté(e) le 15 décembre 2008 Posté(e) le 15 décembre 2008 Re, La création de boites de dialogue est le "point faible" du LISP.Cela suppose d'apprendre un autre langage : le DCL (Dialog Control Language) pour décrire la boite de dialogue qu'on pilote ensuite avec des fonctions LISP spécifiques.Ça me paraît un peu prématuré dans ton cas, tu sembles avoir besoin de progresser encore un peu, mais ça viendra vite si tu persiste.En attendant, tu peux utiliser la fonction LISP acad_colordlg qui ouvre la boite de dialogue standard. (setq col (acad_colordlg 256)) PS : ton sujet aurait été mieux placé dans le forum "Débuter en LISP"PPS : Quand tu donnes des lignes de code, met les entre les balises bbcode : [code] [/code], elles sont accessibles par le bouton "dièse" [#] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 15 décembre 2008 Auteur Posté(e) le 15 décembre 2008 Encore Merci Gile, j'apprecie encore une fois de plus votre réponse et je vous en remercie. La fonction LISP acad_colordlg est déjà très bien pour moi et tout fonctionne à merveille. [(setq col (acad_colordlg 256));Selection de la couleur(command "chprop" Pol "" "_color" col "");Met dans la couleur]
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