Presse papier et LISP

Fermé
Polo - Modifié par Polo le 11/01/2013 à 13:19
 Polo - 14 janv. 2013 à 11:47
Bonjour,

Je cherche à copier (en LISP) le chemin et le nom fichier en cours dans le presse papier, puis idéalement changer l'extension en txt.

Je m'explique :
Je suis sur un dessin autocad «c:\polo\projets\mon_dessin.dwg »
Je lance mon lisp "verif.lsp"
J'ouvre une autre application excel, notepad...
Je colle.

En vba ça donne ceci:

Sub verif() 
Nom = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name 
Nom = Left(Nom, Len(Nom) - 4) 
Nom = Nom & "txt" 
Range("a1").Value = Nom 

Set Data = New DataObject 
Data.SetText Nom 
Data.PutInClipboard 
End Sub 


Comment traduire ceci en LISP?

Merci de votre aide

4 réponses

Up! s'il vous plaît
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
11 janv. 2013 à 20:32
Regarde un peu sur internet, il y a déjà des discussions là-dessus, même si le langage Lisp n'est quand même pas trop fait pour ce genre de manipulations...

copy to the clipboard via lisp : http://www.theswamp.org/index.php?topic=21764.0
0
Merci KX pour ta réponse, j'avais en effet déjà trouvé cet exemple et d'autre d'ailleurs mais malheureusement je n'est pas réussi à l'adapter comme dans l'exemple en vba ci-joint.

C'est la raison pour laquelle j'ai poster ici... dans l'espoir qu'un lispcien sache me faire la conversion.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
11 janv. 2013 à 21:46
Les "lispcien" sont plutôt rares ici, surtout pour manipuler Lisp d'une manière non pure comme ça. Mais puisque tu sais coder ce que tu veux en VBA (ou dans un autre langage), tu pourrais faire un programme externe et l'appeler en Lisp avec call-system ou une commande de ce genre.
0
Bonsoir,

Dans le lien donné par KX se trouve la solution.

Cette fonction place un texte dans le presse papier.
(defun _SetClipBoardText ( text / htmlfile result )
(vl-load-com)
    (setq result
        (vlax-invoke
            (vlax-get
                (vlax-get
                    (setq htmlfile (vlax-create-object "htmlfile"))
                   'ParentWindow
                )
               'ClipBoardData
            )
           'SetData
            "Text"
            text
        )
    )

    (vlax-release-object htmlfile)

    text

)


Dans Autocad tu charges ce lisp et tu executes cette ligne de commande:
( _SetClipBoardText "c:\polo\projets\mon_dessin.dwg ")

Dans Notepad
Edition/Coller (ou Ctrl V)

Et voilà.
A+
0
Désolé je réponds tardivement... Merci à vous 2
0