Aller au contenu

urgent soucis insertion


Messages recommandés

Posté(e)

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!!!

Posté(e) (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 :rolleyes:

Je te dois une fière chandelle Bryce!!

a+

bonne soirée

Modifié par -=micka=-
Posté(e)

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

Posté(e)
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

 

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

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

Posté(e)

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

Posté(e)

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

Posté(e)

coucou

 

encore une preuve que quand on se "lance" dans la programmation

il 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

Posté(e)

coucou

 

encore une preuve que quand on se "lance" dans la programmation

il 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 ;)

Posté(e)

Coucou

 

quand on a des cours assez sommaire

des 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 casseroles

des cours de pilotage aux stewards

il y a TELLEMENT de choses à voir avant et qui sont négligées.

 

amicalement

Posté(e)

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

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é