CADxp: bug lisp " IMPT" - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

bug lisp " IMPT" pb de dernière page appliqué à présentation

#1 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 20 septembre 2017 - 10:56

Bonjour

Voilà 3 ans maintenant que j'utilise le LISP de BRED qui marchait très bien jusqu'à présent.
Maintenant j'ai un bug, je ne sais pas si c'est autocad qui fait ce beug mais c'est énervant.
Quand j'utilise impt, pendant un temps il fonctionne très bien, puis un beau matin, je veux l'utiliser sur le même fichier que la veil et la ça beug. En fait il me créer que des pages blanche. Alors quand je fait imprimer puis fenêtre pour voir l'aperçu de la dernière page qu'il a appliqué à la présentation, au lieu que ce soit le dernier bloc à imprimer, il me montre un rectangle blanc pommé dans l'espace objet qui a les même dimensions que mon bloc, sauf qu'il y en a pas. Alors si j'utilise impt et que je sélectionne 5 blocs par exemple, il va me créer 5 pages blanche...Bien sur, j'ai déjà essayé de lancer le lisp en désactivant l'accrochage objet.

J'ai trouvé une parade à ça, mais c'est chiant. Je sélectionne tout (ctrl+A), je copie et colle dans un nouveau dessin autocad, je relance impt et là tout fonctionne.

Une idée de ce qu'il se passe?


Merci d'avance et bonne journée
0

#2 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8320
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 20 septembre 2017 - 11:45

Hello

SVP tu nous remets ton Lisp IMPT dans ton message (un simple copier/coller du code) ?

Merci, Bye, lecrabe
Autodesk Expert Elite Team
0

#3 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 20 septembre 2017 - 12:34

ça serai pas une histoire de scu? re passe en SCGénéral pour voir
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#4 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 20 septembre 2017 - 13:21

Voir le messagex_all, le 20 septembre 2017 - 12:34 , dit :

ça serai pas une histoire de scu? re passe en SCGénéral pour voir


j'y ai pensé, je suis déjà en scu général, j'ai même vérifié si ma base été bien à 0,0,0
0

#5 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 20 septembre 2017 - 13:23

Voir le messagelecrabe, le 20 septembre 2017 - 11:45 , dit :

Hello

SVP tu nous remets ton Lisp IMPT dans ton message (un simple copier/coller du code) ?

Merci, Bye, lecrabe


;; imprime tous les cadre/bloc identique d'un page - par BRED -
;; bloc ayant un attribut "folio" = numéro de page
(defun c:impt (/ ACDOC B BACKGROUNDPLOT C I P1 P2 SEL XMIN YMAX PLT lst-att LST LST-F LST-NB Y)
  (vl-load-com)

  (while (not sel)
    (setq sel (car (entsel "\n Choix du cadre (Bloc) :")))

    (if sel
      (if (not (equal (vla-get-ObjectName (setq b (vlax-ename->vla-object sel))) "AcDbBlockReference"))
        (setq sel nil)
      )
    )
  )
  (setq sel            (ssget '((0 . "INSERT")))
        AcDoc          (vla-get-activedocument (vlax-get-acad-object))
        BACKGROUNDPLOT (getvar "BACKGROUNDPLOT")
  )

  (setvar "BACKGROUNDPLOT" 0)

  ;; Récupère Attrib "FOLIO"
  (repeat (setq i (sslength sel))
    (if (equal (vla-get-effectivename (setq c (vlax-ename->vla-object (ssname sel (setq i (1- i))))))
               (vla-get-effectivename B)
        )

      (if (setq lst-att (vlax-safearray->list (vlax-variant-value (vla-GetAttributes c))))
        (repeat (setq y (length lst-att))
          (if (equal (strcase (vla-get-TagString (nth (setq y (1- y)) lst-att))) "FOLIO")
            (setq lst-F  (append (list (cons (atoi (vla-get-TextString (nth y lst-att))) c)) lst-F)
                  lst-nb (append (list (atoi (vla-get-TextString (nth y lst-att)))) lst-nb)
            )
          )
        )
      )
    )
  )

  ;; Tri
  (setq lst-nb (vl-sort lst-nb '<)
        i      0
  )
  (repeat (length lst-nb)
    (setq lst (append lst (list (cdr (assoc (nth i lst-nb) lst-F))))
          i   (1+ i)
    )
  )

  ;; trite liste bloc
  (setq i 0)
  (repeat (length lst)
    (setq c (nth i lst)
          i (1+ i)
    )

    (vla-GetBoundingBox c 'xmin 'ymax)
    (setq p1 (vlax-make-safearray vlax-vbdouble (cons 0 1))
          p2 (vlax-make-safearray vlax-vbdouble (cons 0 1))
    )

    (vlax-make-variant
      (vlax-safearray-fill p1 (list (car (vlax-safearray->list xmin)) (cadr (vlax-safearray->list xmin))))
    )
    (vlax-make-variant
      (vlax-safearray-fill p2 (list (car (vlax-safearray->list ymax)) (cadr (vlax-safearray->list ymax))))
    )

    (if (> (- (car (vlax-safearray->list ymax)) (car (vlax-safearray->list xmin)))
           (- (cadr (vlax-safearray->list ymax)) (cadr (vlax-safearray->list xmin)))
        )
      (vla-put-PlotRotation (vla-get-activelayout AcDoc) ac90degrees)
      (vla-put-PlotRotation (vla-get-activelayout AcDoc) ac0degrees)
    )

    (setq plt (vla-get-plot AcDoc))
    (vla-put-PlotType (vla-get-activelayout AcDoc) acWindow)
    (vla-setwindowtoplot (vla-get-activelayout AcDoc) p1 p2)
    (vla-plottodevice plt (vla-get-configname (vla-get-activelayout AcDoc)))
  )
  (setvar "BACKGROUNDPLOT" BACKGROUNDPLOT)
  (princ)
)

Ce message a été modifié par (gile) - 20 septembre 2017 - 13:44 .
Raison de l'édition : formatage du code (bbcode)

0

#6 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 02 octobre 2017 - 08:05

Bonjour,

Je me permet de relancer ce sujet pour savoir si quelqu'un avait une réponse à apporter à mon problème s'il vous plait...

Merci et bonne journée à tous!
0

#7 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 06 octobre 2017 - 12:19

j'ai chercher à éplucher le lisp, mais je ne suis vraiment pas fort avec les fonctions activeX... au point que j'arrive pas à voir ou sont les lignes qui définissent tous les paramètre d'impression.

Quand on passe par (command "-traceur" ... il faut tout renseigner, l'équivalent dans ton code se résume à :
(vla-setwindowtoplot (vla-get-activelayout AcDoc) p1 p2)

j'ai du mal à comprendre comment P1 et P2 sont défini puis redéfini juste en dessous... mais si ça marchai, c'est peut etre pas là qu'il faut chercher.

juste que (setq plt (vla-get-plot AcDoc)) semble faire référence à une config existante. Si la config de la présentation à un décalage ou une echelle à la noix, peut etre c'est là que ça introduit un problème?


mais bon désolé...


au fait, tu lances ça en espace papier ou objet?
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#8 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 24 octobre 2017 - 16:31

Bonjour, je lance ca en espace objet :)
0

#9 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 25 octobre 2017 - 07:11

ok, si tu fait ça en objet, peut etre que tu garde dans ce dessin les présentation par défaut... donc, ton "activelayout"est pas forcement propre? pas de décalage ou d'échelle à la noix?
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#10 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 25 octobre 2017 - 09:32

Voir le messagex_all, le 25 octobre 2017 - 07:11 , dit :

ok, si tu fait ça en objet, peut etre que tu garde dans ce dessin les présentation par défaut... donc, ton "activelayout"est pas forcement propre? pas de décalage ou d'échelle à la noix?


Salut,

J'ai supprimé toute les présentation par défaut déjà.
C'est quoi ce que tu appelles "décalage ou échelle à la noix" ? :unsure:
0

#11 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 25 octobre 2017 - 10:24

Quand tu imprime avec TRACEUR, dans la fenêtre de dialogue dans le coin en bas à gauche tu as un décalage, et à coté l'échelle.
Dans les présentations par défaut, (sans template customisé) il y a une échelle différente de 1/1.
Je suis pas sur du coup vu ma méconnaissance du VL mais comme il semble récupérer la config depuis ce "activelayout" si elle n'est pas propre ça doit pas être top...

peut etre fait passer le bloc dont tu te sers et je testerai si ça marche ici.
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#12 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 25 octobre 2017 - 16:23

Voir le messagex_all, le 25 octobre 2017 - 10:24 , dit :

Quand tu imprime avec TRACEUR, dans la fenêtre de dialogue dans le coin en bas à gauche tu as un décalage, et à coté l'échelle.
Dans les présentations par défaut, (sans template customisé) il y a une échelle différente de 1/1.
Je suis pas sur du coup vu ma méconnaissance du VL mais comme il semble récupérer la config depuis ce "activelayout" si elle n'est pas propre ça doit pas être top...

peut etre fait passer le bloc dont tu te sers et je testerai si ça marche ici.


Ben le truc, c'est que ça fonctionne un certain temps, puis un beau jour, pouf! ça ne fonctionne plus. Alors la parade que j'ai trouvé c'est de tout copier (ctrl+A) et de tout coller (ctrl+v) dans un nouveau dessin, et là ça fonctionne à nouveau, mais jusqu'à quand?
ce que je vais faire c'est que je t'envois un fichier "echec" et un fichier "réussite".
0

#13 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 26 octobre 2017 - 07:18

Je ne crois pas que ton fichier soit confidentiel, mais je te laisse la responsabilité de le poster en public. car je ne comprend pas du tout le soucis.

j'ai tester tes 2 fichiers et force est de constaté que le problème est le même ici. ce n'est donc pas un soucis propre à ton poste, mais bien un truc qui cloche dans les fichiers. Je rabâche pas, mais j'ai que de très faible notion de VB j'ai tout de même été surpris du comportement du programme.

Quand je regarde tes présentations, elle sont configurées en A4 imprimante aucune, car il me manque "gestetner MP ..." Mais au lancement du lisp, il par sur pdfcreator qui est mon imprimante par défaut... Bon, je ne voie pas ou il l’appelle, mais admettons.
J'ai le même résultats que toi à savoir les 3 feuilles bien et les 3 feuilles blanches pour l'autre fichier.

Sur ton fichier "échec" si je relance la commande imprimer, elle est paramétrée en fenêtre, et quand on appelle le bouton pour redéfinir cette fenêtre, en dézoomant, on peu voir la trace de la fenêtre précédente. Il y a bien un décalage. Mais alors d'ou il vient, je ne saurai le dire... Ce n'est pas le vecteur depuis le 0,0,0.. je sèche.


Image IPB


Il n'y a qu'un defun ça ne devrai pas être un effet de portée de variable pourtant tu dis que si quand on colle tout dans un nouveau dessin ça marche, c'est forcément une variable qui reste coincée ... J'en sais rien quoi... désolé...
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#14 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 26 octobre 2017 - 08:42

Voir le messagex_all, le 26 octobre 2017 - 07:18 , dit :

Je ne crois pas que ton fichier soit confidentiel, mais je te laisse la responsabilité de le poster en public. car je ne comprend pas du tout le soucis.

j'ai tester tes 2 fichiers et force est de constaté que le problème est le même ici. ce n'est donc pas un soucis propre à ton poste, mais bien un truc qui cloche dans les fichiers. Je rabâche pas, mais j'ai que de très faible notion de VB j'ai tout de même été surpris du comportement du programme.

Quand je regarde tes présentations, elle sont configurées en A4 imprimante aucune, car il me manque "gestetner MP ..." Mais au lancement du lisp, il par sur pdfcreator qui est mon imprimante par défaut... Bon, je ne voie pas ou il l’appelle, mais admettons.
J'ai le même résultats que toi à savoir les 3 feuilles bien et les 3 feuilles blanches pour l'autre fichier.

Sur ton fichier "échec" si je relance la commande imprimer, elle est paramétrée en fenêtre, et quand on appelle le bouton pour redéfinir cette fenêtre, en dézoomant, on peu voir la trace de la fenêtre précédente. Il y a bien un décalage. Mais alors d'ou il vient, je ne saurai le dire... Ce n'est pas le vecteur depuis le 0,0,0.. je sèche.


Image IPB


Il n'y a qu'un defun ça ne devrai pas être un effet de portée de variable pourtant tu dis que si quand on colle tout dans un nouveau dessin ça marche, c'est forcément une variable qui reste coincée ... J'en sais rien quoi... désolé...


voilà.... même constat que moi... :unsure:
pourquoi sur l'un oui et sur l'autre non....

PS : je n'arrive pas à rendre public mon fichier, c'est pour ça que je te l'ai envoyé en message privé. tu peux le faire toi s'il te plait? :D Merci d'avance
0

#15 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3467
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 26 octobre 2017 - 09:41

Voila... si un pro du Vlisp veux bien y jeter un coup d’œil, J'ai tout mis ici

J'aimerai bien savoir d'ou ça vient...
Car j'ai fait un truc dans le genre, mais ce code m'a l'air beaucoup plus... intelligent que le mien.. détection du portait paysage, utilisation de boundingbox alors que le me traine des attributs invisibles pour repérer les coins, bref une bien plus grosse culture programatique et plus malin...
Mais si malin que je trouve pas d'ou peut bien venir ce bug.
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#16 L'utilisateur est hors-ligne   fiesta13310 

  • ceinture noire
  • Groupe : Membres
  • Messages : 310
  • Inscrit(e) : 09-février 12

Posté 12 avril 2019 - 09:50

Bonjour,

Je me permet de relancer ce sujet car encore une fois, les beug recommencent... c'est toujours le même problème... pas plus ni moins... même si j'ai trouvé un moyen de contourner le problème (en faisant copier coller dans un nouveau dessin), c'est quand même chiant de devoir le faire... :(

Merci pour votre aide
0

Partager ce sujet :


Page 1 sur 1
  • 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)