Aller au contenu

asptt9

Membres
  • Compteur de contenus

    51
  • Inscription

  • Dernière visite

Tout ce qui a été posté par asptt9

  1. Bonjour, Est-ce que quelqu'un sait s'il est possible de faire un zoom sur l'emprise d'un jeu de sélection ? Je m'explique : je créé un jeu de sélection via l'outil de sélection rapide et j'aimerais pouvoir zoomer sur l'emprise de ce jeu de sélection un peu comme un zoom fenêtre. Si il n'y a qu'un seul bloc dans ma sélection, j'aimerais qu'il apparaisse en gros plan. Est-ce faisable ? Merci par avance.
  2. Bonjour Patrick_35, Merci beaucoup pour ton aide. Ça a l'air de bien fonctionner... Par contre, est-ce que c'est possible de commencer en haut à gauche et de passer à la ligne du dessous en bout de ligne car l'ordre de mes pages est dans le sens de lecture. Je vais essayer d'utiliser l'aide pour comprendre le fonctionnement de ton programme car je t'avoue que là j'ai un peu de mal à tout comprendre... En tout cas une nouvelle fois un grand merci et un grand respect pour tes connaissances en programmation!!!
  3. Bonjour vincfl74, Si tu sélectionnes toutes les cases de ton tableau, avec un clic droit tu vas dans verrouillage puis tu sélectionnes contenu et format verrouillés. Ça devrait marcher je pense...
  4. Bonjour, J'ai dans mon espace objet des carnets de plusieurs feuille au format A4 espacées chacune de 17.77 mm en X et de 16.09 mm en Y. Ce carnet comporte 10 colonnes de feuilles A4 sur un nombre de lignes qui peut être infini...Je vous envoi un modèle en pièce jointe. J'ai créé un petit programme qui me permet d'automatiser l'impression du nombre de feuilles souhaité en ne sélectionnant que la première. Cette impression se fait au format PDF. Le soucis, c'est que je n'ai pas trouvé comment imprimer toutes les feuilles dans un seul fichier PDF. Actuellement ce programme créé autant de fichier PDF qu'il y a de feuille à imprimer. Auriez vous une idée pour que le programme regroupe automatiquement toutes les feuilles dans un seul fichier PDF ? Bien sur il y a des logiciels comme PDF Blender qui peuvent regrouper plusieurs PDF en un seul mais si je peux éviter... Voici mon programme : (defun c:tracercarnetpdf (/ ptFA ptFB nbcop compt1 Numpage chemin n) (commune_syndicat) (setq nbcop (getint "nombre de feuilles dans le carnet de repérage (y compris le cartouche) ?")) (setq ptFA (getpoint "point inferieur gauche de la feuille du cartouche")) (setq XptFA (car ptFA)) (setq YptFA (car(cdr ptFA))) (setq ptFB (getpoint "point superieur droit de la feuille du cartouche")) (setq XptFB (car ptFB)) (setq YptFB (car(cdr ptFB))) (setq compt1 1) (setq Numpage (itoa compt1)) (setq chemin (strcat "C:\\PDF\\" commune "_page " Numpage ".pdf")) (setq n 1) (setq a (itoa nbcop)) (while (and (<= compt1 nbcop)(<= compt1 (* 10 n))) (command "traceur" (princ "oui") (princ "Objet") (princ "DWG To PDF") (princ "A4 (210.00 x 297.00 mm)") (princ "Millimètres") (princ "Portrait") (princ "non") (princ "Fenêtre") (princ ptFA) (princ ptFB) (princ "1:1") (princ "centre") (princ "oui") (princ "") (princ "oui") (princ "") (princ chemin) (princ "N") (princ "O") ) (setq XptFA (+ 227.77 XptFA)) (setq YptFA YptFA) (setq ptFA (list XptFA YptFA)) (setq XptFB (+ 227.77 XptFB)) (setq YptFB YptFB) (setq ptFB (list XptFB YptFB)) (setq compt1 (1+ compt1)) (setq Numpage (itoa compt1)) (setq chemin (strcat "C:\\PDF\\" commune "_page " Numpage ".pdf")) (if (> compt1 (* 10 n)) (progn (setq XptFA (- XptFA 2277.7)) (setq YptFA (- YptFA 313.09)) (setq XptFB (- XptFB 2277.7)) (setq YptFB (- YptFB 313.09)) (setq ptFA (list XptFA YptFA)) (setq ptFB (list XptFB YptFB)) (setq n (1+ n)) ) ) (if (> compt1 nbcop) (alert (strcat "Le programme a imprimé " a " feuille(s) au format PDF")) ) ) (princ) ) Merci d'avance pour votre contribution. demo.zip
  5. Ok, C'est bon à savoir pour le marqueur undo. Merci beaucoup Patrick_35.
  6. Je ne comprends pas non plus l'utilité du (princ) en fin de programme. Qu'est-ce que ça apporte ?
  7. Merci. Ça va tout de suite mieux avec quelques explications!!! Ça a l'air facile comme ça mais je ne suis malheureusement pas capable de créer ce genre de programme tout seul... Il y a une chose que je comprends pas bien: à quoi sert le marqueur undo car pour moi undo signifie annuler la dernière opération alors je ne comprends pas pourquoi on en a besoin dans ce programme. En tout cas ton programme fonctionne exactement comme je l'espérait. Tu ne pouvais pas mieux répondre à mes attentes. Encore merci.
  8. Merci beaucoup Patrick_35. J'ai oublié de préciser dans le sujet, j'ai d'autres étiquettes communes aux deux blocs que je ne veux pas copier d'un bloc à l'autre. Ton programme copie toutes les étiquettes communes j'ai l'impression, or j'aimerais, si c'est possible, qu'il sélectionne juste les étiquettes que j'ai mentionné dans l'énoncé. Peux tu me guider car de plus j'ai beaucoup de mal à comprendre le fonctionnement de ton programme vu que je débute à peine.
  9. J'ai oublié de préciser... La démarche que je voudrais appliquer est choisir un premier bloc (unique), en extraire les attributs concernés et les stocker dans des variables, puis sélectionner un deuxième bloc (unique) et appliquer les valeurs des variables précédentes aux attributs concernés.
  10. Bonjour, Voilà mon problème. J'ai dans mes dessins des blocs nommés "bacréseau2" avec un certains nombre d'attributs et un client me fournit des blocs "bacréseau" avec eux aussi un certain nombre d'attributs. Les attributs de ces deux blocs ne sont pas tous les mêmes, cependant certaines étiquettes sont identiques bien que situées dans un ordre différent. Mon souhait serait de copier la valeur des attributs du bloc bacréseau vers le bloc bacréseau2 pour les étiquettes communes. Les étiquettes concernées se nomment "X","Y","Z-TN","Z-PROF","MARQUE","NUMSERIE","INCERTXY","INCERTZ" et "DATERELEVE". Comment puis-je faire pour copier les valeurs des attributs de ces étiquettes d'un bloc à un autre sans modifier les valeurs des attributs des autres étiquettes présentes dans le bloc qui réceptionne les données. Les valeurs peuvent être soit du texte soit des chiffres décimaux ou non. Ces variables sont donc des "string" J'espère que j'ai été assez clair dans mon énoncé... Merci d'avance pour votre aide
  11. Bah tout de suite ça va mieux. Merci beaucoup alala pour cette petite précision. Et merci à tous pour m'avoir consacré un peu de votre temps.
  12. Oui pourquoi pas??? :) Je viens de modifier mais ça ne marche toujours pas. Dans la console visual lisp il m'affiche <Selection set: 5b5e> lorsque je charge la ligne, mais il ne m'a fait aucune sélection dans le dessin courant...
  13. Le programme pour choisir la commune est le suivant: (Defun commune_syndicat (/) (setq filtex "C:/Mes documents/Commune_Syndicat.txt") (setq x (open filtex "r") ct 0 ) (Setq llisttxt nil) (While (Setq exte (read-line x)) (Setq exte (read exte)) (Setq llisttxt (cons exte llisttxt)) (Setq ct (+ ct 1)) ) (close x) (Setq Commune(nth 2 llisttxt)) (Setq Syndicat(nth 1 llisttxt)) (Setq District(nth 0 llisttxt)) ) Ce programme va chercher les renseignement dans un fichier .txt généré par microsoft acces. Le nom de calque est "repérage paris" si la commune est paris.(sans les guillemets bien sur) et il est bien présent dans le dessin.
  14. Ça me renvoie la valeur "Repérage "commune"" Le problème c'est que quand je charge la ligne du ssget dans visual lisp, il ne me sélectionne rien alors que des blocs sont présent dans mon espace objet du dessin courant...
  15. Elle est enregistrée comme suit: (setq calquecommune (strcat "Repérage" " " commune))
  16. Merci à tous pour vos réponses, je pense avoir à peu près compris le fonctionnement de ce lisp. Je vais essayer de le recréer par moi même afin d'apprendre un peu le fonctionnement de visual lisp mais ce n'est pas gagné.
  17. Bonjour, J'ai un petit soucis dans mon jeu de sélection... Je voudrais sélectionner tous les blocs dont le nom est "numeroderepere" et qui sont sur un calque variable selon la commune ou je me trouve. En fonction de la commune le calque se nomme "repérage commune". Le nom de ce calque est stocké dans la variable calquecommune. J'ai essayé ce bout de code: (setq ssnum (ssget "_X" (list '(0 . "INSERT") '(2 . "numeroderepere") (cons 8 calquecommune)))) mais il ne marche pas... Que n'ai-je pas bien fait ? Merci d'avance pour vos réponses.
  18. Bonjour, Merci pour ce tuyau! Grâce à votre aide j'ai réussi à créer mon premier lisp et surtout à comprendre son fonctionnement, ce qui est le plus important je pense. Au final le sous programme donne ceci: (defun derniernumero (/ entbloc ent numgeoref n numgeoref2 ss) (if (setq ss (cadr (ssgetfirst))) (progn (setq ss1 (ssget (list '(0 . "INSERT")))) (setq n 0 numgeoref 0 ) (if (/= ss1 nil) (progn (repeat (sslength ss1) (progn (setq entbloc (ssname ss1 n) ent (entnext entbloc) ) (while (/= (cdr (assoc 0 (entget ent))) "SEQEND") (if (and (= (cdr (assoc 0 (entget ent))) "ATTRIB") (= (cdr (assoc 2 (entget ent))) "NUMGEOREF") (/= (cdr (assoc 1 (entget ent))) "") ) (if (> (atoi (cdr (assoc 1 (entget ent)))) numgeoref) (setq numgeoref (atoi (cdr (assoc 1 (entget ent))))) ) ) (setq ent (entnext ent)) ) (setq n (1+ n)) ) ) ) (progn (setq numgeoref 0) ) ) ) (progn (setq numgeoref 0) ) ) (setq numgeoref2 (1+ numgeoref)) (setq ss1 nil) (princ) ) Je vais maintenant essayer de le recréer par moi-même histoire de voir si je suis capable de le faire tout seul après toute vos explications. Un grand merci à tous!
  19. Peut-être y a t-il moyen de l'améliorer avec une temporisation au moment du choix de la sélection afin que je n'ai pas à intervenir même si elle est vide. Je m'explique : avant de lancer ce programme ma sélection est déjà faite donc le ssget détecte la sélection en cours et la valide. Mais quand je n'ai aucune sélection en cours, le ssget me donne la main pour faire ma sélection. Or si il n'y a aucun objet sélectionné avant c'est que je n'en veut aucun. Donc j'aimerais que le programme sache que quand aucun objet n'est sélectionné il valide la sélection vide au lieu de me donner la main pour choisir (ce qui m'oblige à intervenir manuellement pour valider la sélection vide). Est-ce faisable? Existe t-il des commande de temporisation pour dire par exemple si aucune sélection n'est faite au bout de 0.01 seconde valider valider la sélection vide? Avez-vous une piste?
  20. Bonjour à vous et merci encore. En fait, au final j'ai utilisé ton programme -olivier- pour incrémenter la valeur de numgeoref au moment de l'insertion de mes blocs. Je l'ai donc utiliser comme sous programme et avec l'aide que vous avez pu m'apporter ça a l'air de bien fonctionner. Voici le sous programme: (defun derniernumero (/ entbloc ent numgeoref n) (setq ss1 (ssget (list '(0 . "INSERT")))) (setq n 0 numgeoref 0 ) (if (/= ss1 nil) (progn (repeat (sslength ss1) (progn (setq entbloc (ssname ss1 n) ent (entnext entbloc) ) (while (/= (cdr (assoc 0 (entget ent))) "SEQEND") (if ;si (and (= (cdr (assoc 0 (entget ent))) "ATTRIB") (= (cdr (assoc 2 (entget ent))) "NUMGEOREF") (/= (cdr (assoc 1 (entget ent))) "") ) (if (> (atoi (cdr (assoc 1 (entget ent)))) numgeoref) (setq numgeoref (atoi (cdr (assoc 1 (entget ent))))) ) ) (setq ent (entnext ent)) ) (setq n (1+ n)) ) ) ) (progn (setq numgeoref 0) ) ) (setq numgeoref2 (1+ numgeoref)) (setq ss1 nil) (princ) ) Ce programme ne me permet plus d'afficher la valeur du plus grand numgeoref mais me permet d'incrémenter directement à l'insertion de mon bloc. Si vous voyez des erreurs n'hésitez pas à m'en faire part même si au final je n'ai quasiment rien modifié au programme d'-Olivier- Encore merci à vous.
  21. Bonjour, Désolé de vous re-déranger... En fait j'aimerais que le programme inclus l'éventualité qu'il n'y ai aucun élément de présent dans le jeu de sélection et si c'est le cas mettre une variable à 1. J'ai essayé avec (if (= (length ss1) 0) (progn (setq numgeoref 0) ) ) mais ça ne marche pas... pourriez vous m'aider s'il vous plaît.
  22. Merci beaucoup à tous les deux. Vos deux lisp fonctionnent à merveille et me permette de gagner un temps énorme. Je vais essayer de les analyser pour comprendre comment ils fonctionne...ça m'évitera peut-être de vous embêter la prochaine fois. En tout cas un grand merci pour votre aide.
  23. Merci de m'avoir décrypté un peu ton programme ça m'aide à mieux comprendre. Si je ne me trompe pas le code dxf pour la valeur d'un attribut de bloc est le 3. J'ai donc rajouté une ligne au programme, ce qui donne: (defun c:asptt9 (/ entbloc ent numgeoref n) ;lance la fonction asptt9 (setq ss1 (ssget (list '(0 . "INSERT")))) ;créé une sélection des blocs et l'enregistre dans la variable ss1 (setq n 0 ;enregistre la valeur 0 dans la variable n numgeoref -1e99 ;enregistre la valeur -1e99 dans la variable numgeoref ) (repeat (sslength ss1) ;répète autant de fois qu'il y a de blocs dans la sélection (progn (setq entbloc (ssname ss1 n) ;enregistre le code de la nième entité de la sélection ss1 dans la variable entbloc ent (entnext entbloc) ;passe le code de l'entité suivante dans la variable ent ;les codes suivant correspondent aux objets imbriqués dans le bloc en question ) (while (/= (cdr (assoc 0 (entget ent))) "SEQEND") ;répète jusqu'à l'objet sequend dernier objet d'un bloc (if ;si (and (= (cdr (assoc 0 (entget ent))) "ATTRIB") ; l'objet est et un attribut... (= (cdr (assoc 2 (entget ent))) "NUMGEOREF"); et que son étiquette est numgeoref (/= (cdr (assoc 3 (entget ent))) nil); et que la valeur de l'attribut n'est pas vide ) (setq numgeoref (max numgeoref (read (cdr (assoc 1 (entget ent)))))) ;enregistre la valeur la plus grande entre l'ancienne valeur de numgeoref et la nouvelle ); termine la boucle while (setq ent (entnext ent)) ; passe au bloc suivant ) (setq n (1+ n)) ;ajoute 1 à n ) ) (alert (rtos numgeoref)) ; affiche la valeur ;il manque une condition pour vérifier que numgeoref n'est plus à sa valeur initiale (-1e99) (princ) ) Le problème c'est que ça me renvoie toujours la valeur de numgeoref qu'on lui a donné au départ (-1exp99),je n'arrive pas à voir pourquoi. Je pense que c'est pour cela qu'il faut rajouter la condition à la fin mais si cette condition n'est pas remplie ça ne m'affichera pas la valeur donc je suis un peu bloqué....please help
  24. Ah ok c'est donc pour ça, du coup ça ne m'arrange pas vu que j'ai que des nombres entier dans mon attribut. Par contre je viens de rencontrer un problème avec le lisp d' -Olivier- qui ne se pose peut-être pas avec le tiens. J'ai l'impression que quand un attribut n'est pas renseigné parmi ma sélection le programme ne fonctionne pas étant donné qu'il n'y a pas de chiffre à l'intérieur. Peut-être pouvez vous me donner une petite piste pour que j'essaye de corriger ce problème tout seul.Je vais pas monopoliser tout votre temps...Merci par avance.
  25. Merci beaucoup -Olivier- et Patrick_35 pour vos réponses et aussi pour la rapidité dont vous avez fait preuve. Le programme d'-Olivier- répond totalement à mes attentes. Par contre, j'ai fait un test sur ton lisp Patrick_35 et ton programme ne me renvoie pas la plus grande valeur de l'attribut à chaque fois. Peut-être que je n'ai pas été assez clair dans mon énoncé. Enfin toujours est-il que vous m'avez retiré une belle épine du pied et je vous en remercie.
×
×
  • 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é