Aller au contenu

Messages recommandés

Posté(e)

bonjour à tous, chui nouvelle sur ce site. je viens de débuter dans la programmation en lisp.En ce moment je suis en train de créer un programme permettant la répartition automatique de luminaires dans un local. cependant j'ai quelques petits soucis d'éxécution:

- j'ai créé des blocs de luminaires afin de pouvoir les choisir dans le listing de luminaire quise trouve dans la boite de dialogue.si je met des attributs aux blocs, quand je lance le programme il me fais un bug au niveau de l'insertion du luminaire.(vous ne pourrez pas les sélectionner car je ne vous ai pas remis les *.dwg, cependant si vous voulez m'aider je peut vous les faire parvenir par mail ou sinon vous ppouvez en créer un, le rajouter au listing et l'essayer!!). si je ne met pas d'attributs, le prog fonctionne!

- je dois créer des "boutons radios" pour choisir l'unité des luminaires (cm, mm ou m). pouvez vous me dire comme programmer ces "boutons radios dans le lisp".

ceux qui veulent, peuvent récupérer mon prog pour l'améliorer!!!

je vous remercie d'avance pour votre aide... ;)

mon adresse imel: iutgaelle@hotmail.com

 

 

FICHIER LSP

 

(defun c:lum ()

 

(setq listblocs (list "4x18W-encastré" "2x36W-encastré" "2x58W-encastré"

"4x18W-saillie" "2x36W-saillie" "2x58W-saillie"

"2x36W-étanche" "2x58W-étanche"

"2x26W-downlight" "2x9W-hublot"))

 

(setq flag 4)

(setq nom0 "")

 

(setq dcl_id (load_dialog "lumok.dcl"))

 

(while (> flag 2)

 

(if (not (new_dialog "diaglumok" dcl_id))

(exit)

)

 

(set_tile "eb3" nom0)

 

(start_list "lumi") ;start the list box

(mapcar 'add_list listblocs) ;fill the list box

(end_list)

 

(action_tile "eb1" "(setq nbl $value)")

(action_tile "eb2" "(setq nbh $value)")

(action_tile "eb3" "(setq nom0 $value)")

(action_tile "hide" "(done_dialog 4)")

 

(action_tile "lumi" "(setq nombloc (nth (fix (atof (get_tile \"lumi\"))) listblocs))")

 

(setq flag (start_dialog))

(if (= flag 4) (pickblck))

 

);;FIN WHILE

 

(unload_dialog dcl_id)

(setq nbl (atoi nbl)

nbh (atoi nbh)

)

(lum1 nom0)

 

);;FIN DU PROGRAMME PRINCIPAL

 

;**********************************

(defun pickblck ()

 

(setq ent01 (entsel "Choisir un block existant")

ent02 (car ent01)

nom0 (cdr (assoc 2 (entget ent02)))

)

);;defun

;******************

(defun lum1 (nom0);;;;/ dl dh nbl nbh dl0 dh0 mes)

 

(setq echx 1

echy 1)

 

(setq pt0 (getpoint "\n Angle bas gauche de la piece : "))

 

(setq l0 (getdist pt0 "\n Largeur de la piece (ou distance) en X : "))

 

(setq h0 (getdist pt0 "\n Longueur de la piece (ou distance) en Y : "))

;;(setq nbl (getint "\n Nombre d'appareils dans la largeur (hor) :"))

;;(setq nbh (getint "\n Nombre d'appareils dans la longueur (vert) :"))

;;(setq echx (getvar "userr1"))

 

(if (= 1 nbh nbl) (progn (prompt "\nimpossible sur un seul app") (lum1 nombloc)) )

 

(cond ((= nbl 1)

(progn (setq dh (/ h0 nbh)

dh0 (/ dh 2))

(setq pt1 (list (+ (car pt0) (/ l0 2)) (+ (car (cdr pt0)) dh0) 0 ))

(command "inserer" nombloc pt1 echx echy pause

"reseau" "d" "" "r" nbh nbl dh))

);;fin du progn

((= nbh 1)

(progn (setq dl (/ l0 nbl)

dl0 (/ dl 2))

(setq pt1 (list (+ (car pt0) dl0) (+ (car (cdr pt0)) (/ h0 2)) 0 ))

(command "inserer" nombloc pt1 echx echy pause

"reseau" "d" "" "r" nbh nbl dl))

);;fin du progn

(T

(progn (setq dl (/ l0 nbl)

dh (/ h0 nbh)

dl0 (/ dl 2)

dh0 (/ dh 2))

(setq pt1 (list (+ (car pt0) dl0) (+ (car (cdr pt0)) dh0) 0 ))

(command "inserer" nombloc pt1 echx echy pause

"reseau" "d" "" "r" nbh nbl dh dl))

);;fin du progn

);;fin du cond

(grtext)

)

 

FICHIER DCL

 

diaglum : dialog {label= "&IMPLANTATION DE LUMINAIRES";

 

:boxed_column {

label = "selection du luminaire";

 

: edit_box {

key = "eb3";

label = "Nom du Luminaire";

width = 20;

fixed_width = true;

}

 

: button {

label = "Choisir sur le dessin <";

key = "hide";

width = 12;

fixed_width = true;

}

 

}//fin column

 

:boxed_column {

label = "Nombre de luminaires";

 

: edit_box {

key = "eb1";

label = "Nbres sur X";

width = 8;

fixed_width = true;

}

 

: edit_box {

key = "eb2";

label = "Nbres sur Y";

width = 8;

fixed_width = true;

}

}

 

: list_box{

label="> Listining luminaire";

key="lumi";

value="2";

height=6;

fixed_height=true;

width=30;

fixed_width=true;

}

 

: image {

width=20;

height=3;

fixed_height=true;

fixed_width=true;

color=7;key="limage";

}

 

spacer;

 

ok_cancel;

 

}

}//FIN DIALOG

 

Posté(e)

Bonjour la petite nouvelle,

 

Tout d'abord il aurait été bien de ne poster ton message que dans un SEUL forum (tu n'auras pas plus de réponses)

Vu que tu débarque sur le site, tu es excusée (Mais il t'es possible, et à toi seul, de supprimer tes autres messages voir l'utilisation du site CadXP)

 

J'ai essayer ton prog, et ma foi je n'ai pas rencontré de problème sur les attributs (je n'en ai fait qu'un seul). Tu devrais peut être regarder les variable ATTMODE et ATTDIA (voir l'aide) et les surveiller dans ton prog.

 

J'ai du changer

(if (not (new_dialog "diaglumok" dcl_id))

en

(if (not (new_dialog "diaglum" dcl_id))

pour un chargement correct du DCL et supprimé la dernière paranthèse fermante dans le DCL.

 

Voilà pour un test rapide .

 

Au sujet des unités, voici un exemple de ce que tu pourrais faire:

dans le lsp

(setq show_unit 1000.0)

......

(cond

((= show_unit 1.0) (set_tile "b_mm" "1") (mode_tile "b_mm" 2))

((= show_unit 10.0) (set_tile "b_cm" "1") (mode_tile "b_cm" 2))

((= show_unit 1000.0) (set_tile "b_m" "1") (mode_tile "b_m" 2))

((= show_unit 1000000.0) (set_tile "b_km" "1") (mode_tile "b_km" 2))

)

.......

(action_tile "b_mm" "(setq show_unit 1.0)")

(action_tile "b_cm" "(setq show_unit 10.0)")

(action_tile "b_m" "(setq show_unit 1000.0)")

(action_tile "b_km" "(setq show_unit 1000000.0)")

.......

 

dans le dcl

..........

:boxed_row {

label = "Choix Unité utilisée dans l'espace Objet";

:radio_button {

label = "mm";

key = "b_mm";

}

:radio_button {

label = "cm";

key = "b_cm";

}

:radio_button {

label = "m ";

key = "b_m";

}

:radio_button {

label = "km";

key = "b_km";

}

}

........

 

Bonne continuation

;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

merci de m'avoir répondu...

mais moi le bug intervient au moment au il faut faire le réseau.

kan je crée un luminaire, je met le nbre d'attributs voulus ensuite je fais un wbloc. ce fichier dwg je le met dans le même dossier que le lsp et le dcl. je suppose donc que ma procédure est bonne.

Posté(e)

Dans mes essais tout ce passe bien.

Le réseaux est effectué et les attributs renseignés.

 

Il est vrai que l'attribut renseigné n'est valable que pour l'ensemble du réseaux, on ne peut pas définir des attributs différents. C'est cela qui te pose problème?

 

NB: Je suppose que tout tes fichiers (lsp, dcl et dwg) sont soit dans le dossier courant, soit dans un dossier de recherche d'autocad.

 

En résumé, je vois pas ce qui te pose problème sans plus d'info!

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut, Bienvenue sur Cadxp

J'ai du corriger deux erreurs sur ton dcl, mais bon ;)

Pour insérer un bloc sans tenir compte de ses attributs, tu redéfinis la variable attreq à 0

Dans le lisp, je constate que tu te sers des commandes en français. Pense à nos amis outre atlantique, ou à ceux qui n'ont pas une version française, donc un (command "_.insert" blabla blabla ... ...)

J'ai vu que tu demande l'angle (avec le pause) alors qu'auparavant tu as une boite de dialogue. Pourquoi ne pas tout intégrer dans ta boite de départ ?

Ensuite tu demandes un coin bas puis une largeur et une longueur. Pour simplifier, tu peux faire une saisie en deux (getcorner) ou trois points (getpoint), si ton local est en ortho ou pas

Et pour compliquer le tout, songe qu'une implantation peut se faire en carré ou en quinconce

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

merci beaucoup patrick, effectivement c'est bien cette variable qu'il fallait mettre a 0. toi et bonuscad m'avaient rendus un grand service ...Je vais essayer de l'améliorer en rajoutant un aperçu image des bloc sélectionnés dans le listing ... ;)

merci, aussi pour tes conseils

 

gaelle

 

 

[Edité le 1/6/2005 par gaelle]

  • 10 ans après...
Posté(e)

bonsoir Mr

je suis très intéressant de votre programme pour me facilité mon dessin d'implantation des luminaire le travail dans une petite boite BET et je fait tous dessin des plan Electrique et même fluides pour mon patron et j'ai perde beaucoup du Temp a cause d’implantation des luminaire ci vous voulez m'aider je te remercie infiniment et si non vous tous le droit de le refuser et merci pour tous

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é