Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

J'ai trouvé un lisp sympa qui permet de creer des hachures solides et séparées sans passer par la boite de dialogue autocad.

 

Je l'ai transformé un chouilla (malgré le peu de connaissances que j'ai en programmation LISP) mais par défaut dans autocad, la variable HPASSOC est à 0, donc je voudrais qu'au début du lisp elle se mette à 1 pour que les hachures soient associatives quelque soit l'ordi sur lequel je vais utiliser le programme. J'ai bien essayé de rajouter une ligne mais ça n'a rien fait...

 

Autre problème : dans le lisp originale les hachures étaient en arrière plan et je voulais pouvoir choisir entre "arrière plan" et "en dessous de l'objet".

 

Je suis parvenue à lui faire demander l'ordre de tracé mais lorsque je lui demande de mettre les hachures "en dessous de l'objet", il me dit :

 

*Sélection non valable*

Attend un point ou

Fenêtre/Dernier/Capture/BOîte/TOUT/Trajet/SPolygone/CPolygone/Groupe/Ajoute r/Sup

primer/Multiple/Précédent/annUler/AUto/uniQue

Fonction annulée

 

Pourtant il me fait quand même les hachures, et quand je lui demande en "arrière plan" tout va bien...je ne comprends pas !

 

 

Voici le programme :

 

[surligneur]

(defun c:mh (/ cmdecho ss i ss1 ot rep)

(setq cmdecho (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(command "_.UNDO" "_Group")

(setq

ss (ssget

'((-4 . " (-4 . " (0 . "POLYLINE")

(-4 . " (-4 . "&")

(70 . 1)

(-4 . "<")

(70 . 16)

(-4 . "AND>")

(-4 . "AND>")

(-4 . " (0 . "LWPOLYLINE")

(-4 . " (-4 . "&")

(70 . 1)

(-4 . "AND>")

(-4 . "AND>")

(-4 . " (0 . "MLINE")

(-4 . " (-4 . "=")

(71 . 3)

(-4 . "AND>")

(-4 . "AND>")

(-4 . " (0 . "CIRCLE")

(-4 . "AND>")

(-4 . " (0 . "3DFACE")

(-4 . "AND>")

(-4 . " (0 . "ELLIPSE")

(-4 . " (-4 . "=")

(41 . 0)

(-4 . "=")

(42 . 6.283185307179586)

(-4 . "AND>")

(-4 . "AND>")

(-4 . " (0 . "SPLINE")

(-4 . " (-4 . "&")

(70 . 1)

(-4 . "AND>")

(-4 . "AND>")

(-4 . " (0 . "REGION")

(-4 . "AND>")

(-4 . "OR>")

)

)

i -1

ss1 (ssadd)

)

 

(initget 1 "a s")

(setq rep

(getkword

"\nOrdre de tracé : Arrière plan (A) ou Sous le contour (S): "

)

)

 

(if (= rep "s")

(progn (setq ot "dessous"))

(progn (setq ot "arriere"))

 

)

 

(repeat (sslength ss)

(command "_.-bhatch"

"_properties"

"_solid"

"_select"

(ssname ss (setq i (1+ i)))

""

""

)

(ssadd (entlast) ss1)

)

 

(command "_.draworder" ss1 "" ot)

(command "_.UNDO" "_End")

(setvar "CMDECHO" cmdecho)

(princ)

)[/surligneur]

 

 

Bon, entre temps je me suis souvenue que, maintenant, dans la boite de dialogue des hachures, autocad propose justement l'ordre de tracer.

Peut-être qu'il est inutile alors de passer par la commande draworder dans le lisp mais je suis bloquée là aussi

 

Help !

 

Merci d'avance

Posté(e)

Salut,

je voudrais qu'au début du lisp elle se mette à 1

au début

(setq var_HPASSOC (getvar "HPASSOC"))

(setvar "HPASSOC" 1)

....

à la fin

(setvar "HPASSOC" var_HPASSOC)

 

lorsque je lui demande de mettre les hachures "en dessous de l'objet", il me dit : (...)

la commande "_.draworder", après avoir signaler que objet tu veux traiter, te demandes de "Sélectionnez les objets de référence:" apès l'option "dessu" .... ce que tu ne fais pas....

je choisirais, au lieu des options dessus/dessous Avant ou Arrière ....

 

(en fait tu as déjà choisis arrière, donc change le choix des variables par :

(if (= rep "s")

(setq ot "avant")

(setq ot "arriere")

)

(tu n'as pas besoin de "prog" quand tu réalises qu'une action après le if)

 

[Edité le 20/3/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Salut

 

Par contre je n'ai pas compris pourquoi il faut mettre la ligne (setvar "HPASSOC" var_HPASSOC) à la fin du lisp...

 

Tout simplement, tout programme propre doit être propre jusqu'au bout ....

On mémorise la variable, on la modifie, puis on la remet comme elle était !!!

Simple !

 

De plus , rajoute :

 

(defun c:mh (/  [surligneur] var_HPASSOC[/surligneur]  cmdecho ss i ss1 ot rep)
(setq cmdecho (getvar "CMDECHO"))
(...
 

 

A+

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é