Aller au contenu

Eclater 1 dwg en plusieurs dwg selon zones espace objet


Messages recommandés

Posté(e)

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]

Posté(e)

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

  • 4 semaines après...
Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é