Aller au contenu

Inserer Plusieurs DXF


yb1971

Messages recommandés

Bonjour,

je suis à la recherche d'une personne qui pourrais me faire un LISP voir deux ou les deux en un!

dans un premier temps:

 

Il s'agit d'insérer plusieurs fichiers .dxf qui sont des planches de cadastres pour en faire un fichier .dwg

le point d'insert est tjrs 0.0.0

pas de mis à l'échelle

pas de rotation..

 

purger

et enregistrer.

j'ai trouver des lignes de programmation sur le net

______________________________________________________________________________________________

(defun c:Test (/ directory files)

(setq directory "C:\Users\vpeter\Documents\DXF")

(if (setq files (vl-directory-files directory "*.dxf" 1))

(foreach dxf files

(command "_.-insert"

(strcat directory "\\" dxf)

'(0. 0. 0.)

""

""

""

)

)

(princ "\n No DXF files found into that folder !")

)

(princ)

)

________________________________________________________________________________________

 

Mais je n'y arrive pas cela e dit erreur de syntaxe quand j'essai de lancer le lisp!!!

 

Et dans un deuxième temps (c'est pour ça que j'ai mis ce sujet dans autocad 3d) je voudrais aussi automatiser le passage du LAMBERT93 au CC48.

cette fonction es possible que sur autocad3D il me semble en passant par le volet des tâches et lui demandant d'exécuter une requête.

Donc je sais pas si on peux faire un Lisp pour ça??

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Pour ton soucis d'insertion de DXF, je ne peux pas t'aider...

 

Par contre, pour le changement de système, il existe un lisp projectchange.lsp

Je ne l'ai jamais testé mais il est là : http://cadxp.com/topic/41555-resolu-comment-attribuer-un-systeme-de-projection/page__p__234231__hl__projectchange__fromsearch__1#entry234231

 

Une question par curiosité... pourquoi vouloir passer du lambert93 (la projection avec laquelle tout le monde devrait bosser il me semble!) au CC48?

 

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Pour ton soucis d'insertion de DXF, je ne peux pas t'aider...

 

Par contre, pour le changement de système, il existe un lisp projectchange.lsp

Je ne l'ai jamais testé mais il est là : http://cadxp.com/topic/41555-resolu-comment-attribuer-un-systeme-de-projection/page__p__234231__hl__projectchange__fromsearch__1#entry234231

 

Une question par curiosité... pourquoi vouloir passer du lambert93 (la projection avec laquelle tout le monde devrait bosser il me semble!) au CC48?

 

Xav

Merci pour ton Lips, je vais essayer ça.

Pour la conversion c'est parce que en TOPO ça travail en CC48!

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour ce qui est écrit en rouge, double les anti-slash: (barre oblique inversée :\\), ou remplace simplement par un slash (barre oblique : /) et ça devrait fonctionner

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour ce qui est écrit en rouge, double les anti-slash: (barre oblique inversée :\\), ou remplace simplement par un slash (barre oblique : /) et ça devrait fonctionner

 

Ca change rien Tjrs erreur de syntaxe!!

 

et sinon pour l'autre lips, je n'y arrive pas non plus.

 

Je m'y prend peut-être comme un manche...

normaement en faisant juste un copier coller des lignes de commandes dans autocad cela fonctionne!

sinon tu le copie dans un fichier du bloc note et tu changes l'extention en .lsp!

on est bien d'accord?

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Ca change rien Tjrs erreur de syntaxe!!

 

et sinon pour l'autre lips, je n'y arrive pas non plus.

 

Je m'y prend peut-être comme un manche...

normaement en faisant juste un copier coller des lignes de commandes dans autocad cela fonctionne!

sinon tu le copie dans un fichier du bloc note et tu changes l'extention en .lsp!

on est bien d'accord?

 

Merci

 

 

Heu... les vrais lispeurs te répondront mieux que moi, mais si tu copies colle ton code tel qu'il est présenté dans ton post, ça ne fonctionnera pas sans "la mise en forme" du lisp.

Les lignes du codes d'un LISP ne sont pas toutes "alignées" sur le début d'une ligne, il y a une sorte de tabulation à chaque fois! en espérant avoir été clair...

 

Bon courage!

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Lien vers le commentaire
Partager sur d’autres sites

J'ai fais un copier coller de ton code, ajuster la variable directory à un de mes chemin valable (en doublant les barres inversées) et il fonctionne sur ma bécane....

Donc pas de réponse!

Et pour l'autre lisp proposé, il faut un Autocad Map (ou peut être Civil) pour pouvoir l'utiliser: il fait appel à des commande propre à ces produits verticaux.

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

J'ai fais un copier coller de ton code, ajuster la variable directory à un de mes chemin valable (en doublant les barres inversées) et il fonctionne sur ma bécane....

Donc pas de réponse!

Et pour l'autre lisp proposé, il faut un Autocad Map (ou peut être Civil) pour pouvoir l'utiliser: il fait appel à des commande propre à ces produits verticaux.

 

 

je ne comprend ce que tu me dit!!!

"" ajuster la variable directory à un de mes chemin valable (en doublant les barres inversées)""

 

je suis sur autocad map

Lien vers le commentaire
Partager sur d’autres sites

je ne comprend ce que tu me dit!!!

"" ajuster la variable directory à un de mes chemin valable (en doublant les barres inversées)""

 

je suis sur autocad map

 

Oulà!!

Je dis que la ligne

(setq directory "C:\Users\vpeter\Documents\DXF") Dossier qui n'existe pas chez moi!

Je l'ai modifiée en par exemple

(setq directory "I:\\Depart\\BD_PARCELLAIRE")

Chemin qui est propre à mon poste et dossier que je veux traiter.

 

C'est plus clair?

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Oulà!!

Je dis que la ligne

(setq directory "C:\Users\vpeter\Documents\DXF") Dossier qui n'existe pas chez moi!

Je l'ai modifiée en par exemple

(setq directory "I:\\Depart\\BD_PARCELLAIRE")

Chemin qui est propre à mon poste et dossier que je veux traiter.

 

C'est plus clair?

 

Si Si excuse moi et merci ça marche.

Merci encore

Lien vers le commentaire
Partager sur d’autres sites

Hé hé hé,

 

J'ai fait un code (qui marche bien) pour importer des DXF sous forme de bloc :

 

DCL :

IGIR : dialog {
  label = "IGIR Multy";
  // Titre de la case
  : column {
        : row {
        : boxed_column {label ="Choisissez les DXF";
        : list_box {
           key = "LST";
           height = 15;
           width = 50;
           multiple_select = true;
           fixed_width = false;
           }
        }
     }
ok_cancel;
}
}

 

 

Lisp :

;;----------------------------------------------------------------------------------;;
;;--------------------------------- Par Vincent P. ---------------------------------;;
;; Insérer massivement des DXF sous la forme de blocs, et dans un calque spécifique ;;
;;------------------- !! Nécessité l'utilisation de IGIR.DCL !! --------------------;;
;;----------------------------------------------------------------------------------;;

(vl-load-com)

;;-
;; Routine insdxf
;;-
(defun insdxf ( chem / nom ssb n)
 (setq nom (vl-filename-base chem)
n 0)
 (if (= nil (tblsearch "layer" nom))
   (command "FCALQUE" "Nouv" nom ""))
 (if (setq ssb (ssget "_X" (list (cons 2 nom))))
   (repeat (sslength ssb)
     (entdel (ssname ssb n))
     (setq n (1+ n))
     ))
 (if (tblobjname "BLOCK" nom)
   (command "-PURGER" "BLOCS" nom "NON")
   )
 (setvar "clayer" nom)
 (command "-INSERER" chem '(0 0 0) 1 1 0)
 (princ)
 ); /defun

;;-
;; Fonction principale
;; IGIR
;;-
(defun c:IGIR (/ chem ddiag index start-lst dcl_id i n lst-nom lst lay)
 ;;;création de la liste qui sera affichée
 (setq chem (getvar "dwgprefix")
start-lst (ACAD_STRLSORT (vl-directory-files chem "*.dxf" 1))
lay (getvar "clayer")
n 0)
 ;;;chargement du fichier DCL
 (if (not (setq dcl_id (load_dialog "IGIR.dcl")))
   (progn ;Si DCL non chargé
     (alert "Le fichier DCL n'a pas été trouvé !")
     (exit)
     )
   (progn ;Si DCL chargé
     (if (not (new_dialog "IGIR" dcl_id))
(progn ;Si dialogue non présent
  (alert "la définition n'a pas été trouvée dans le fichier DCL !")
  (exit)
  )
(progn ;Si dialogue présent
  (start_list "LST")
  (mapcar 'add_list start-lst)
  (end_list)
  (action_tile "cancel" "(done_dialog 1)")
  (action_tile "accept" "(done_dialog 2)")
  (action_tile "LST" "(setq index $value)")
  ;;;Affichage de la case
  (setq ddiag (start_dialog))
  (unload_dialog dcl_id)
  (if (= ddiag 1);; Si bouton annulé choisi :
    (alert "\n Vous êtes sorti sans rien choisir !")
    )
  (if (= ddiag 2);;;Si bouton OK choisi :
    (progn
      (setq index (read (strcat "(" index ")")))
      (foreach i index
	(insdxf (strcat chem (nth i start-lst)))
	(setq n (+ 1 n))
	)
      (alert (strcat "\n" (itoa n) " DXF ont étés importés\nsous la forme de blocs!"))
      )
    )
  )
)
     )
   )
 (setvar "clayer" lay)
 (princ)
 );/defun

(setq nom_lisp "IGIR")
(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)

 

 

Les DXF sont choisis par l’utilisateur, parmi les DXF contenu dans le dossier dans lequel est enregistré le DWG où vous exécutez la commande.

Il faut donc créer au préalable un fichier DWG dans le même dossier utilisé pour ranger les DXF des girations, et dans ce DWG utiliser la commande IGIR.

 

Pensez à nommer proprement vos DXF car ces noms seront réutilisés comme noms de blocs et de calques.

 

 

 

Si ça peut aider!

Vincent P.

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

pourquoi ne pas télécharger directement les planches du cadastre en projection CC plutôt que Lambert93?

Opendata - DGFiP

 

 

Olivier

 

Et je dirais même plus que si on a un AutocadMap pourquoi ne pas prendre le format Json afin de bénéficier des données d'objet.Je l'ai fait pour mon département entier et au moins je peut faire des requêtes dessus.

J'ai d'abord utiliser Map shaper pour convertir le format Json à un format Shape car Autocad Map ne connait pas ce format Json et ensuite avec des scripts et des lisps par ci par là, j'ai monté ma base cadastrale en une journée. Bien sur, je n'ai pas les propriétaires...

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Hé hé hé,

 

J'ai fait un code (qui marche bien) pour importer des DXF sous forme de bloc :

 

DCL :

IGIR : dialog {
  label = "IGIR Multy";
  // Titre de la case
  : column {
        : row {
        : boxed_column {label ="Choisissez les DXF";
        : list_box {
           key = "LST";
           height = 15;
           width = 50;
           multiple_select = true;
           fixed_width = false;
           }
        }
     }
ok_cancel;
}
}

 

 

Lisp :

;;----------------------------------------------------------------------------------;;
;;--------------------------------- Par Vincent P. ---------------------------------;;
;; Insérer massivement des DXF sous la forme de blocs, et dans un calque spécifique ;;
;;------------------- !! Nécessité l'utilisation de IGIR.DCL !! --------------------;;
;;----------------------------------------------------------------------------------;;

(vl-load-com)

;;-
;; Routine insdxf
;;-
(defun insdxf ( chem / nom ssb n)
 (setq nom (vl-filename-base chem)
n 0)
 (if (= nil (tblsearch "layer" nom))
   (command "FCALQUE" "Nouv" nom ""))
 (if (setq ssb (ssget "_X" (list (cons 2 nom))))
   (repeat (sslength ssb)
     (entdel (ssname ssb n))
     (setq n (1+ n))
     ))
 (if (tblobjname "BLOCK" nom)
   (command "-PURGER" "BLOCS" nom "NON")
   )
 (setvar "clayer" nom)
 (command "-INSERER" chem '(0 0 0) 1 1 0)
 (princ)
 ); /defun

;;-
;; Fonction principale
;; IGIR
;;-
(defun c:IGIR (/ chem ddiag index start-lst dcl_id i n lst-nom lst lay)
 ;;;création de la liste qui sera affichée
 (setq chem (getvar "dwgprefix")
start-lst (ACAD_STRLSORT (vl-directory-files chem "*.dxf" 1))
lay (getvar "clayer")
n 0)
 ;;;chargement du fichier DCL
 (if (not (setq dcl_id (load_dialog "IGIR.dcl")))
   (progn ;Si DCL non chargé
     (alert "Le fichier DCL n'a pas été trouvé !")
     (exit)
     )
   (progn ;Si DCL chargé
     (if (not (new_dialog "IGIR" dcl_id))
(progn ;Si dialogue non présent
  (alert "la définition n'a pas été trouvée dans le fichier DCL !")
  (exit)
  )
(progn ;Si dialogue présent
  (start_list "LST")
  (mapcar 'add_list start-lst)
  (end_list)
  (action_tile "cancel" "(done_dialog 1)")
  (action_tile "accept" "(done_dialog 2)")
  (action_tile "LST" "(setq index $value)")
  ;;;Affichage de la case
  (setq ddiag (start_dialog))
  (unload_dialog dcl_id)
  (if (= ddiag 1);; Si bouton annulé choisi :
    (alert "\n Vous êtes sorti sans rien choisir !")
    )
  (if (= ddiag 2);;;Si bouton OK choisi :
    (progn
      (setq index (read (strcat "(" index ")")))
      (foreach i index
	(insdxf (strcat chem (nth i start-lst)))
	(setq n (+ 1 n))
	)
      (alert (strcat "\n" (itoa n) " DXF ont étés importés\nsous la forme de blocs!"))
      )
    )
  )
)
     )
   )
 (setvar "clayer" lay)
 (princ)
 );/defun

(setq nom_lisp "IGIR")
(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)

 

 

Les DXF sont choisis par l’utilisateur, parmi les DXF contenu dans le dossier dans lequel est enregistré le DWG où vous exécutez la commande.

Il faut donc créer au préalable un fichier DWG dans le même dossier utilisé pour ranger les DXF des girations, et dans ce DWG utiliser la commande IGIR.

 

Pensez à nommer proprement vos DXF car ces noms seront réutilisés comme noms de blocs et de calques.

 

 

 

Si ça peut aider!

Vincent P.

 

 

Salut Vincent!

 

Si ça peut aider?! ça m'a sauvé oui !!! :)

Mercu beaucoup pour le LISP !!! Nickel !!!

 

Bon week!

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

comme DemiXav je pense que ton lisp peut moi aussi "me sauver", mais lorsque je lance IGIR j'ai en retour une boite de dialogue qui s'affiche avec "la définition n'a pas été trouvée dans le le fichier DCL !".

 

J'ai enregistré le fichier DCL et LISP dans le même répertoire, je charge le lisp IGIR, tape IGIR et boite de dialogue.

 

Qu'est-ce qu je rate ? Faut-il modifier une ligne de commande pour l'accès au fichier DCL ?

 

Je précise : totalement débutant, à part le lisp "talus 3D" je n'utilise jamais de lisp.

 

Merci pour votre aide.

COME

 

La vie sans musique est tout simplement une erreur, une fatigue, un exil. »

Friedrich Nietzsche

Lien vers le commentaire
Partager sur d’autres sites

Salut Come,

 

le LISP et le DCL doivent avoir le même nom : IGIR

Avant de charger le LISP, le chemin du dossier dans lequel ils se trouvent doit être ajouté dans le dossier AutoCad "chemin de recherche de fichiers de support" (Clic droit, options, fichiers). Un simple chargement du LISP ne suffit pas.

 

En espérant avoir pu t'aider,

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Lien vers le commentaire
Partager sur d’autres sites

Salut Come,

 

le LISP et le DCL doivent avoir le même nom : IGIR

Avant de charger le LISP, le chemin du dossier dans lequel ils se trouvent doit être ajouté dans le dossier AutoCad "chemin de recherche de fichiers de support" (Clic droit, options, fichiers). Un simple chargement du LISP ne suffit pas.

 

En espérant avoir pu t'aider,

Xav

 

Super ! Merci beaucoup !

 

Effectivement cela change la vie !biggrin.gifsmile.gif

COME

 

La vie sans musique est tout simplement une erreur, une fatigue, un exil. »

Friedrich Nietzsche

Lien vers le commentaire
Partager sur d’autres sites

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é