grosseel Posté(e) le 13 mai 2009 Posté(e) le 13 mai 2009 Bonjour à tous,j'aurais besoin de l'aide des Lispeurs afin de m'aider à transformer ce script en Lisp.L'idée, c'est de décomposer un fichier comportant plusieurs folios (Pdg, Nomenclature de folios, schémas, ...) en autant de fichiers qu'il y a de folios(chaque folio est défini par une zone de l'espace objet). j'ai essayé de le faire en script mais c'est trop contraignant surtout si dans le futur il y a plus de folios. Le plan est composé de plusieurs folios architecturé comme suit :- 5 colonnes et autant de ligne que nécessaire- Décalage entre colonne 500- Décalage entre ligne 400- Sens de lecture du bas à gauche vers le haut à droite Merci d'avance de m'apporter votre aide. Exemple du script: Exemple du script: _copybase 0,0 -1,-1 420,296 _new "chemin du gabarit" _pasteclip 0,0 _zoom _e _save "Chemin d'enregistrement du fichier" _close delai 5000 _copybase [Edité le 13/5/2009 par grosseel] :casstet: [Edité le 15/5/2009 par grosseel]
didier Posté(e) le 16 mai 2009 Posté(e) le 16 mai 2009 coucou contacte moi par MPje te donnerai moyen de me joindre par mailde façon à travailler sur un fichiercar au niveau des explications :( :( :( amicalement ps: je ne suis joignable sue le week-end, désolé Éternel débutant... Mon site perso : Programmer dans AutoCAD
grosseel Posté(e) le 17 mai 2009 Auteur Posté(e) le 17 mai 2009 je ne sais plus comment contacté quelqu'un par MP sur CADxp, si tu peut m'aider (je n'arrive que à naviguer dans les forums)Si tu peut m'aiguiller. Merci encore de me préter attention
grosseel Posté(e) le 10 juin 2009 Auteur Posté(e) le 10 juin 2009 Bonjour à tous,je pense avoir trouver un début de solution grace à un lisp créer par bred qui permet de créer un onglet présentation par bloc sélectionner. J'ai repris son code pour l'adapter à mes besion en automatisant le procédé (Je selectionne le bloc type et il me génére l'ensembles des présentations avec le même type de bloc et avec le nom d'onglets qui va bien.Je pense que l'on peut reprendre ce programme en l'adaptant pour qu'il créer nom plus un présentation mais un nouveau fichier à la place. Ci-joint le code modifié et un autre code permetant de créer un nouveau fichier.Ma question c'est comment regrouper les deux pour convenir a mon besoin. (defun C:CEPX (/ ACDOC B C FEN I LAYS N-P NOM-P ONG-BASE ONG_DEST SEL XMIN YMAX A-P HAUT LARG P1 P2 NOM ECH LAY LOCK UNIT) (vl-load-com) ; 4 Millimètres 5 Centimètres 6 Mètres (setq UNIT (cdr (assoc (getvar "INSUNITS") '((4 . 1) (5 . 10) (6 . 1000))))) (while (not SEL) (setq SEL (car (entsel "\n Choix du cadre (Bloc) :"))) (setq BLK (cdr (assoc 2 (entget SEL)))) (if SEL (if (not (equal (vla-get-objectname (setq B (vlax-ename->vla-object SEL))) "AcDbBlockReference")) (setq SEL NIL))) ) (setq SEL (ssget "X" (list (cons 2 BLK))) ACDOC (vla-get-activedocument (vlax-get-acad-object)) LAYS (layoutlist) ) (setq BLK NIL) (if (> (length LAYS) 1) (progn (princ "\n Copie configuration traceur d'onglet Existant. \n Plusieurs Présentations détectées.") (while (not ONG-BASE) (princ "\n") (repeat (setq I (length LAYS)) (princ (strcat (nth (- (length LAYS) I) LAYS) " * ")) (setq I (1- I)) ) (setq ONG-BASE (getstring t "\n Présentation d'où la configuration du traceur sera récupérée :")) (if (not (member ONG-BASE LAYS)) (setq ONG-BASE NIL) ) ) ) (setq ONG-BASE (car LAYS)) ) (setq A-P (vla-item (vla-get-layouts ACDOC) ONG-BASE)) (vla-getcustomscale A-P 'N 'M) (vla-put-activelayout ACDOC A-P) (vlax-for E (vla-get-paperspace ACDOC) (if (equal (vla-get-objectname E) "AcDbViewport") (setq LAY (vla-get-layer E) LOCK (vla-get-displaylocked E) ) ) ) (setq I 0) (repeat (setq I (sslength SEL)) (if (vlax-property-available-p (vlax-ename->vla-object (ssname SEL (setq I(1- I)))) 'EFFECTIVENAME) (setq NOM vla-get-effectivename) (setq NOM vla-get-name) ) (if (equal (NOM (setq C (vlax-ename->vla-object (ssname SEL I)))) (NOM B)) (progn (vla-getboundingbox C 'XMIN 'YMAX) (setq LSTIMA (GETATT C) NBLSTIMA (length LSTIMA) IMA1 (cdr (nth 27 LSTIMA)) ;;; Numéro de folio du bloc ;;; IMA2 (cdr (nth 28 LSTIMA)) ;;; Nom de document ERAS ) (setq ONG_DEST IMA1) ;;; (if (/= IMA2 "") ;;; Concatenation de numéro de folio et du Nom du document ERAS ;;; (setq ONG_DEST (strcat ONG_DEST "_" IMA2)) ;;; ) (setq N-P (vla-add (vla-get-layouts ACDOC) ONG_DEST)) (setq ECH (vla-get-yscalefactor C)) (vla-copyfrom N-P A-P) (vla-put-activelayout ACDOC N-P) (setq FEN (vla-addpviewport (vla-get-paperspace ACDOC) (vlax-3d-point '(0 0 0)) (setq Larg (* Unit (/ (- (car (vlax-safearray->list ymax)) (car (vlax-safearray->list xmin))) ech))) (setq Haut (* Unit (/ (- (cadr (vlax-safearray->list ymax)) (cadr (vlax-safearray->list xmin))) ech))))) (vla-put-layer FEN LAY) (vla-put-displaylocked FEN LOCK) (vla-zoomextents (vlax-get-acad-object)) (vla-display FEN :vlax-true) (vla-put-mspace ACDOC :vlax-true) (vla-put-activepviewport ACDOC FEN) (vla-zoomwindow (vlax-get-acad-object) XMIN YMAX) (vla-put-mspace ACDOC :vlax-false) (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 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 (- (/ LARG 2)) (- (/ HAUT 2))))) (vlax-make-variant (vlax-safearray-fill P2 (list (/ LARG 2) (/ HAUT 2)))) (vla-setwindowtoplot (vla-get-activelayout ACDOC) P1 P2) ) ) ) (setvar "TILEMODE" 1) (princ) ) (defun c: DEC (/ LstFol Folio) (setq OldCmd (getvar "cmdecho") LstFol (gest_fol)) (setvar "cmdecho" 0) (vl-mkdir (strcat (getvar "DWGPREFIX") (vl-filename-base (getvar "DWGNAME")))) (foreach Folio LstFol (AFFFOL Folio) (command "_WBLOCK" (strcat (getvar "DWGPREFIX") (vl-filename-base (getvar "DWGNAME")) "\\" Folio ".dwg") "" "0,0" "_ALL" "" "_OOPS")) (setvar "cmdecho" OldCmd) (princ)) Merci d'avance pur vos réponses
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant