Ilisp Programmeren

Hoi allemaal.

 

Ik wil graag een macro wijzigen vanuit een van mijn CAD/CAM-software.

Deze software werkt in ilisp. Ik ken dit programma helemaal niet....

 

Simpel gezegd, deze macro kopieert Excel-kolommen en transformeert ze in rechthoeken in de snijsoftware. (type AutoCAD)

 

Het probleem is dat de macro achterstevoren wordt gelezen. Als ik mijn rechthoekige lijst heb, is de eerste de laatste op de lijst enz...

 

Hier is de macro bijlage, als iemand weet hoe dit te wijzigen, zou het simpa =)

 

Bedankt!

 


importeren.lsp

Hier is het bestand in tekst voor degenen die het niet kunnen openen.

 

(SETQ txt (CLIP-GET))
(SETQ YGAP 100)
(ALS (NIET txt) (STOP "*Annuleren*"))
(SETQ txt (STRREPLACE txt "\t" " "))
(SETQ txt (STRREPLACE txt "\n" ")("))
(SETQ txt (STRREPLACE txt "\r" ""))
(SETQ txt (STRREPLACE txt "," "."))
(SETQ txt (STRCAT "((" (SUBSTR txt 1 (1- (STRLEN txt))) "))"))
(SETQ txtlist (LEES txt))
(SETQ basep (LIJST 0 0))
(FOREACH s txtlist
  (SETQ ymax 0)
    (SETQ x (CAR s) y (CADR s))
    (ALS (> y ymax) (SETQ ymax y))
    (CAD-RECHTHOEKIGE basisp (LIJST (+ (AUTO-basis) x) (+ (CADR-basis) y)) 7)
  (SETQ-basisp (LIJST: 0 (+ (CADR-basis) ymax YGAP)))
)
(HERTEKENEN)

 

 

1 like

Hallo, zou er niet een kleine code ontbreken? 

Met deze code heb ik een functionele macro die de excel in rechthoek dxf exporteert

 

Waarom, wat zal er voor jou ontbreken?

 

De macro werkt als volgt:

 

Ik typ mijn lengte en breedte van onderdelen op excel in 2 kolommen.

Kolom A lengte, kolom B Breedte.

Vervolgens maak ik een "kopie" van de lijst en vervolgens door op mijn macro te klikken, plakt hij alles door de gegevens om te zetten in afmetingen in mm

1 like

Wanneer u het gebied in XL selecteert, begint u klassiek bij de cel linksboven en eindigt u rechtsonder. Wat gebeurt er als je van rechtsonder naar linksboven gaat, of van linksonder naar rechtsboven (het doel is om de selectie bovenaan af te maken)?

Bij toeval vond ik wat informatie over deze taal: http://igems.se/pdf/English-Ilisp.pdf

Zie pagina 23 voor het PRINC commando voor de uitleg van \t, \n en \r.

Bedankt Stef, ik had dit helpbestand al gedownload.

Maar ik begreep er niets van....

Ik heb het vertaald en geprint. Ik lees het vanavond met een uitgerust hoofd =)

 

Ik hou jullie op de hoogte natuurlijk =)

Kent u Lisp (taal die in het begin werd gebruikt voor Autocad-macro's)

Ik heb een paar opmerkingen toegevoegd

(SETQ txt (CLIP-GET)); We halen de inhoud van het klembord op

(SETQ YGAP 100); We initialiseren

(ALS (NIET txt) (STOP "*Annuleren*")) ; We controleren of de inhoud niet leeg is
(SETQ txt (STRREPLACE txt "\t" " ")); Vervang het kolomscheidingsteken (tab) door een spatie
(SETQ txt (STRREPLACE txt "\n" ")(")) ; de verandering van lijn wordt vervangen door een (
(SETQ txt (STRREPLACE txt "\r" "")) ; Ik weet niet wat return is (in wat er van het klembord wordt opgehaald
(SETQ txt(STRREPLACE txt "," ".")) ; We vervangen de , door .


(SETQ txt (STRCAT "((" (SUBSTR txt 1 (1- (STRLEN txt))) "))")) ; We voltooien om er een te hebben (aan het begin en één) aan het einde

(SETQ txtlist (LEES txt)); De tekenreeks wordt omgezet in een vorm die door de taal kan worden begrepen

(SETQ-basep (LIJST 0 0)); We initialiseren

(FOREACH s txtlist
  (SETQ ymax 0)
    (SETQ x (CAR s) y (CADR s))
    (ALS (> y ymax) (SETQ ymax y))
    (CAD-RECHTHOEKIGE basisp (LIJST (+ (AUTO-basis) x) (+ (CADR-basis) y)) 7)
  (SETQ-basisp (LIJST: 0 (+ (CADR-basis) ymax YGAP)))
)
(HERTEKENEN)

Het "lijst"-systeem, kenmerkend voor Lisp, houdt in dat we door het optellen van de paren (), direct de paren "s" van coördinaten terugkrijgen, die zelf lijsten zijn.

Met CAR en CADR kunnen de subonderdelen van het coördinatenpaar worden geëxtraheerd. Ter info: we kunnen de a en d combineren om een bepaald element uit een lijst met veel elementen te extraheren (meestal het resultaat van het commando "lijst" dat wordt toegepast op een element of een familie van elementen (in dat geval hebben we een lijst met lijsten, en het kan een lange weg gaan).

Ik weet niet waarom er een test op ymax is, noch waar basep en YGAP voor zijn