Aller au contenu

Messages recommandés

Posté(e)

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 macro

Appeler la dernière entité créée avec la fonction LISP (entlast) ou "_last"

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

 

Posté(e)

Salut,

 

Plusieurs petites choses :

 

(setq Pol (entlast Ent)) -> erreur: nombre d'arguments trop important

entlast 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 uniquement

soit :

(command "_pedit" Pol "_width" 0.60 "") ; toutes versions

Note 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 accrochage

CMDECHO 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

Posté(e)

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)

)

 

Posté(e)

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

Posté(e)

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

]

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité