Aller au contenu

Ventilation de surfaces


Messages recommandés

Posté(e)

Bonjour,

 

Je suis bloqué pour la répétition de la commande en cas de mauvais sélection. J'ai essayé de réutiliser le code fournis précédemment par didier mais cela ne fonctionne pas entièrement.

 

Le code actuel :

 

(defun c:MSPk (/ option base coeff)
 (setq base (vlax-ldata-get "MSPK" "Base" 11.5))
 (setq coeff (vlax-ldata-get "MSPK" "Coeff" 0.35))
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (initget "Paramètres Continuer")
 (setq option
   (getkword
     (strcat
       "\nOptions [Paramètres/Continuer] Données actuelles : " (rtos base) " | " (rtos coeff) " <Continuer> : "
     ) ;_ Fin de strcat
   ) ;_ Fin de getkword
 ) ;_ Fin de setq
 (if (= option "Paramètres")
   (setq base (getreal "\nChoisissez la base <11.5> (par défaut) : ") coeff (getreal "\nChoisissez le coefficient <0.35> (par défaut) : "))

 )
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (vlax-ldata-put "MSPK" "Base" base)
 (vlax-ldata-put "MSPK" "Coeff" coeff)
 (while
(while (not (setq poly (car (entsel "\nChoix de la polyligne\n")))))
 (redraw poly 3)
   (setq polyvla (vlax-ename->vla-object poly))
   (setq surf (vlax-get-property polyvla 'area))
   (setq dec 1)
   (cond
     ((< surf base) (setq surf1 surf surf2 0.0))
     ((> surf base) (setq surf1 base surf2 (- surf surf1)))
     ((/= coeff 0.35)(setq surf1 base surf2 (- surf surf1)))
   )

   (setq pins (getpoint"\nPoint d'insertion du bloc ?\n"))
   (command "_insert" "SurfPk" pins "1" "" ""  (rtos surf1 2 dec) (rtos coeff 2 2) (rtos surf2 2 dec))
 )
 (princ)
) ;_ Fin de defun

 

Quand je dois sélectionner la polyligne et que je clique sur un endroit vide, il continue de me demander une polyligne, niquel.

Par contre quand je sélectionne une polyligne il se passe rien après.

 

J'ai essayé de mettre un "princ 'test'" après la boucle de sélection, mais rien n'apparaît dans les logs.

 

Question bonus, c'est possible de continuer à demander une polyligne même si un autre objet est sélectionné ? (hachure, block...)

 

Merci pour votre aide.

  • Réponses 82
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Posté(e)

Merci pour ta réponse.

 

Si j'enlève le (not, il n'arrête plus la fonction si je sélectionne autre chose qu'une polyligne. Cependant quand j'en choisi une, il continue à demander une polyligne.

 

 (while
(while (setq poly (car (entsel "\nChoix de la polyligne\n"))))
   (setq polyvla (vlax-ename->vla-object poly))
   (setq surf (vlax-get-property polyvla 'area))

   (setq dec 1)
   (cond
     ((< surf base) (setq surf1 surf surf2 0.0))
     ((> surf base) (setq surf1 base surf2 (- surf surf1)))
     ((/= coeff 0.35)(setq surf1 base surf2 (- surf surf1)))
   )

   (setq pins (getpoint"\nPoint d'insertion du bloc ?\n"))
   (command "_insert" "SurfPk" pins "1" "" ""  (rtos surf1 2 dec) (rtos coeff 2 2) (rtos surf2 2 dec))
 )

Posté(e)

Salut

 

Je te remercie pour ton aide et pas de problème pour la première version !

 

Alors pour ce code :

 


  •  
  • quand je clique sur autre chose qu'une polyligne, il continue à me demander une polyligne donc niquel.
     
  • quand je clique sur rien (souvent des espaces vides autour des places de parking), il met "type d'argument incorrect lentityp nil", est-ce possible de là encore boucler sur la demande de polyligne ?
     
  • quand je clique sur une polyligne, la fonction s'arrête et ne propose pas d'insérer le block ou de sélectionner une autre polyligne.

 

Pour info, le code actuel :

 

(defun c:MSPk (/ option base coeff)
 (setq base (vlax-ldata-get "MSPK" "Base" 11.5))
 (setq coeff (vlax-ldata-get "MSPK" "Coeff" 0.35))
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (initget "Paramètres Continuer")
 (setq option
   (getkword
     (strcat
       "\nOptions [Paramètres/Continuer] Données actuelles : " (rtos base) " | " (rtos coeff) " <Continuer> : "
     ) ;_ Fin de strcat
   ) ;_ Fin de getkword
 ) ;_ Fin de setq
 (if (= option "Paramètres")
   (setq base (getreal "\nChoisissez la base <11.5> (par défaut) : ") coeff (getreal "\nChoisissez le coefficient <0.35> (par défaut) : "))

 )
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (vlax-ldata-put "MSPK" "Base" base)
 (vlax-ldata-put "MSPK" "Coeff" coeff)
 (while
   (while (/= "LWPOLYLINE"
                  (cdr
                        (assoc 0
                          (entget
                                (setq poly (car (entsel "\nChoix de la polyligne\n")))
                                )
                          )
                        )
                  )
 )
   (setq polyvla (vlax-ename->vla-object poly))
   (setq surf (vlax-get-property polyvla 'area))

   (setq dec 1)
   (cond
     ((< surf base) (setq surf1 surf surf2 0.0))
     ((> surf base) (setq surf1 base surf2 (- surf surf1)))
     ((/= coeff 0.35)(setq surf1 base surf2 (- surf surf1)))
   )

   (setq pins (getpoint"\nPoint d'insertion du bloc ?\n"))
   (command "_insert" "SurfPk" pins "1" "" ""  (rtos surf1 2 dec) (rtos coeff 2 2) (rtos surf2 2 dec))
 )
 (princ)
) ;_ Fin de defun

Posté(e)

Bonjour,

 

ci-joint le code modifié

 


(defun c:MSPk (/ option base coeff)
 (setq base (vlax-ldata-get "MSPK" "Base" 11.5))
 (setq coeff (vlax-ldata-get "MSPK" "Coeff" 0.35))
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (initget "Paramètres Continuer")
 (setq option
   (getkword
     (strcat
       "\nOptions [Paramètres/Continuer] Données actuelles : " (rtos base) " | " (rtos coeff) " <Continuer> : "
     ) ;_ Fin de strcat
   ) ;_ Fin de getkword
 ) ;_ Fin de setq
 (if (= option "Paramètres")
   (setq base (getreal "\nChoisissez la base <11.5> (par défaut) : ") coeff (getreal "\nChoisissez le coefficient <0.35> (par défaut) : "))

 )
 (if (= base nil) (setq base 11.5))
 (if (= coeff nil) (setq coeff 0.35))
 (vlax-ldata-put "MSPK" "Base" base)
 (vlax-ldata-put "MSPK" "Coeff" coeff)
 (while T
   (if (and (setq poly (car (entsel "\nChoix de la polyligne\n")))
        (= "LWPOLYLINE" (cdr (assoc 0 (entget poly))))
       )
     (progn
   	(setq polyvla (vlax-ename->vla-object poly))
   	(setq surf (vlax-get-property polyvla 'area))

   	(setq dec 1)
   	(cond
         ((< surf base) (setq surf1 surf surf2 0.0))
         ((> surf base) (setq surf1 base surf2 (- surf surf1)))
         ((/= coeff 0.35)(setq surf1 base surf2 (- surf surf1)))
       )

   	(setq pins (getpoint"\nPoint d'insertion du bloc ?\n"))
(setq oldATTDIA (getvar "ATTDIA"))
(setvar "ATTDIA" 0)
(setq oldATTREQ (getvar "ATTREQ"))
(setvar "ATTREQ" 1)
   	(command "_insert" "SurfPk" pins "1" "" ""  (rtos surf1 2 dec) (rtos coeff 2 2) (rtos surf2 2 dec))
(setvar "ATTDIA" oldATTDIA)
(setvar "ATTREQ" oldATTREQ)
     )
   )
 )
 (princ)
) ;_ Fin de defun

 

 

Olivier

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é