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