Aller au contenu

Importer liste calque!


jalna

Messages recommandés

Bonjour,

 

Je pense que cela existe

 

Je voudrais importer une liste de calques depuis un fichier texte, excel, word.......

 

Merci

Et comme dirais le patron de sfr

+2p

-2n

 

Il est trop fort

:D :( :cool:

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Lien vers le commentaire
Partager sur d’autres sites

Plusieurs façons de faire.

Si tu sais CONCATENER sous Excel, crée une liste du genre :

calque1, calque2, calque3,...

(espaces tolérés !)

 

et lance :

-calque
N
calque1, calque2, calque3,...

 

en script ou en copier-coller dans la fenêtre de texte.

 

Easy ?!

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Merci,

As tu un exemple de concatenage (ce n'est pas mon truc)

Quelles sont les autres façons sinon

J'aimerais régler les couleurs ect......

 

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

J'ai fait une petite routine lisp qui permet d'importer d'un fichier texte, une liste de calque vers autoCAD.

 

ça se décompose en 1 fichier lisp :

 

 
; PathCC => chemin d'acces au dossier racine des routines
(setq PathCC "C:/ACADLISP/")

; PathLT => chemin d'acces au Dossier des Fichiers .LIN
(setq pathLT "C:/ACADLISP/")

(princ "\nTapez cr_cal pour creer les calques.")

(defun charge_linetype () ; Routine pour charger les types de lignes
 (setq pathfiltl (strcat PathCC "linetype.ini"))
 (setq fic2 (open pathfiltl "r"))
 (while
   (setq tl1 (read-line fic2))
   (setq tl2 (read-line fic2))
   (if (= (tblsearch "ltype" tl1) nil)
   (command "_linetype" "_l" tl1 (strcat pathLT tl2) ""))
   )
 (close fic2)
 (terpri)
 )

(defun C:cr_cal (/ Dcl_Id% Return#) ; Routine de creation des calques
 (charge_linetype)
 (setq Dcl_Id% (load_dialog (strcat PathCC "chriscad2009.dcl")))
 (new_dialog "CreationLayer" Dcl_Id%)
 (action_tile "Edit1" "(setq preflay $value)")
 (action_tile "Radio1" "(setq typlay $value)")
 (action_tile "accept" "(done_dialog 1)(creation_layer preflay typlay)")
 (action_tile "cancel" "(done_dialog 0)")
 (setq Return# (start_dialog))
 (unload_dialog Dcl_Id%)
)

(defun creation_layer (preflay typlay)
 (vl-load-com)
 (setq acadobject (vlax-get-Acad-Object))
 (setq activedocument (vla-get-activedocument acadobject))
 (setq LayerTable (vla-get-layers activedocument))
 (setq pathfilay (strcat PathCC "layer.ini"))
 (setq fic (open pathfilay "r"))
 (while
   (setq t1 (read-line fic));  t1 Nom du calque
    (setq t2 (read-line fic)); t2 Couleur du calque
    (setq t3 (read-line fic)); t3 Type de plan AutoCAD : PL TT ou DET
    (setq t4 (read-line fic)); t4 Type de ligne
    (setq t5 (read-line fic)); t5 Epaisseur du calque
    (setq t6 (read-line fic)); t6 si calque imprimé ou non

   (if (= preflay "") (setq layername t1))
   (if (/= preflay "") (setq layername (strcat preflay "-" t1)))
   (if (= t3 "TT")
     (progn
    (setq anewlayer (vla-add LayerTable layername))
    (vla-put-color anewlayer t2)
    (vla-put-linetype anewlayer t4)
    (vla-put-lineweight anewlayer t5)
    )
   )
   (if (= t3 typlay)
     (progn
    (setq anewlayer (vla-add LayerTable layername))
    (vla-put-color anewlayer t2)
    (vla-put-linetype anewlayer t4)
    (vla-put-lineweight anewlayer t5)
    )
   )
   (if (/= t6 "X")
     (vla-put-plottable anewlayer :vlax-false)
   )
 )
 (close fic)
 (terpri)
)

 

puis le fichier CHRISCAD2009.DCL pour la petite boite de dialogue (ou un autre nom, suffit de le renommer et de modifier la ligne concernée dans le lisp) :

 

 

CreationLayer : dialog {
 key = "Title";
 label = "Création de calques";//Title$ from lsp file
 initial_focus = "Edit1";
 spacer;
 : row {
   : column {
     width = 5.09;
     fixed_width = true;
     spacer;
     : text {
       key = "Prompt";
       label = "Préfixe des Calques :";//Prompt from lsp file
     }
   }
   : edit_box {
     key = "Edit1";//Edit1$ from lsp file
     edit_width = 26.42;
     fixed_width = true;
   }
 }
 spacer;
 : boxed_radio_column {
   key = "Radio1";
   label = "Type de Document AutoCAD :";
   : radio_button {
     key = "PL";
     label = "Plan de Repérage";
   }
   : radio_button {
     key = "DET";
     label = "Carnet de détails";
   }
 }
 spacer;
 
 : row {
   fixed_width = true;
   alignment = centered;
   : ok_button {
     width = 11;
   }
   : cancel_button {
     width = 11;
   }
 }
}//CreationLayer

 

ensuite il faut créer 2 fichiers a mettre dans le même dossier que le lisp (ou ailleurs en bidouillant un peu le lisp) :

 

linetype.ini qui comportera la liste des type de ligne a charger

layer.ini qui comportera la liste des calques avec leurs reglages

 

chaque fichier doit être formater dans ce sens :

 

 

 


linetype.ini :
nom du type de ligne
fichier .lin

par exemple :

AXES
ACADISO.LIN
CACHE
ACADISO.LIN
BORDURE
ACADISO.LIN
DIVISE
ACADISO.LIN
FANTOME
ACADISO.LIN
INTERROMPU
ACADISO.LIN
POINTILLE
ACADISO.LIN
TIRETPT
ACADISO.LIN

 

pour le fichier layer.ini :

 

Nom du calque
Code couleur
Type de calque => ça c'est par rapport a ma boite de dialogue soit TT, DE ou PL (TT ça apparait quelque soit le cas)
Type de ligne
Épaisseur du calque (faut multiplier par 100x la valeur indiqué sur AutoCAD pour que ça passe en vlisp)
Imprimer ou pas => X= calque imprimé vide=calque non imprimé

exemple de fichier layer.ini :
AXES
1
DET
AXES
9
X
COTATION
3
TT
CONTINUOUS
9
X
HACHURE
8
TT
CONTINUOUS
9
X
TEXTE
5
DET
CONTINUOUS
9
X
FEN
9
TT
CONTINUOUS
20

JD
150
PL
AXES
20
X

 

Pour l'instant j'ai pas encore eu le temps d'optimiser le principe de la routine, mais ça me suffit pour mon taf.

 

petit fichier zip avec les 4 fichiers Fichier routine creation calque.zip

 

pensez à modifier les 2 lignes PathCC et PathLT, indiquez le dossier où sont les routines et les fichier .LIN

 

Voila ma petite contribution

Lien vers le commentaire
Partager sur d’autres sites

Salut!

 

Voila, super Chrisfs je vais l'adapter!!

Merci à tous

Bon WE

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Lien vers le commentaire
Partager sur d’autres sites

Oh ben oui !

Pourquoi faire simple ?

:cool:

 

Oui, c'est vrai que c'est un peu complexe, mais bon, j'aime bien me prendre la tête :P et c'est adaptable suivant les chartes graphiques demandées sur les differents chantiers.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

salut Chrisfs

 

Cool ton script pour les calques, je cherchais cela depuis un bout de temps.

 

Par contre, dans ton script, je voudrais savoir comment insérer une valeur pour que je puisse attribuer dans ton fichier layer.ini l'épaisseur par defaut pour les calques.

 

Car ma configuration de plumes est indépendantes à l'épaisseur de mes calques.

 

Merci et beau travail pour ton script.

 

a+

Lien vers le commentaire
Partager sur d’autres sites

oui, j'avais pas pensé à ce cas :( .

 

Voici les valeurs a mettre :

 

-3 = "ParDefaut"

 

-2 = "DuBloc"

 

-1 = "DuCalque"

 

ensuite les épaisseurs : 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70, 80, 90, 100, 106, 120, 140, 158, 200, 211

 

merci pour le compliment, le plus dur a été de le convertir en lisp, car à la base je suis plus fan du VBA, mais, je suis en train de passer toutes mes routines VBA en Lisp, et c'est pas simple de se replonger dans le code...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Pas de quoi !!

C'est en partageant comme tu fais que l'on peut tout améliorer.

Merci pour l'info, je vais pouvoir finaliser tout cela.

 

Une autre idée en passant, ça serait de pouvoir intégrer aussi la création d'une ligne en même temps sur les calques crées pour éviter une purge fatale du dessin ;)

 

A+

Lien vers le commentaire
Partager sur d’autres sites

oui, on en rêve, lisp le fait...

 

en cas de purge, je relance la routine, c'est plus simple :) et ça remets tous d'équerre si quelqu'un à bidouillé les propriétés des calques.

 

quand j'aurais un peu de temps, je rajouterai quelques fonctions lisp qui puisse m'alléger le taf de mettre les plans conforme au centaines de chartes graphique qu'il puisse exister (comme mettre les cotes dans le calques "cotation", les textes dans "texte", remettre tout en "ducalque" etc...), mais le boulot me prends trop de temps pour l'instant !!!

Lien vers le commentaire
Partager sur d’autres sites

:D

C'est ce que je pensais <acronym class=dict title=

 

C'étais pour juste de données des idées, c'est sûr que tu ne peux pas faire un script par demande personnelle ;)

 

Et pour la purge, c'est justement ce que je fais, je relance le script. En même temps, j'ai crée un bouton pour y accéder plus rapidement.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Moi j'ai fait un ptit truc simple.... Peut être pas aussi complet que vous mais ca marche bien.

 

Voici le code Lisp

 

(defun c:clq (/ fichier f data ligne nom coul typline epline)

 (command "-purger" "tout" "tout" "o")
 
 (if (not (tblsearch "LTYPE" "AXES"))
   (command "-TYPELIGNE" "CH" "AXES" "acadiso.lin" "")
   )
 (if (not (tblsearch "LTYPE" "FANTOME"))
   (command "-TYPELIGNE" "CH" "FANTOME" "acadiso.lin" "")
   )
 (if (not (tblsearch "LTYPE" "CACHE"))
   (command "-TYPELIGNE" "CH" "CACHE" "acadiso.lin" "")
   )

   (command "-calque" "n" "0,AXE,CACHE,CADRE,COTATION,COTATION-ANG,Defpoints,DESSIN,DESSIN FIN,EPURE,FENETRE PAPIER,HACHURE,INDICE A,INDICE B,MODIFICATION,REFRACTAIRE,SOUDURE,TEXTE,TEXTE-ANG,TEXTE CARTOUCHE,TITRE,TITRE-ANG,TRAIT FIN CARTOUCHE" "")
 
;DEFINIR LA DESTINATION D'ENREGISTREMENT
 
(if (eq dirclq nil)
 (setq dirclq "D:\\Lisp\\Calque SGG\\Calque SGG.data")
 )
 (setenv "mem" dirclq)  
(if (or (EQ "P" (setq dirclq (getstring (strcat "\nIndiquer l'emplacement du fichier de lecture des calques ou [Parcourir] <"(getenv "mem")">: "))))
(EQ "p" dirclq))
 (progn
   (if (not (setq dirclq (getfiled "Selectionner le fichier texte..." "C:\\Documents and Settings\\F6134717\\Desktop\\" "data" 8)))
     (progn
   (setq dirclq (getenv "mem")))))
   (setq dirclq (getenv "mem"))
 )
 (princ dirclq)

;DEFINIR LA DESTINATION D'ENREGISTREMENT (FIN)
 
 (setq f (open dirclq "r"))
(while (setq data (read-line f))
  (setq ligne (read (strcat "(" data ")")))
  (setq nom (nth 0 ligne))
  (setq coul (nth 1 ligne))
  (setq typline (nth 2 ligne))
  (setq	epline (nth 3 ligne))
  (setq trac (nth 4 ligne))
  (command "-calque" "CO" coul nom "TL" typline nom "EP" epline nom "T" trac nom "")
  (princ "\n")
  (princ ligne)
  (princ "\n"))
 (close f)) 

 

 

et voici le fichier comprenant les propriétés de calque (Calque SGG.data)

 

 
"0"			7	"CONTINUOUS"	"0.13"	"T"
"AXE"			1	"AXES"		"0.15"	"T"
"CACHE"			2	"CACHE"		"0.2"	"T"
"CADRE"			1	"CONTINUOUS"	"0.15"	"T"
"COTATION"		1	"CONTINUOUS"	"0.15"	"T"
"COTATION-ANG"		1	"CONTINUOUS"	"0.15"	"T"
"Defpoints"		7	"CONTINUOUS"	"0.13"	"A"
"DESSIN"			3	"CONTINUOUS"	"0.5"	"T"
"DESSIN FIN"		1	"CONTINUOUS"	"0.15"	"T"
"EPURE"			4	"CONTINUOUS"	"0.15"	"A"
"FENETRE PAPIER"		7	"CONTINUOUS"	"0.13"	"A"
"HACHURE"			6	"CONTINUOUS"	"0.15"	"T"
"INDICE A"		1	"CONTINUOUS"	"0.15"	"T"
"INDICE B"		1	"CONTINUOUS"	"0.15"	"T"
"MODIFICATION"		5	"CONTINUOUS"	"0.15"	"A"
"REFRACTAIRE"		4	"FANTOME"		"0.15"	"T"
"SOUDURE"			6	"CONTINUOUS"	"0.15"	"T"
"TEXTE"			2	"CONTINUOUS"	"0.35"	"T"
"TEXTE-ANG"		2	"CONTINUOUS"	"0.35"	"T"
"TEXTE CARTOUCHE"		1	"CONTINUOUS"	"0.15"	"T"
"TITRE"			50	"CONTINUOUS"	"0.6"	"T"
"TITRE-ANG"		50	"CONTINUOUS"	"0.6"	"T"
"TRAIT FIN CARTOUCHE"	2	"CONTINUOUS"	"0.15"	"T"

 

Fred

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Lien vers le commentaire
Partager sur d’autres sites

oui, y a plein de méthodes pour arriver au même résultat. Dans mon taf, j'ai des type de ligne personnalisés dans différents fichiers .lin (donc faut toutes les charger avant).

 

Par contre, je vais regarder ton lisp pour la partie concernant le "formatage" de tes fichiers de réglages de calques (1 ligne par calque, c'est mieux que moi).

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...

Bonjour,

 

est-ce que quelqu'un utilise la méthode de Arcadsk

 

elle semble me convenir, mais le fichier SGG.data semble être mal formaté. J'ai besoin de mettre rapidment près de 200 calques avec nom, couleur, type de ligne description. J'ai essayé plusieurs methodes avec excel mais la description et le type de ligne ne marche pas...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Si tu as une version complète, voici un petit Lisp qui devrait faire l'affaire:

Oups, j'avais mal compris... :unsure:

Tu peux essayer avec ce fichier Excel, les types de lignes doivent être chargés dans le dessin avant d'y coller le script.

Modifié par bryce
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é