CADxp: Ventilation de surfaces - CADxp

Aller au contenu

  • 5 Pages +
  • « Première
  • 3
  • 4
  • 5
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Ventilation de surfaces

#81 L'utilisateur est hors-ligne   Hydro8 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 168
  • Inscrit(e) : 23-octobre 17

Posté 07 mars 2019 - 11:55

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

0

#82 L'utilisateur est hors-ligne   Olivier Eckmann 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1268
  • Inscrit(e) : 29-décembre 11
  • LocationLongjumeau (91)

Posté 07 mars 2019 - 23:38

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
0

#83 L'utilisateur est hors-ligne   Hydro8 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 168
  • Inscrit(e) : 23-octobre 17

Posté 08 mars 2019 - 08:05

Merci beaucoup cela fonctionne parfaitement ! :D
0

Partager ce sujet :


  • 5 Pages +
  • « Première
  • 3
  • 4
  • 5
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)