FastFiber

OPGELOST - .lsp -> .fas met zelfde bestandsdatum

Gestart door gery, di 13 12 2016, 13:15:05

Vorige topic - Volgende topic

cadtools@gmail.com

#15
Ik snap niet waarom je dit zo ingewikkeld wil doen? Klinkt onhandig.
Wanneer je .vlx project maakt in vlisp, de compilatie start, dan worden alle .lsp bestanden eerst omgezet naar .fas. En waarom gebruikt je niet .vlx als je toch met meerdere .fas bestanen lijkt te willen gaan werken?
(Misschien heb ik ergens overheen gelezen..)

Ps.op dit forum onder sectie .vlx maken staan de stappen beschreven

EddyBeerke

#16
Ik vraag mij af wat het eigenlijke doel  is.
Ik gebruik vele lisp bestanden die worden aangeroepen en of geladen via een .mnl
Als ik "mijnmenu.CUIx" laad dan wordt "mijnmenu.mnl" megeladen waar alle instructies staan voor de goede werking van het menu.
Hierin zit zelfs een beveiliging met een .vlx die geladen en uitgevoerd wordt.
Is het geen PC van de zaak dan werkt het menu niet, of je moet een wachtwoord ingeven.

Hierdoor moet ik niet telkens een nieuwe .fas / .vlx of andere versies te maken en pas ik alleen de lisp aan (nieuwe versie) en de verwijzing naaar de lisp in de .mnl

Aanvulling:
Als je ook nog de thema's van AutoCAD wil ondersteunen dien je twee .dll's te maken.
In deze .dll's staan alleen de icons die jou menu gebruikt.
1 met "mijnmenu.dll" voor het donkere thema en 1 met "mijnmenu_light.dll" voor het lichte thema.
Je kunt hier http://www.angusj.com/resourcehacker/ voor gebruken.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

#17
@gery:
Ik herinner mij uit een andere context dat AutoCAD soms struikelt of bepaalde lijsten.
Probeer bijv. dit:
(dos_touch "C:/Downloads/1.txt" '(2016 12 12) '(11.0 00))

Reimer

Roy, je zegt 'Probeer bij. dit:' maar geeft volgens mij dan dezelfde code opnieuw.
Wat zou een alternatief zijn dat autocad wel snapt?

Reimer
(ik ben gewoon nieuwsgierig)

gery

Citaat van: roy_043 op vr 16 12 2016, 15:46:04Ik herinner mij uit een andere context dat AutoCAD soms struikelt of bepaalde lijsten.
Probeer bijv. dit:
(dos_touch "C:/Downloads/1.txt" '(2016 12 12) '(11.0 00))

Ook dit werkt niet.
AutoCAD 2020 - Windows 10

roy_043

#20
Misschien dit:
(dos_touch "C:/Downloads/1.txt" '(2016.0 12.0 12.0) '(11.0 0.0 0.0 0.0))

gery

Citaat van: roy_043 op za 17 12 2016, 11:00:48Misschien dit:
(dos_touch "C:/Downloads/1.txt" '(2016.0 12.0 12.0) '(11.0 0.0))

Als ik voor elk item in beide lists een floating value gebruik, dan lukt het ook voor de tijd. Raar, want de datum lukte wel zonder die floating values, enkel de tijd niet.
Bedankt!
AutoCAD 2020 - Windows 10

gery

#22
De LISP code om in batch een groot aantal .lsp bestanden te converteren naar .fas, met behoud van de datum en tijd van het .lsp bestand:

(defun CompileAllLSP2FAS ( #LSPfolder #FASfolder / #FAS #FASdate #FAStime #LSP #LSPdate #LSPfile #LSPtime )
  (foreach #LSPfile (vl-directory-files #LSPfolder "*.lsp" 1) 
    (setq #LSP (strcat #LSPfolder #LSPfile))
    (setq #FAS (strcat #FASfolder (vl-string-right-trim "LSP" (strcase #LSPfile)) "fas"))
    (vlisp-compile 'st #LSP)
    (setq #LSPdate (RemoveItems '(2 4 5 6 7) (vl-file-systime #LSP)))
    (setq #LSPtime (RemoveItems '(0 1 2 3) (vl-file-systime #LSP)))
    (setq #FASdate (list (float (car #LSPdate)) (float (cadr #LSPdate)) (float (caddr #LSPdate))))
    (setq #FAStime (list (float (car #LSPtime)) (float (cadr #LSPtime)) (float (caddr #LSPtime))))
    (dos_touch #FAS #FASdate #FAStime) 
  )
  (princ)
)
 
(defun RemoveItems ( #items #list / )
  (if (and #items #list)
      (if (zerop (car #items))
          (RemoveItems (mapcar '1- (cdr #items)) (cdr #list))
          (cons (car #list) (RemoveItems (mapcar '1- #items) (cdr #list)))
      )
      #list
  )
)


De commando regel:

(CompileAllLSP2FAS "C:/sourcefolder/" "C:/destinationfolder/")

VLISP en DOSlib dienen geladen te zijn alvorens de routine te starten.

Edit: VLIDE moet ook open staan.
AutoCAD 2020 - Windows 10

EddyBeerke

Citaat van: gery op za 17 12 2016, 15:18:52
...

De commando regel:

(CompileAllLSP2FAS "C:/sourcefolder/" "C:/destinationfolder/")

VLISP en DOSlib dienen geladen te zijn alvorens de routine te starten.

Edit: VLIDE moet ook open staan.

Je zou dit kunnen toevoegen om een map te selecteren als het niet altijd dezelfde map is:
(vl-filename-directory (getfiled "Select a File to get the dir" "c:/program files/" "*" 8))

Wat ik alleen niet snap is dat je zegt dat de VLIDE open moet staan.
Waarom is dat dan?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Citaat van: EddyBeerke op ma 19 12 2016, 08:52:17Wat ik alleen niet snap is dat je zegt dat de VLIDE open moet staan.
Waarom is dat dan?

Voor de (vlisp-compile) functie.
De vlide moet niet echt open staan maar moet wel minstens één keer geopend geweest zijn tijdens de AutoCAD sessie.
AutoCAD 2020 - Windows 10