CADsite forum

AutoCAD => Autolisp => Topic gestart door: Atwist op di 20 10 2009, 19:04:53

Titel: Lisp voor open en save bestand (opgelost)
Bericht door: Atwist op di 20 10 2009, 19:04:53
Hallo forumleden,

Ik zou graag een bestand willen kopieeren naar de map van de geopende tekening.
Weet iemand hier een oplossing voor.

Alvast bedank voor de moeite.

Atwist
Titel: Re:Lisp voor open en save bestand
Bericht door: roy_043 op wo 21 10 2009, 10:35:38
Deze lisp opent de explorer in de map waar de tekening staat:(defun c:Explore ( / )
(if (= (getvar "dwgtitled") 1)
;; (startapp (strcat "c:/WINDOWS/explorer.exe " (getvar "dwgprefix")))
(startapp (strcat "explorer.exe /n,/e," (getvar "dwgprefix")))
(alert "Save drawing first")
)
(princ)
)
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op wo 21 10 2009, 13:14:42
Roy,

Dank voor je reactie.

Deze kende ik al maar wat ik  zoek is iets dat ik met 1 druk op de knop het bestand naar de map van de geopende tekening kopieerd.

Atwist
Titel: Re:Lisp voor open en save bestand
Bericht door: sschevers op wo 21 10 2009, 15:09:31
Atwist,

check de volgende http://www.cadtutor.net/forum/showthread.php?t=40290 (http://www.cadtutor.net/forum/showthread.php?t=40290) voor een uitleg voor de filecpoy

greetz,

stephan
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op wo 21 10 2009, 18:35:42
Stephan,

Dank voor je reactie.
Snap alleen niet wat er met deze VLX code word bedoeld en waar moet ik deze dan neer zetten.
Ik hoor het graag.

Atwist
Titel: Re:Lisp voor open en save bestand
Bericht door: sschevers op do 22 10 2009, 09:06:49
De code kun je opnemen in een eigen functie zoals Roy als voorbeeld geeft. Met vlx code benader je de vba  engine en heb je wat extra functionaliteit tot je beschikking.

greetz, stephan
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op do 22 10 2009, 13:34:21
Stephan,

Dank voor je uitleg.
Maar ik denk dat ik mijn dag niet heb want ik snap het nog steeds niet.

Titel: Re:Lisp voor open en save bestand
Bericht door: JMD op do 22 10 2009, 17:04:11
Dag,

bedoel je zoiets:

(defun C:os ()
(setq dwgnaamext (getvar "dwgname"))
(setq naamlengtetot (strlen dwgnaamext))
(setq naamlengte (- naamlengtetot 4))
(setq dwgnaam (substr dwgnaamext 1 naamlengte))
(setq dwgnaam_n.dwg (strcat "kopie" " " dwgnaam ".dwg"))
(setq dwgpadnaam_n.dwg (strcat (getvar "dwgprefix") dwgnaam_n.dwg))
(if (/= dwgpadnaam_n.dwg (findfile dwgnaam_n.dwg))
     (progn
      (command "saveas" "" dwgpadnaam_n.dwg)
      (alert "Bestand opgeslagen projectmap")
     )
     (progn
      (alert "Dit bestand bestaat al. Het bestand is NIET opnieuw opgeslagen!")
     )
)
(command "_close" "y")
)

Gr JMD
Titel: Re:Lisp voor open en save bestand
Bericht door: roy_043 op do 22 10 2009, 17:05:48
Bijlage: CopyFileToDwgPath.lsp
Het bestand bevat 3 voorbeeldfuncties.
Als je CopyFileToDwgPath achter een werkbalk-knop wilt zetten dan moet de lisp op de bekende manier worden geladen (Startup Suite of acaddoc.lsp).

Getest op Bricscad 10.1.7 (trial)
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op do 22 10 2009, 18:31:22
Roy,

Dit is net wat ik zoek, ik heb alleen 1 probleem.
Als ik het bestand "clientsettings" (deze komt ook van jou hand) kopieer met de LISP dan staat deze netjes in de map van de tekening maar de naam is dan "lientsettings" dus de "c" is weg.
Weet jij misschien hoe dit kan.

Atwist
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op do 22 10 2009, 19:35:21
JMD,

Ik heb jou tip net getest maar het werkt bij niet.

Atwist
Titel: Re:Lisp voor open en save bestand
Bericht door: roy_043 op do 22 10 2009, 21:04:58
Citaat van: Atwist op do 22 10 2009, 18:31:22... de naam is dan "lientsettings" dus de "c" is weg. Weet jij misschien hoe dit kan.
Ik vermoed dat je ergens een typefout hebt gemaakt.
<EDIT>Herstel: een typefout is eigenlijk onwaarschijnlijk. Het bestand wordt immers gevonden...</EDIT>
Onderstaande code werkt bij mij:
(defun c:voorbeeld4 ( / )
(CopyFileToDwgPath "c:/Documents and Settings/ClientSettings.lsp" nil) ; nil: do not overwrite
)

(defun c:voorbeeld5 ( / )
(CopyFileToDwgPath "c:\\Documents and Settings\\ClientSettings.lsp" T) ; T: overwrite
)


Geef anders even aan hoe jij CopyFileToDwgPath aanroept.
Titel: Re:Lisp voor open en save bestand
Bericht door: roy_043 op do 22 10 2009, 21:16:45
Meteen maar een extra testje. Kopieer deze regel naar de commando-regel en druk op enter:
(substr "c:\\Documents and Settings\\ClientSettings.lsp" (+ (strlen (vl-filename-directory "c:\\Documents and Settings\\ClientSettings.lsp")) 2))
Het resultaat moet "ClientSettings.lsp" zijn.
Titel: Re:Lisp voor open en save bestand
Bericht door: Atwist op vr 23 10 2009, 15:24:13
Roy,

Ik heb voorbeeld 2 verwerkt in mijn toolbutton dat de "c" weg is heb ik als volgt opgelost:
ik gebruik nu een extra letter =eerste letter van de klant dus heb bv "Aclientsettings" voor klant A enz
in de map van de tekening komt nu netjes "clientsettings"te staan zo kan ik voor elke klant de layersettings maken.
kortom het werk perfect.

Ik dank je voor de gedane moeite.

Atwist
Titel: Re:Lisp voor open en save bestand (opgelost)
Bericht door: roy_043 op vr 23 10 2009, 17:26:44
Beste Atwist,

Omdat ik het graag precies wil weten: Probeer dit toch eens:
Citaat van: roy_043 op do 22 10 2009, 21:16:45
Meteen maar een extra testje. Kopieer deze regel naar de commando-regel en druk op enter:
(substr "c:\\Documents and Settings\\ClientSettings.lsp" (+ (strlen (vl-filename-directory "c:\\Documents and Settings\\ClientSettings.lsp")) 2))
Het resultaat moet "ClientSettings.lsp" zijn.

Jouw oplossing vind ik een vreemde workaround.

Bijlage: CopyFileToDwgPath-B.lsp
Hierbij moet het probleem van de verdwijnende letter niet optreden.
Titel: Re:Lisp voor open en save bestand (opgelost)
Bericht door: Atwist op vr 23 10 2009, 18:25:16
Roy,

Ik ga deze optie's even proberen, ik hou je op de hoogte.

Atwist