-=micka=- Posté(e) le 13 septembre 2011 Posté(e) le 13 septembre 2011 Bonjour,j'aurais besoin d'aide sur un sujet assez urgent, en effet mon lisp doit être opérationnel tés vite. désolé de vous presser!! voila mon soucis, j'ai créé une boite de dialogue avec des listes déroulantes qui gèrent le nombre de blocs qui s’insèrent. Sauf que j'ai une autre liste déroulante qui gère l'alignement de ces blocs entre deux point.Les trois alignement sont: à gauche, au milieu et à droite.l'alignement à gauche marche parfaitement, mais au milieu et a gauche cela ne marche pas.Je pense que le soucis se passe au niveau du point d'insertion qui ne change pas, enfin tant que le nombre des bloc est inférieur à 3, après ça marche bien. d'où mon incompréhension!!! si vous avez des idées??!! (defun inserer1 () ; insère les banches (setq largeur2m nbre_larg2m largeur1m nbre_larg1m largeur05m nbre_larg05m ) ;changement de variable pour le nombre de banche (if (= prescence 1) (command "_.undo" "_back" "o") ) ; test pour le retour en arrière (if (and (> flag 1) (/= qlface nil)) (command "_.undo" "_mark") ) ; pose une "marque" (setq pInsertion (list (car p0mur) (cadr p0mur) (caddr p0mur))) ; changement de variable pour le point d'insertion (setq pMilieu (list (- (car p0mur) (* (sin (- anglemur (* pi 0.5))) (* longmur 0.5)) ) (+ (cadr p0mur) (* (cos (- anglemur (* pi 0.5))) (* longmur 0.5)) ) (caddr p0mur) ) ) (setq pMilieu+90 (list (- (car pMilieu) (* (sin anglemur) (* longmur 0.5)) ) (+ (cadr pMilieu) (* (cos anglemur) (* longmur 0.5)) ) (caddr pMilieu) ) ) (if (= qlalign "Milieu") (setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) (* restemur 0.5)) ) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) (* restemur 0.5)) ) (caddr pInsertion) ) ) ) (setq 1/2largeur05m (round (* largeur05m 0.5) 1)) ; divise le nombre de banches par deux et transforme en entier SUPERIEUR (while ; boucle pour insérer les banches (> 1/2largeur05m 0) ; les banches de 0.5m (progn (command "_.insert" "largeur_0_5m" pInsertion 1 1 (- (/ (* anglemur 180) pi) 90) ) ; insère les banches de 0.5m [b](setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) 0.5)) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) 0.5) ) (caddr pInsertion) ) )[/b] ; déplace le point d'insertion pour les prochaines banches (setq 1/2largeur05m (- 1/2largeur05m 1)) ; enlève une unité de sous-hausse (if (= qlalign "Droite") (command "_.mirror" "d" "" pMilieu+90 pMilieu "o") ) ; effectue un miroir si l'alignement est à droite (if (= qlface "ghe") (command "_.mirror" "d" "" p0mur p1mur "o") ) ; effectue un mirroir si la face mesurée est celle de gauche (if (= nbre_face 2) (command "_.mirror" "d" "" p0axe p1axe "n") ) ; effectue un miroir si il y a 2 faces à coffrer ) ) (setq 1/2largeur1m (round (* largeur1m 0.5) 1)) ; divise le nombre de banches par deux et transforme en entier SUPERIEUR (while (> 1/2largeur1m 0) ; les banches de 1m (progn (command "_.insert" "largeur_1m" pInsertion 1 1 (- (/ (* anglemur 180) pi) 90) ) ; insère les banches de 1m (setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) 1)) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) 1) ) (caddr pInsertion) ) ) ; déplace le point d'insertion pour les prochaines banches (setq 1/2largeur1m (- 1/2largeur1m 1)) ; enlève une unité de banche (if (= qlalign "Droite") (command "_.mirror" "d" "" pMilieu+90 pMilieu "o") ) ; effectue un miroir si l'alignement est à droite (if (= qlface "ghe") (command "_.mirror" "d" "" p0mur p1mur "o") ) ; effectue un mirroir si la face mesurée est celle de gauche (if (= nbre_face 2) (command "_.mirror" "d" "" p0axe p1axe "n") ) ) ; effectue un miroir si il y a 2 faces à coffrer ) (while (> largeur2m 0) ; les banches de 2m (progn (command "_.insert" "largeur_2m" pInsertion 1 1 (- (/ (* anglemur 180) pi) 90) ) ; insère les banches de 2m [b] (setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) 2) ) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) 2) ) (caddr pInsertion) ) )[/b] ; déplace le point d'insertion pour les prochaines banches (setq largeur2m (- largeur2m 1)) ; enlève une unité de banche (if (= qlalign "Droite") (command "_.mirror" "d" "" pMilieu+90 pMilieu "o") ) ; effectue un miroir si l'alignement est à droite (if (= qlface "ghe") (command "_.mirror" "d" "" p0mur p1mur "o") ) ; effectue un mirroir si la face mesurée est celle de gauche (if (= nbre_face 2) (command "_.mirror" "d" "" p0axe p1axe "n") ) ) ; effectue un miroir SUIVANT AXE X si il y a 2 faces à coffrer ) (setq 2/2largeur1m (fix (* largeur1m 0.5))) ; divise le nombre de banches par deux et transforme en entier INFERIEUR (while (> 2/2largeur1m 0) ; les banches de 1m (progn (command "_.insert" "largeur_1m" pInsertion 1 1 (- (/ (* anglemur 180) pi) 90) ) ; insère les banches de 1m [b](setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) 1)) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) 1) ) (caddr pInsertion) )[/b] ) ; déplace le point d'insertion pour les prochaines banches (setq 2/2largeur1m (- 2/2largeur1m 1)) ; enlève une unité de banche (if (= qlalign "Droite") (command "_.mirror" "d" "" pMilieu+90 pMilieu "o") ) ; effectue un miroir si l'alignement est à droite (if (= qlface "ghe") (command "_.mirror" "d" "" p0mur p1mur "o") ) ; effectue un mirroir si la face mesurée est celle de gauche (if (= nbre_face 2) (command "_.mirror" "d" "" p0axe p1axe "n") ) ) ; effectue un miroir si il y a 2 faces à coffrer ) (setq 2/2largeur05m (fix (* largeur05m 0.5))) ; divise le nombre de banches par deux et transforme en entier INFERIEUR (while ; boucle pour insérer les banches (> 2/2largeur05m 0) ; les banches de 0.5m (progn (command "_.insert" "largeur_0_5m" pInsertion 1 1 (- (/ (* anglemur 180) pi) 90) ) ; insère les banches de 0.5m [b] (setq pInsertion (list (- (car pInsertion) (* (sin (- anglemur (* pi 0.5))) 0.5)) (+ (cadr pInsertion) (* (cos (- anglemur (* pi 0.5))) 0.5) ) (caddr pInsertion) )[/b] ) ; déplace le point d'insertion pour les prochaines banches (setq 2/2largeur05m (- 2/2largeur05m 1)) ; enlève une unité de sous-hausse (if (= qlalign "Droite") (command "_.mirror" "d" "" pMilieu+90 pMilieu "o") ) ; effectue un miroir si l'alignement est à droite (if (= qlface "ghe") (command "_.mirror" "d" "" p0mur p1mur "o") ) ; effectue un mirroir si la face mesurée est celle de gauche (if (= nbre_face 2) (command "_.mirror" "d" "" p0axe p1axe "n") ) ; effectue un miroir si il y a 2 faces à coffrer ) ) (if (and (> flag 1) (/= qlface nil)) (setq prescence 1) ) (command "regen" "") ) le soucis ce trouve au niveau des ligne en gras (je crois), car comme je l'ai dit plus haut mes blocs s'insèrent au même point d'insertion dans certain cas, mais je comprends pas car le point d'insertion est changé à chaque insertion de bloc. est ce que juste en regardant ce bout du programme, vous pouvez m'aider? si il faut les blocs, ou le lisp et le dcl demandez car actuellement je n'arrive pas à mettre les fichiers en PJ. merci pour votre aide, si vous avez des questions n'hésitez pas!!!
bryce Posté(e) le 14 septembre 2011 Posté(e) le 14 septembre 2011 Bonjour, Je n'ai pas regardé dans le détail, mais as-tu pensé à désactiver les accrochages aux objets lors de l'insertion des blocs ? 1 Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
-=micka=- Posté(e) le 14 septembre 2011 Auteur Posté(e) le 14 septembre 2011 (modifié) Bonjour, Je n'ai pas regardé dans le détail, mais as-tu pensé à désactiver les accrochages aux objets lors de l'insertion des blocs ? rectification!!!tu avais raison!! c'est ce p***n d'accrochage aux objets qui me merdait mon programme, je savais que c'était un truc à la noix qui me plantait!!!MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI :P Je te dois une fière chandelle Bryce!!a+bonne soirée Modifié le 14 septembre 2011 par -=micka=-
-=micka=- Posté(e) le 15 septembre 2011 Auteur Posté(e) le 15 septembre 2011 Bonjour,j'aurais une nouvelle question à vous poser, car j'ai un petit soucis: j'ai créé un lisp, qui fait la nomenclature de blocs dans mon dessin, en renseignant les attribut d'un bloc au moment de son insertion.Dans le lisp:je sélectione mes blocs avec des jeux de selection, le lisp fait quelques calculs pour savoir le bon nombre de blocs, et je mets ces nombres dans des varibles, qui lors de l'insertion du bloc de la nomenclature viennent remplir les champs des attributs. Le soucis c'est que sur mon pc portable tout va bien le tableau se remplit et au boulot le tableau reste vide, je me demande si cela ne dépendrait pas d'une variable système que mon lisp ne gère pas!!? au cas où je met le code de l'insertion du bloc, y'a peut etre une erreur:(command "_.insert" "Tableau commande" p0tableau 10 10 0 "" "" "" "" "" "" "" "" "" "" "" nb_3*2 nb_3*1 nb_3*05 nb_2*2 nb_2*1 nb_2*05 nb_1*2 nb_1*1 nb_1*05 nb_05*2 nb_05*1 nb_05*05 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ) nb3*1, nb3*1, .... sont mes variables qui contiennent le nombre de mes blocs j'ai mis des point d'arret avec des espions, tout ce déroule normalement mais dans autocad, les champs restent vide merci pour votre aide
Tramber Posté(e) le 15 septembre 2011 Posté(e) le 15 septembre 2011 tout ce déroule normalement mais dans autocad Alors c'est qu'il y a bien demande des valeurs d'attributs sinon ton COMMAND planterait.PEut-être ATTECRAN.... mais nb3*1 est bien sous forme de string ? car c'est probablement necessaire. Sinon, c'est que j'ai pas compris :blink: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
-=micka=- Posté(e) le 15 septembre 2011 Auteur Posté(e) le 15 septembre 2011 Alors c'est qu'il y a bien demande des valeurs d'attributs sinon ton COMMAND planterait.PEut-être ATTECRAN.... mais nb3*1 est bien sous forme de string ? car c'est probablement necessaire. Sinon, c'est que j'ai pas compris :blink: merci tramber pour ta, reponse,je regarderai demain au boulo si c'est ça! sinon oui les valeurs des variables sont des string :D bonne soirée, PS: si d'autres ont des idées je suis à l'écoute merci
-=micka=- Posté(e) le 16 septembre 2011 Auteur Posté(e) le 16 septembre 2011 Bonjour,bon j'ai fait le test mais c'est pas la variable "ATTECRAN" qui fait que les attributs ne se remplissent pas seulement sur mon poste au boulo. :( help!!
bonuscad Posté(e) le 16 septembre 2011 Posté(e) le 16 septembre 2011 Vérifier la valeur de la variable ATTREQ.Suivant sa valeur, les attributs par défaut sont appliqués sans aucune demande. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
-=micka=- Posté(e) le 16 septembre 2011 Auteur Posté(e) le 16 septembre 2011 Vérifier la valeur de la variable ATTREQ.Suivant sa valeur, les attributs par défaut sont appliqués sans aucune demande. Merci bonuscad!!c'était ça le soucis, la valeur était à 0.Bonne journée :P
didier Posté(e) le 16 septembre 2011 Posté(e) le 16 septembre 2011 coucou encore une preuve que quand on se "lance" dans la programmationil faut "maitriser" le logiciel. ne prends pas mal ce que je dis, mais il est tellement répandu de voir des gens se "lancer" dans le lisp sans avoir des fondations solides qu'il faut bien formuler des truismes. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
-=micka=- Posté(e) le 16 septembre 2011 Auteur Posté(e) le 16 septembre 2011 coucou encore une preuve que quand on se "lance" dans la programmationil faut "maitriser" le logiciel. ne prends pas mal ce que je dis, mais il est tellement répandu de voir des gens se "lancer" dans le lisp sans avoir des fondations solides qu'il faut bien formuler des truismes. amicalement salut, didier je ne le prends pas mal, mais sache que parfois certain n'ont pas le choix de se "lancer" dans la programmation (je parle pour moi entre autre) quand on a des cours assez sommaire dessus, et qu'après on nous dit de créer un programme,il faut se jeter a l'eau et se "lancer" alors on fouille sur internet, sur l'aide d'autocad, mais parfois on est obligé de demander ... la preuve. cordialement micka ;)
didier Posté(e) le 16 septembre 2011 Posté(e) le 16 septembre 2011 Coucou quand on a des cours assez sommairedes cours de quoi ?ne me dis pas que t'es à l'école,si quelqu'un est capable de penser que donner des programmes à faire à des étudiants puisse leur être utile, on marche sur la tête. :o dans le même esprit, il faudrait donner des cours de cuisineà ceux qui fabriquent des casserolesdes cours de pilotage aux stewardsil y a TELLEMENT de choses à voir avant et qui sont négligées. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
-=micka=- Posté(e) le 16 septembre 2011 Auteur Posté(e) le 16 septembre 2011 des cours de quoi ?ne me dis pas que t'es à l'école, si si en alternance donc c'est moitié moitié, si quelqu'un est capable de penser que donner des programmes à faire à des étudiants puisse leur être utile, on marche sur la tête. :o ben y'en a qui le pense, même si une fois la formation finie on ne touchera certainement plus jamais à la programmation pour la plupart en fin bref, c'était quand même bien "amusant" même si je me suis bien pris la tête dessus!! amicalement!micka
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