Aller au contenu

Remettre en forme un Lisp de CadXp


Messages recommandés

Posté(e)

Bonjour,

 

Tout le monde c'est rendu compte que lorsque on publie un code (dans les balises appropriées ;) ),

des lignes vides s'intercalent systématiquement pour chaque lignes :mad:

 

Bon quand le code est court, c'est pas trop gênant, mais quand il commence à être conséquent, la molette de défilement tourne à plein régime :P

 

Donc je vous propose un bout de code tout simple, sans grande prétention, pour remédier à ce petit inconvénient du forum.

 

Donc après avoir fait un copier-coller du code et sauvegarder celui ci dans un fichier .lsp , il vous suffira d'appliquer ce petit correctif qui suit.

[surligneur]IMPORTANT: La 1ere ligne de VOTRE fichier lisp NE DOIT PAS ETRE une ligne VIDE [/surligneur]

Ceci justement pour la bonne synchronisation des suppressions des lignes vides. ;)

 

((lambda ( / file_name f_open id_line f_new_open)
(setq file_name (getfiled "Nom du fichier lisp à corriger ?: " "" "lsp" 0))
(if (null file_name) (exit))
(if (findfile file_name)
	(progn
		(setq
			f_open (open file_name "r")
			id_line 0
			fnew_open (open (strcat (vl-string-right-trim "lsp" file_name) "by-CadXp-corrected.lsp") "w")
		)
		(while (setq line_char (read-line f_open))
			(setq id_line (1+ id_line))
			(if (not (zerop (rem id_line 2)))
				(write-line line_char fnew_open)
			)
		)
		(close fnew_open)
		(close f_open)
	)
)
(princ (strcat "\nLe fichier \"" (strcat (vl-string-right-trim "lsp" file_name) "by-CadXp-corrected.lsp") "\" a été créé"))
(prin1)
))

 

Il n'y a plus qu'a faire glisser ce code dans la fenêtre graphique quand vous voudrez remettre en forme un lisp issu de CadXp.

Je l'ai nommé CadXp-Corrected.lsp pour l'enregistrement afin de le retrouver facilement, mais vous faites ce que vous voulez...

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

  • 8 mois après...
Posté(e)

Salut,

 

Je propose aussi ma solution (.NET)

 

- télécharger RemoveLineFeedsInClipboardContent.zip ;

- extraire RemoveLineFeedsInClipboardContent.exe directement sur le bureau (ou faire un raccourci).

 

Quand vous copiez un code sur CADxp, double-cliquez sur l'exe (ou sur le raccourci) avant de coller le code.

 

Le code de l'exe

using System;
using System.Text.RegularExpressions;
using System.Windows;

namespace RemoveLineFeedsInClipboardContent
{
   class Program
   {
       [sTAThread]
       static void Main()
       {
           if (Clipboard.ContainsText())
           {
               try
               {
                   string content = Clipboard.GetText();
                   content = Regex.Replace(content, "(\r\n){2}", "\r\n");
                   Clipboard.SetText(content);
               }
               catch { }
           }
       }
   }
}

 

PS : j'ai oublié de dire, le Framework .NET version 3.0 ou supérieur est requis (le 3.5 est installé automatiquement avec la AutoCAD 2010, le 4.0 avec 2012).

RemoveLineFeedsInClipboardContent.zip

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

Posté(e)

Salut à tous,

 

Sinon pour ceux qui bossent avec Notepad++, et oui il y en a encore .....tongue.gif

 

Le texte en Sélection :

Menu TextFX > TextFX Edit > Delete Blank Lines

 

 

Et pour installer le plugin

 

Menu Compléments > Plugin Manager > Show Plugin Manager

 

Et cocher le plugin TextFx > Install

 

 

Voilou @+

Dessinateur 2D / 3D Infographiste

En recherche de poste sur la région du grand Lille.

 

Autocad, Allplan, Microstation, Sketchup.

Photoshop, Illustrator, Artlantis.

Posté(e)

L'avantage de ma solution, c'est qu'elle ne supprime pas toutes les lignes vides.

Si l'auteur du code a mis volontairement une ligne vide (pour la lisibilité ou, plus important, pour une validation dans un script) l'ancien CADxp (mais aussi d'autres sites comme le blog de Kean Walmsley) rajoutait une ligne vide supplémentaire. Seule cette ligne supplémentaire est supprimée par RemoveLineFeedsInClipboardContent.

 

Exemple avec ce code :

(defun div (x y / *error*) ; 'localisation' de la fonction *error*


 ;; redéfinition de la fonction*error*  (modification du message)

 (defun *error* (msg)

   (princ (strcat "\nErreur dans la fonction div: " msg))

   (princ)

 )


 ;; expressions de la fonction principale

 (/ x (float y))

)

 

Résultat, les sauts de ligne avant les commentaires sont conservés :

(defun div (x y / *error*) ; 'localisation' de la fonction *error*

 ;; redéfinition de la fonction*error*  (modification du message)
 (defun *error* (msg)
   (princ (strcat "\nErreur dans la fonction div: " msg))
   (princ)
 )

 ;; expressions de la fonction principale
 (/ x (float y))
)

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

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é