Aller au contenu

Help pour traduction sous autocad 2013


Messages recommandés

Posté(e)

j'ai trouvé un super lisp de traduction des mots français en anglais mais le problème qu'il ne fonction pas tjs traduire une seul mot parmis plusieurs mots que sélectionné sous autocad 2013 et ma deuxième problème c'est que j'ai des centaines des mots que je dois intégrés dans ce lisp ,est ce que quelqu'un à une méthodes très rapide pour que ce lisp doit être liées par ce fichier excel que j'ai déjà préparer pour la traduction des centaines des mots vers l'anglais j'explique quand ce sélectionne un plan sous autocad 2013 , il se reliée avec le fichier excel et traduire des phrases simlplement .

voila ce super lisp :

 

defun c:traduc (/ l1 l2 ss n txt)

(setq l1 '("vanne" "filtre") ; liste à compléter

l2 '("valve" "filter") ; liste à compléter dans le même ordre

)

(if (setq ss (ssget '((0 . "MTEXT"))))

(repeat (setq n (sslength ss))

(setq txt (entget (ssname ss (setq n (1- n)))))

(if (setq pos (vl-position (cdr (assoc 1 txt)) l1))

(entmod (subst (cons 1 (nth pos l2)) (assoc 1 txt) txt))

)

)

)

(princ)

)

0 +-

Posté(e)

Salut,

 

Plutôt que de lire les données dans un fichier Excel, je te propose d'utiliser plutôt un fichier .csv.

Il est toujours plus simple et surtout beaucoup plus rapide de lire un fichier texte. Il te suffit donc d'enregistrer ton fichier Excel au format .csv pour utiliser la routine ci-dessous.

 

Cette routine utilise le mécanisme de "precomputation" expliqué ici qui permet de spécifier et lire le fichier csv uniquement au premier appel de la commande TRADUC.

 

(defun translationData ()
 (eval
   (list
     'defun
     'translationData
     '()
     (if (setq filename (getfiled "Ficher CSV" "" "csv" 0))
(list
  'quote
  ((lambda (/ sep file line ind lst)
     (setq sep	(vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList")
	   file	(open filename "r")
     )
     (while (setq line (read-line file))
       (if (setq ind (vl-string-search sep line))
	 (setq lst (cons (cons (substr line 1 ind) (substr line (+ ind 2))) lst))
       )
     )
     (close file)
     lst
   )
  )
)
'()
     )
   )
 )
 (translationData)
)

(defun c:traduc	(/ ss n elst txt tr)
 (if (translationData)
   (if	(setq ss (ssget '((0 . "*TEXT"))))
     (repeat (setq n (sslength ss))
(setq elst (entget (ssname ss (setq n (1- n))))
      txt  (cdr (assoc 1 elst))
)
(if (setq tr (vl-member-if '(lambda (x) (= (car x) txt)) (translationData)))
  (entmod (subst (cons 1 (cdar tr)) (assoc 1 elst) elst))
)
     )
     (prompt "\nAucun texte multiligne sélectionné.")
   )
   (prompt "\nAucun fichier de données spécifié.")
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci infiniment mr gile pour la modification il est bien fonctionnel votre lisp ,est ce que vous pouvez ajouter aussi à coté les MTXT , les simple TXT aussi .

Posté(e)

Bonsoir Mr gile; j'ai appliqué le lisp sur des textes et il est fonctionnel parfaitement mais j'ai trouve des problème au niveau des phrases complexe par exemple quand je sélectionne la phrase : flexible calorifuge Ø160 il ne veut pas traduire la phrase ) il traduire simplement les mots comme flexible et calorifuge .

est ce qu'il y a une solution a ce problème et excuse moi de te dérangé c'est très importante pour mon travail

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é