Aller au contenu

un peu d\'aide


Messages recommandés

Posté(e)

salut a tous

je suis sur autocad 2005

ce lisp sert a transformer un dxf en dwg automatiquement

 

qq1 peux m'aider sur ce lisp il ne marche pas.

 

; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(defun NOEXT(chaine)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
(setq ct 1 len (strlen chaine))
(while  (and    (/= "." (substr chaine ct 1))
	(<= ct len)
);fin and
(setq ct (1+ ct))
);fin while
(substr chaine 1 (- ct 1))
);fin defun

;****************************************************************************************
;**************       PERMET DE CHANGER DES FICHIERS        *****************************
;*************		      DXF EN DWG	             ****************************
;************  		                                      ***************************
;***********                                                *************************
;****************************************************************************************

;------------------------------------------------------------------------
(defun C:chdxf();/ rep dos s f ligne lst nom  
;------------------------------------------------------------------------
(initget "Oui Non")
(setq choix (getkword "\nVoulez-vous un repertoire specifique (Oui ou Non) : "))
(if	(= choix "Oui")
(progn
	(setq	rep (getstring T "\nRépertoire de recherche: ")
		
	)
);fin progn
(progn
	(setq	rep (getvar "dwgprefix")
		lg  (strlen rep)
		rep (substr rep 1 (- lg 1))	
		
	)
);fin progn
);fin de if	

(dos_command  (strcat "dir " rep "\\*.dxf/b/on>" rep "\\listdxf") 8)


(princ)
(setq	lst nil
 	s   (open (strcat rep "\\dxf.scr") "w")
	f   (open (strcat rep "\\listdxf") "r")
);fin setq
(while  (setq ligne (read-line f))
	(setq lst (append lst (list ligne)))
);fin while
(foreach x lst
	(setq   nom    (NOEXT x))
	(write-line "_NEW" s)
	(write-line (strcat nom "=") s)
	(write-line "_DXFIN" s)
	(write-line (strcat rep "\\" nom) s)
	
	(write-line "zoom et" s)
	(write-line "FILEDIA 1" s)
	(write-line "CMDDIA 1" s)
	(write-line "CMDECHO 1" s)
	(write-line "ATTREQ 1" s)
	(write-line "SAUVENOM 2000" s)
	;(write-line "2000" s)
	(write-line (strcat rep "\\" nom) s)
);fin foreach
(princ "\n")

(close s) (close f)

(setq ecr (strcat rep "\\dxf"))
(command "script" ecr)
(princ)

);fin defun

 

 

Posté(e)

Pour rebcao

un ; sert de rem, c'est à dire que la ligne devient un commentaire

 

Pour dol

Pourquoi faire un lisp ? Il existe le programme Batch drawing converter des migrations assistance fournit avec le cd d'autocad.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci Patrick_35,

 

même si je ne suis pas très assidu sur les questions LISP, je suis tout de même un LISPeux dinosaurien... Je sais à quoi sert le ;...

 

mais si j'analyse le source la fonction ( DEFUN C... est attendu puisque à la fin il y a la parenthèse fermant du ) ; DEFUN

 

Désolé, mais la parenthèse à la fin devrait aussi se trouver derrière un ; ou alors supprimer le ; devant la fonction DEFUN au début et éventuellement devant INIGET...

 

Christian

 

[Edité le 29/11/2004 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Pourquoi faire un lisp ? Il existe le programme Batch drawing converter des migrations assistance fournit avec le cd d'autocad.

 

@+

 

Je l'avais téléchargé sur le net, sur tes conseils, et c'est un super outil.

 

Il faut être muni de son numéro de série (ou d'autorisation, enfin un numéro, ou avoir un programme installé, je ne sais plus).

Je recherche

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Dol,

 

Je n'ai pas essayé de faire rouler ta routine mais je peux te dire qu'il y a vait quelques coquilles. Comme rebcao l'a mentionné, le fait que defun se trouve sur la même ligne qu'un ; qui le précède, c'est comme si le defun n'avait jamais été écrit. Il y a d'autres coquilles du genre.Le initget a été amélioré. On a placé la déclaration de variables locales en commentaires (pourquoi?) Je t'envoie une version corrigée. Fais attention au mélange d'expressions anglaises/françaises.

 

;------------------------------------------------------------------------

(defun C:chdxf()

;/ rep dos s f ligne lst nom

;------------------------------------------------------------------------

(initget "Oui Non")

(setq choix (getkword "\nVoulez-vous un repertoire specifique [Oui/Non] : "))

(if (not choix) (setq choix "Oui"))

(if (= choix "Oui")

(progn

(setq rep (getstring T "\nRépertoire de recherche: "))

)

(progn

(setq rep (getvar "dwgprefix"))

(setq lg (strlen rep))

(setq rep (substr rep 1 (- lg 1)))

))

 

(dos_command (strcat "dir " rep "\\*.dxf/b/on>" rep "\\listdxf") 8)

 

 

(princ)

(setq lst nil)

(setq s (open (strcat rep "\\dxf.scr") "w"))

(setq f (open (strcat rep "\\listdxf") "r"))

(while (setq ligne (read-line f))

(setq lst (append lst (list ligne)))

);fin while

(foreach x lst

(setq nom (NOEXT x))

(write-line "_NEW" s)

(write-line (strcat nom "=") s)

(write-line "_DXFIN" s)

(write-line (strcat rep "\\" nom) s)

 

(write-line "zoom et" s)

(write-line "FILEDIA 1" s)

(write-line "CMDDIA 1" s)

(write-line "CMDECHO 1" s)

(write-line "ATTREQ 1" s)

(write-line "SAUVENOM 2000" s)

;(write-line "2000" s)

(write-line (strcat rep "\\" nom) s)

);fin foreach

(princ "\n")

 

(close s) (close f)

 

(setq ecr (strcat rep "\\dxf"))

(command "script" ecr)

(princ)

 

);fin defun

 

Serge

 

Posté(e)

Bonjour à tous

 

pour Tramber

Il me semble qu'il suffit d'avoir Autocad d'installé pour lancer les outils de migration

Voici un lien pour la version 2004

 

Pour Rebcao

Excuse-moi si je t'ai un peu froissé. Je pensais que tu ne connaissais pas

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é