FastFiber

Etransmit via Lisp met lange padnaam

Gestart door Reimer, ma 03 06 2013, 13:17:15

Vorige topic - Volgende topic

Reimer

Ik wil de volgende eenvoudige lisp gebruiken om een Etransmit te maken in de map waar de tekening zelf staat.
(defun c:etrr (/)
  (if (OR (= (getvar "DBMOD") 0)(= (getvar "DBMOD") 32))
    (command "-etransmit" "C" (strcat (getvar "dwgprefix")(substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))))
    (alert "Sla de tekening eerst op en start ETRR opnieuw")
  )
  (princ)
)

Nu is het probleem dat autocad na 136 karakters ophoudt met de naamgeving. Na 132 karakters wordt er simpelweg .zip achter gezet.
Heeft iemand een tip hoe ik met één klik een etransmit kan maken in de map van de tekening zelf?

Reimer

HofCAD

#1
Beste Reimer,

In de bijlage zit een programma van mij!
Ik weet niet of het voldoende is, want ik
heb geen tijd om het te controleren.

Met vriendelijke groet, HofCAD CSI.

PS Bij mij geldt: The full file name cannot be longer then 255 characters.
ACADcadabra

Reimer

HofCAD bedankt!  :pintje:
Hier kan ik wat mee.
Ik weet niks van Visual Lisp en kan een deel van jouw code dus niet volgen.
Ik snap dat er eerst een zip-bestand wordt aangemaakt. Vervolgens wordt op de een of andere manier de naam van dit bestand in verkorte vorm gebruikt.

Kun je voor mij de volgende code kort toelichten?
  (defun @GetShortName (strFileName / wshFSO fileObj)
    (vl-load-com)
    (setq wshFSO (vlax-create-object "Scripting.FileSystemObject"))
    (setq driveObjs (vlax-get-property wshFSO 'Drives))
    (setq fileObj (vlax-invoke-method wshFSO 'GetFile strFileName))
    (vlax-get-property fileObj 'ShortPath)
  )


Reimer

HofCAD

#3
Beste Reimer,

Er wordt inderdaad eerst een dummy Zip bestand aangemaakt met
de letter a.
(@wfil ZipFile (list "a"))
Via dit dummy Zip bestand wordt via @GetShortName de verkorte
naam opgezocht.

(setq wshFSO (vlax-create-object "Scripting.FileSystemObject"))
Zie voor uitleg http://www.afralisp.net/archive/lisp/script1.htm
Een FileSystemObject stelt u in staat om te creëren, verwijderen, en informatie krijgen,
en in het algemeen het manipuleren van schijven, mappen en bestanden.
Zie via vlax-dump-object de methoden:
(vl-load-com)   
(setq wshFSO (vlax-create-object "Scripting.FileSystemObject"))
(vlax-dump-object wshFSO  T)


De regel
(setq driveObjs (vlax-get-property wshFSO 'Drives))
is niet nodig. :oops: :oops: :oops: :oops: :oops: :oops:

Het fileobj geeft de eigenschappen en de methoden voor het FileObject!
In het onderstaande via vlax-dump-object voor de actieve tekening
(vl-load-com)   
(setq wshFSO (vlax-create-object "Scripting.FileSystemObject"))
(setq fileObj (vlax-invoke-method wshFSO 'GetFile (getvar "dwgname")))
(vlax-dump-object fileObj  T)


In de laatste regel wordt de eigenschap ShortPath opgevraagd.
(vlax-get-property fileObj 'ShortPath)

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

roy_043

Heeft iemand al aan (vl-file-rename) gedacht?

HofCAD

#5
Citaat van: roy_043 op do 06 06 2013, 09:27:33
Heeft iemand al aan (vl-file-rename) gedacht?
Beste Roy,

Nog niet!

Met vriendelijke groet, HofCAD CSI.

PS Ik heb Ettr.lsp veranderd, bekjk nogeens het bestand naar ETRR2!
ACADcadabra

Reimer

Mooi! De code is een stuk korter. Dit werkt eveneens perfect.
Bedankt!

Reimer

Hepa

Citaat van: HofCAD op do 06 06 2013, 09:36:12
Beste Roy,

Nog niet!

Met vriendelijke groet, HofCAD CSI.

PS Ik heb Ettr.lsp veranderd, bekjk nogeens het bestand naar ETRR2!

Beste, ik had die lap routine willen uitproberen maar het bestand wordt niet geladen.
Enig idee waarom het niet bij mij werkt.

Ik gebruikt Autocad 2014.

Mvgt.

Reimer

Wat bedoel je met "wordt niet geladen"? Krijg je de routine niet geladen?

Reimer

Hepa

Citaat van: Reimer op wo 15 10 2014, 20:22:34
Wat bedoel je met "wordt niet geladen"? Krijg je de routine niet geladen?

Reimer

Hi Reimer,

Ja dat de routine niet geladen wordt.

Reimer

Je kunt de routine handmatig laden in je tekening door het bestand vanuit de verkenner in je autocad venster te slepen.
Je kunt het bestand ook automatisch laten laden door deze toe te voegen aan de Startup Suite via het commando AP (Load Applications).

Reimer

Hepa

Reimer,

Ik had de routine via de commando APPLOAD geladen en in die venster staat ook dat de routine niet geladen wordt. zie screenshot.

Reimer

Ik denk dat je de lisproutine hebt opgeslagen in een map die bij autocad niet in de Trusted Locations staat (via Options, tabblad Files). Verplaats de lisproutine of voeg de locatie toe aan de Trusted Locations. Vervolgens kun je de routine wel laden.

Reimer

yoin