FastFiber

Lisp voor open en save bestand (opgelost)

Gestart door Atwist, di 20 10 2009, 19:04:53

Vorige topic - Volgende topic

Atwist

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
Atwist

AutoCad 2008.

roy_043

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)
)

Atwist

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
Atwist

AutoCad 2008.

sschevers

Atwist,

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

greetz,

stephan

Atwist

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
Atwist

AutoCad 2008.

sschevers

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

Atwist

Stephan,

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

Atwist

AutoCad 2008.

JMD

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

roy_043

#8
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)

Atwist

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
Atwist

AutoCad 2008.

Atwist

JMD,

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

Atwist
Atwist

AutoCad 2008.

roy_043

#11
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.

roy_043

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.

Atwist

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
Atwist

AutoCad 2008.

roy_043

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.