Aller au contenu

paulo43

Membres
  • Compteur de contenus

    9
  • Inscription

  • Dernière visite

Tout ce qui a été posté par paulo43

  1. Bonjour, En fait, il y a plusieurs pages dans chaque onglets.L'onglet nommé "01" avec 4 pages à l’intérieur par exemple. J'ai toujours utilisé "publier", mais dans ma nouvelle boîte ils bossent comme ça, c'est pas pratique mais je dois faire avec. Alors je cherche un truc pour m'aider, car imprimer chaque pages une par une c'est vraiment chronophage. Bonne journée Paulo
  2. Bonjour à tous, J'ai un lisp pour imprimer en PDF des mises en pages dans l'espace Objet. Il faut imaginer plein de cadre composés de 4 lignes qui font 420 x 297 avec à l'intérieur de ces cadre des dessins de ferraillage. Ces cadres sont dans un calque "Feuille _A4". Je dessine tout dans l'espace objet. Le truc c'est que je n'arrive pas à faire fonctionner ce lisp dans l'espace papier, j'ai changé d'entreprise et ici on décompose la structure dans des onglets de présentation. Un onglets avec tout les Linteaux, un onglet avec toutes les poutres.... Ci joint le Lisp: ;fonction de tracer des feuillets d'armatures (defun c:imp () ;; Load visual lisp, activex support (vl-load-com) ;jeu d selection (setq p1 0 p2 0 p3 0 p4 0 p5 0 p6 0 p7 0 p8 0) (setq selc 0) (setq selc (ssget '((0 . "LINE") (8 . "FEUILLE_A4"))) nb (sslength selc) n 0) ;lecture de la liste des objets (while (< n nb) (setq ent1 (ssname selc n) li1 (entget ent1) p1 (cdr (assoc 10 li1)) p2 (cdr (assoc 11 li1)) di1 (fix (distance p2 P1)) ) (if (= di1 420) (progn (setq n1 0) (setq selc (ssdel ent1 selc) nb (- nb 1)) (while (< n1 nb) (setq ent2 (ssname selc n1) li2 (entget ent2) p3 (cdr (assoc 10 li2)) p4 (cdr (assoc 11 li2)) di2 (fix (distance p4 p3)) ) (if (and (= di2 297) (or (and (= (car p3) (car p1))(= (cadr p3) (cadr p1))) (and (= (car p1) (car p4))(= (cadr p1) (cadr p4))) (and (= (car p2) (car p3))(= (cadr p3) (cadr p2))) (and (= (car p2) (car p4))(= (cadr p2) (cadr p4))) ) ) (progn (setq selc (ssdel ent2 selc) nb (- nb 1)) (setq n2 0) (while (< n2 nb) (setq ent3 (ssname selc n2) li3 (entget ent3) p5 (cdr (assoc 10 li3)) p6 (cdr (assoc 11 li3)) di3 (fix (distance p6 p5)) ) (if (and (= di3 420) (or (and (= (car p3) (car p5))(= (cadr p3) (cadr p5))) (and (= (car p5) (car p4))(= (cadr p5) (cadr p4))) (and (= (car p6) (car p3))(= (cadr p3) (cadr p6))) (and (= (car p6) (car p4))(= (cadr p6) (cadr p4))) ) ) (progn (setq selc (ssdel ent3 selc) nb (- nb 1)) (setq n3 0) (while (< n3 nb) (setq ent4 (ssname selc n3) li4 (entget ent4) p7 (cdr (assoc 10 li4)) p8 (cdr (assoc 11 li4)) di4 (fix (distance p8 p7)) ) (if (and (= di4 297) (or (and (= (car p7) (car p5))(= (cadr p7) (cadr p5))) (and (= (car p5) (car p8))(= (cadr p5) (cadr p8))) (and (= (car p6) (car p7))(= (cadr p7) (cadr p6))) (and (= (car p6) (car p8))(= (cadr p6) (cadr p8))) ) ) ;recupére les points et imprime (progn (setq selc (ssdel ent4 selc) nb (- nb 1)) (if (= (cadr p1) (cadr p6)) (if (= (car p1) (car p6)) (if (< (car p1) (car p6)) (if (< (cadr p1) (cadr p6)) (setq liste (list p1 p6)) (setq liste (list p6 p1))) (setq liste (list p6 p1)))) (if (< (car p1) (car p5)) (if (< (cadr p1) (cadr p5)) (setq liste (list p1 p5)) (setq liste (list p5 p1))) (setq liste (list p5 p1)))) (command "-traceur" "o" ;détaillé "Objet" ;présentation objet "adobe pdf" ;imprimante "A4" ;format "m" ;unité de dessin "A" ;paysage "n" ;pas synétrie "f" ;fenetre de tracer (car liste) (cadr liste) ;points de la fenetre "p" ;pleine page "c" ;centré "o" ;avec style de tracé "ACAD" ;nom du style "o" ;sans épaisseur "a" "n" "o" "o") ) (progn (setq n3 (+ 1 n3)) ) ) ) ) (setq n2 (+ 1 n2)) ) ) ) (setq n1 (+ 1 n1)) ) ) ) (setq n (+ 1 n)) ) ) ) Merci pour votre aide Paulo
  3. Bonjour, Merci pour le Lisp. Tu me donne l'occasion de vous montrer ce que j'ai fais depuis mon dernier post. Nous utilisons depuis la semaine dernière au bureau, 4 commandes que j'ai mis sous forme de barre d'outil. J'ai glané et modifié des Lisp pour arriver à ça et je dois dire que ça fonctionne plutôt bien. D'ailleurs un grand merci à toutes les personnes qui écrivent et qui partagent leurs Lisp. Dans un premier temps 2 commandes qui permettent de verrouiller ou de déverrouiller les fenêtres. C'est important pour pouvoir utiliser le programme "-P", il faut que les fenêtres soit bien déverrouillées. Verrouiller: (defun c:verr(/ fen n sel tot) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq sel (ssget "x" (list (cons 0 "VIEWPORT")))) (progn (setq n 0 tot 0) (while (ssname sel n) (if (and (= (logand (cdr (assoc 90 (entget (ssname sel n)))) 16384) 0) (/= (cdr (assoc 69 (entget (ssname sel n)))) 1)) (progn (setq fen (vlax-ename->vla-object (ssname sel n))) (vlax-put-property fen "displaylocked" :vlax-true) (setq tot (1+ tot)) ) ) (setq n (1+ n)) ) (princ (strcat "\n" (itoa tot) " fenêtre(s) de verrouillée(s)")) ) (princ "\nPas de fenêtres") ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) null .... Déverrouiller (defun c:unverr(/ doc ent n sel) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) n 0 ) (vla-startundomark doc) (if (ssget "_x" (list (cons 0 "VIEWPORT"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-displaylocked ent) :vlax-true) (setq n (1+ n)) (vla-put-displaylocked ent :vlax-false) ) ) (vla-delete sel) ) ) (princ (strcat "\n" (itoa n) " fenêtre(s) de déverrouillée(s)")) (vla-endundomark doc) (princ) ) (setq nom_lisp "UNVERR") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) Ensuite le programme "-p" qui sert comme vous l’avez compris à automatiser les présentations de type phasag, profil en travers... - Dans un premier temps, faites une présentation de la phase 1 par exemple qui servira de modèle sans verrouiller les fenêtres - Cliquer sur l’icône « -P » - Saisir le nombre de copies (nombre de phases) - Le décalage en X - Le décalage en Y Comme nous partons toujours de la gauche vers la droite et du haut vers la bas, ne rentrez pas de signe (-). Presentation -P: (defun llayouts (/ acadobject ActDoc LAYOUTS LLAY n) (setq acadObject (vlax-get-acad-object)) (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq LAYOUTS (vla-get-Layouts ActDoc)) (setq LLAY nil) (vlax-for n LAYOUTS (setq LLAY (cons (vla-get-name n) LLAY)) ) LLAY ) (defun NewNameLayout (OLDLAY NEWLAY) (setq RES nil) (while NEWLAY (setq ELEM (car NEWLAY)) (setq NEWLAY (cdr NEWLAY)) (if (not (member ELEM OLDLAY)) (setq RES ELEM) ) ) RES ) (defun c:p- () (vl-load-com) (setq NBPAGE (getint "\nNombre de copies : ")) (setq DECALX (getreal "\nDécalage en X:")) (setq DECALY (getreal "\nDécalage en Y:")) (setq decx (rtos DECALX)) (setq decy (rtos DECALY)) (repeat NBPAGE (setq OLDLLAY (llayouts)) (command "_layout" "_c" "" "") (setq NEWLLAY (llayouts)) (setq NNAME (NewNameLayout OLDLLAY NEWLLAY)) (command "_layout" "_s" NNAME) (command "_MSPACE") (if (setq ss (ssget "_X" (list (cons 0 "VIEWPORT") (if (getvar "CTAB") (cons 410 (getvar "CTAB")) (cons 67 (- 1 (getvar "TILEMODE"))) ) ) ) ) (foreach n (mapcar 'cdr (mapcar '(lambda (x) (assoc 69 x)) (mapcar 'entget (mapcar 'cadr (ssnamex ss))))) (if (not (eq n 1)) (progn (setvar "CVPORT" n) (command "_pan" "0,0" (strcat "-" decx "," decy)) ) ) ) ) (command "_PSPACE") ) (princ) ) Et pour finir le Lisp pour renommer les onglets, celui que j'utilise nomme le premier onglet en Cartouche et ensuite 01,02,03.... (defun c:ron(/ doc express lay lst n i txt) (setq doc (vla-get-activedocument (vlax-get-acad-object)) n 0 i 1 ) (vla-startundomark doc) (if (eval 'acet-ui-progress-done) (progn (acet-ui-progress-init "" (1- (vla-get-count (vla-get-layouts doc)))) (setq express T) ) (progn (princ "\nTravail en cours...") (princ) ) ) (vlax-for lay (vla-get-layouts doc) (setq lst (cons (list (vla-get-taborder lay) lay) lst)) ) (while (setq lay (assoc i lst)) (if (eq n 0) (setq txt "Cart") (setq txt (itoa n)) ) (while (< (strlen txt) 2) (setq txt (strcat "0" txt)) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-name (list (cadr lay) txt))) (progn (vla-put-name (vla-item (vla-get-layouts doc) txt) (strcat "Temporaire__" txt)) (vla-put-name (cadr lay) txt) ) ) (and express (acet-ui-progress-safe i)) (setq n (1+ n) i (1+ i) ) ) Une fois que vous avez fini vos présentations vous pouvez Verrouiller les fenêtres avec le Lisp "Verr" Au bureau tout le monde trouve ça super, on gagne pas mal de temps de mise en page. Merci à tous pour votre aide Paulo
  4. Bonjour à tous, Je me repenche sur ce lisp, et mes connaissances limitées en LISP ne me permettent pas de le modifier. Avec programme de "bonuscad" j'obtiens ce que je veux, mais je voudrais pouvoir rentrer le décalage en x ou en y après le nombre de page suivant ma présentation et que les noms d'onglet se suivent je m'explique: Aujourd'hui je commence avec l'onglet 01, il me créer l'onglet 01(2) et 01(3). je souhaiterais avois 01 puis 02 puis 03... Merci pour votre aide Bonne journée Paulo
  5. Bonsoir, Merci ça fonctionne très bien, il faut que je rajoute la valeur de -p à rentrer manuellement dans la barre de commande après la demande du nombre de page et le tour est joué. Merci beaucoup et bon week end Paul
  6. Bonjour à tous, J'ai trouvé sur ce forum un lisp qui permet de copier une présentation existante et en plus de faire un -p défini. Pour des présentation très tramées comme des profils en long c'est génial. Le seul hic ça ne fonctionne que pour une fenêtre sur la présentation, si il y a deux fenêtres il y en a qu'une qui se décale de -p, dans le cas d'une vue en plan + une coupe on est marron. Je n'arrive pas à modifier ce lisp pour qu'il sélectionne toutes les fenêtres. Je crois qu'un membre a modifié ce lisp mais je ne le retrouve pas. Merci pour votre aide Paul CLAYOUTT: (defun llayouts (/ acadobject ActDoc LAYOUTS LLAY n) (setq acadObject (vlax-get-acad-object)) (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq LAYOUTS (vla-get-Layouts ActDoc)) (setq LLAY nil) (vlax-for n LAYOUTS (setq LLAY (cons (vla-get-name n) LLAY)) ) LLAY ) (defun NewNameLayout (OLDLAY NEWLAY) (setq RES nil) (while NEWLAY (setq ELEM (car NEWLAY)) (setq NEWLAY (cdr NEWLAY)) (if (not (member ELEM OLDLAY)) (setq RES ELEM) ) ) RES ) (defun c:cy () (vl-load-com) (setq NBPAGE (getint "\nNombre de copies : ")) (repeat NBPAGE (setq OLDLLAY (llayouts)) (command "_layout" "_c" "" "") (setq NEWLLAY (llayouts)) (setq NNAME (NewNameLayout OLDLLAY NEWLLAY)) (command "_layout" "_s" NNAME) (command "_MSPACE") (command "_-pan" "_non" '(0 0) "_non" '(0 50)) (command "_PSPACE") ) (princ) )
  7. Merci à tous pour vos réponses et réflections. je viens de tenter des manipes qui ne sont pas concluantes. J'ai copié le dossier Toolpalette du repertoire: "C:\Users\xxxxxxx\AppData\Roaming\Autodesk\AutoCAD 2012 - French\R18.2\fra\Support\ToolPalette" celui avec les fichier *.atc, et je l'ai collé sur notre serveur. Ensuite j'ai modifié le chemin de recherche d'autocad dans les options au niveau de "Emplacement des fichiers de palettes d'outils" où je lui demande d'aller cherché les fichiers sur le serveur "x:\serveur\biblio\toolpalette". Le probléme c'est que ça à foutu un bordel dans les palettes et dans le dossier, il y a des *.atc en double qui ne portent pas exactement le même nom. J'ai l'impression que les fichiers ne s'écrasent pas. Enfin, pour l'instant ça n'est pas concluant. Rebcao: qu'est ce que tu veux dire quand tu dis: "Donc au final, j'ai opté pour le rechargement des XTP ! Et là ! l'ordre reste toujours le même... Mais je suis d'accord c'est plus CHIANT !" qu'est ce que tu entend par rechargement des XTP? Bonne journée Paulo43
  8. Bonjour, Je souhaiterais pouvoir mettre à jour automatiquement la palette d'outil. Je m'explique, dans mon travail nous travaillons avec une bibliothéque de blocs sur un réseau. Aujourd'hui quand un collégue modifie un bloc ou en rajoute un dans le fichier source, il le fais glisser dans la palette et exporte le *.xtp sur le serveur en écrasant l'ancien fichier. Ce que nous aimerions c'est que la palette d'outil ce synchronise automatiquement ou au chargement d'autocad. Aujourd'hui malgré le fait d'écraser le fichier *.xtp, lorsque je réouvre autocad la palette n'est pas à jour. Pourquoi la palette ne va pas chercher le nouveau *.xtp sur le serveur ? Comment faire un lisp ? Merci d'avance pour votre aide Bonne journée Paulo43
  9. Bonjour, Je cherche un moyen simple et rapide pour nettoyer et convertir un export DWG de allplan sur autocad. Aujourd'hui j'utilise une routine LISP comme celle ci: (defun c:net() ; Purge tout le dessin (command "_purge" "TO" "" "n") ; Renomme les calques en supprimant le préfixe des calques ((lambda ( / def_lay name_lay new_name) (setq def_lay (tblnext "LAYER" t)) (while def_lay (setq name_lay (cdr (assoc 2 def_lay))) (if (setq start_str (vl-string-search "TB_" name_lay)) (progn (setq new_name (substr name_lay (+ start_str 4))) (command "_.-rename" "_layer" name_lay new_name) ) ) (setq def_lay (tblnext "LAYER")) ) (prin1) )) ; Change l'échelle du type de ligne (command "echltp" "2") ; Rend inactif le calque 0 (command "calque" "CH" "DEFPOINTS" "IN" "0" "") ;Change les objets en couleur Ducalque ;(setq jeuducalque (ssget "X" (list (cons 0 "*") (cons 8 "*")))) ;(command "chprop" jeuducalque "" "co" "ducalque" "") ;Passe toutes les hachures en arrière plan (setq jeuhach (ssget "X" (list (cons 0 "hatch") (cons 8 "*")))) (command "draworder" jeuhach "" "") (command "regen") ) Mais j'aurais besoin de 2 commandes supplémentaire, qui me permettrais de changer automatiqement toutes les cotations en un style de cote donné et supprimer tous les autres styles de cotes que allplan à créer pendant l'exportation (_DIMSTYLE_1; _DIMSTYLE_2 etc...) Et une seconde qui me changerais le facteur de police de tous les textes à 0.70. Je ne sais pas si vous pouvez m’aider mais je tente ma chance Merci d’avance Paulo
×
×
  • 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é