1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De...

20
2 l e e D 1 Tekenen met data uit Excel 1

Transcript of 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De...

Page 1: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

2 leeD

1 Tekenen met data

uit Excel

1

Page 2: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Aanpassen

2

Page 3: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

7.1

Inleiding DDEMet behulp van DDE, Dynamic Data Exchange, kunnen

commando’s tussen verschillende Windows applicaties

worden uitgewisseld. Een typische koppeling is die van

AutoCAD met een rekenblad of spreadsheet. In het

rekenblad worden bijvoorbeeld berekeningen gemaakt van

een ontwerp en met de resultaten wordt de tekening

aangepast zonder tussenkomst van de tekenaar.

Microsoft Office Alle programma’s van Microsoft Office kunnen AutoCAD

via DDE aansturen met de programmeertaal van Office

namelijk Visual Basic for Applications, VBA. Deze

programmeertaal zit ingebouwd in Excel, Access en Word.

cliënt-server DDE is een mechanisme waarbij de ene toepassing

communiceert met de andere. Een van de toepassingen

start de communicatie en de andere reageert hierop. De

toepassing die de communicatie start, heet de DDE cliënt.

De toepassing die reageert heet de DDE server. AutoCAD

LT kan niet een communicatie starten, maar wel hierop

reageren. AutoCAD LT kan dus alleen een server zijn.

Tijdens de communicatie voert de cliënt de volgende

activiteiten uit:

nVerbinding leggen

n Informatie overdragen

nVerbinding verbreken

Verbinding leggen Voordat er sprake is van communicatie, moet er een

verbinding tussen twee toepassingen gelegd worden. De

cliënt zorgt voor de aanmelding aan Windows. De cliënt

Aanpassen Deel II 7.1 Inleiding DDE 3

Page 4: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

geeft met een commando aan wie de ontvanger (AutoCAD

LT) is en met welk onderdeel van de ontvanger gepraat

gaat worden. Dit onderdeel heet de topic. De topic is in het

geval van AutoCAD LT de dialoogregel en heet “System”.

Kanaalnummer Windows beperkt de communicatie niet tot slechts één

verbinding. Er kunnen meerdere verbindingen tegelijk

gemaakt worden. Bijvoorbeeld met meerdere rekenbladen

tegelijkertijd. Windows houdt de verbindingen uit elkaar

door deze een uniek kanaalnummer te geven.

De verbinding wordt gelegd met het commando:

KanaalNr=Application.DDEInitiate(“AutoCAD LT.DDE”,"System”)

U moet dit op één enkele regel schrijven. In plaats van

KanaalNummer kunt u natuurlijk iedere andere variabele

gebruiken. Het gaat er alleen maar om dat u onthoudt welk

kanaal gebruikt wordt voor de communicatie. Let erop dat

AutoCAD LT wordt geschreven met een spatie en niet met

een punt.

Overdragen

commando’s

Het uitvoeren van een AutoCAD commando gaat als

volgt:

Application.DDEExecute KanaalNummer,"[zzz]" met zzz is een AutoCAD commando bv “[line 0,0 100,100 ]”

Verbinding verbreken Wanneer alle commando’s zijn gegeven, kan de verbinding

worden verbroken, zodat geheugen vrijkomt. Het afsluiten

van het kanaal gebeurt met:

Application.DDETerminate KanaalNummerBv Application.DDETerminate 1

Als u weinig tijd heeft, dan kunt u ook het Excel bestand

downloaden om deze te bekijken. Activeer de macro´s op

Sheet1 om te zien hoe er getekend wordt met Excel.

4 Deel II Aanpassen 1 Tekenen met data uit Excel

Page 5: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk VBA met ExcelIn deze paragraaf wordt gebruik gemaakt van Excel (NL).

Start AutoCAD. Begin met een lege tekening op basis van

millimeters.

ExcelStart Excel. Zorg ervoor dat beide programma’s tegelijk

zichtbaar zijn: Met de volgende instructies maakt u

namelijk een programma, dat een lijn tekent in AutoCAD.

OpslaanActiveer het commando om het bestand op te slaan.

Tekenen met Excel Geef het bestand een naam.

Xlsm Kies voor een bestandstype Xlsm of xls. Dit zijn

bestandstypen die macro´s bevatten.

Opslaan Bevestig het opslaan.

Opdracht Activeer het applicatiemenu van Excel en klik op “Opties

voor Excel”. Controleer of op het tabblad Populair de

instelling “Tabblad Ontwikkelaars weergeven” aan staat.

Ontwikkelaars Activeer in Excel het tabblad voor de ontwikkelaars.

Visual Basic

Start de editor voor VBA. Het kan wel zijn, dat er

verschillende vensters aan staan, dat is afhankelijk van hoe u

de laatste keer geëindigd bent. Sluit dan deze vensters.

Beeld

Programma code

Activeer het venster van de programmacode. Vergroot het

venster van de programmacode.

U typt de volgende dik gedrukte tekst. In het vervolg ziet u

dik en dun gedrukte tekst. De tekst die dik is gedrukt, dient

u in te typen. De tekst die niet dik gedrukt is, staat er al zo

dat u weet op welke plaats u de nieuwe tekst moet typen.

Sub MijnEersteMacro()

KanaalNr = Application.DDEInitiate("AutoCAD LT.DDE", "System")

Call Application.DDEExecute(KanaalNr, "[Line 0,0 100,100 ]")

Call Application.DDETerminate(KanaalNr)

End Sub

Aanpassen Deel II 7.1 Inleiding DDE 5

2 spaties

Page 6: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Typ de regels zo nauwkeurig mogelijk over.

Tip: Ding en die vaak mis gaan zijn:

* Er staan geen spa ties tus sen line en de co ördinaten.

* In plaats van het enk ele “-te ken is twee maal het ‘-te ken ge -

bruikt.

* Het woord Ka naalNr is niet op alle re gels het zelf de.

* Het te ken [ is weg ge la ten. Deze is no dig voor het ver stu ren

van commando’s.

* Er is geen dub be le spa tie ge zet tus sen 100 en ]. Hierd oor

wordt het com man do wel over ge dra gen naar Au toCAD,

maar Au toCAD wacht nog tot een spa tie of een druk op de

Enter-toets wordt gegeven.

Tip: Als een re gel te lang is, mag u de re gel af bre ken door

eerst een spa tie en dan een Unders co re, een lig gend streepje,

te plaat sen.

u (F5) Zet de cursor binnen de macro, dus tussen Sub en End Sub

en klik op Sub uitvoeren.

U ziet hoe in AutoCAD een lijntje getekend wordt. Als er

een foutmelding volgt, probeer de tekst dan opnieuw in te

voeren, maar nu wel foutloos. Zie de aanwijzingen voor

veel voorkomende fouten.

Tip: Door her haal de lijk op de func tie toets F8 te druk ken

kunt u uw pro gram ma re gel voor re gel door lo pen en tes ten.

Maak de tekening schoon voor de volgende paragraaf en

zorg dat er geen commando actief is in AutoCAD.

Overzicht AutoCAD en DDE

DDEInitiate In Visual Basic wordt de communicatie gestart met:

I = Application.DDEInitiate( “AutoCAD LT.DDE”,

“System”)

DDEExecute Een opdracht wordt gegeven via

Application.DDEExecute I, “[Commando]”

waarbij I het kanaalnummer voorstelt. Commando is de

tekst die u zou intypen in AutoCAD tussen “[ en ]”

bijvoorbeeld “[line 0,0 100,100 ]” (Een spatie betekent in

AutoCAD hetzelfde als de Enter-toets)

DDETerminate De verbinding wordt verbroken met:

Application.DDETerminate I waarbij I het kanaalnummer

voorstelt.

6 Deel II Aanpassen 1 Tekenen met data uit Excel

Page 7: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

7.2

CAD commando’sTheorie U kunt via DDE commando’s geven aan AutoCAD. De

invoer die u geeft, moet precies overeenkomen met dat wat

AutoCAD verwacht op de commando regel.

De commando’s aan AutoCAD worden meestal in kleine

overzichtelijke routines geplaatst, zodat u overzicht houdt

en u met een kleine wijziging het programma geschikt

maakt voor een ander CAD systeem of voor een andere

versie van AutoCAD. Hieronder ziet u kort aangegeven

wat nodig is voor de basis-tekenfuncties.

Lijn Voor een lijn dient u minimaal twee punten op te geven.

Cirkel Voor een cirkel is minimaal het middelpunt en de radius

nodig.

Boog Voor een boog zijn minimaal het middelpunt, de radius, de

starthoek en de eindhoek nodig. Meestal worden hoeken in

een programmeertaal in radialen weergegeven.

Tekst Voor tekst zijn minimaal de tekststring, het startpunt en de

teksthoogte nodig. Normaal gesproken wordt in AutoCAD

de spatie gebruikt als Enter. Als u tekst in moet voeren bij

de functies is dat niet het geval. U zult dan een Enter

moeten geven met Chr(13). Dit is het ASCII-equivalent

van het Enter-teken.

Dialoogboxen Er zijn ook een groot aantal functies die gebruik maken van

dialoogboxen. Omdat u met uw DDE koppeling alleen het

Aanpassen Deel II 7.2 CAD commando’s 7

Page 8: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

commando venster kunt bereiken en niet de dialoogboxen

dient u voor de commando’s met de dialoogboxen

oplossingen te vinden. Er zijn drie categorieën van

oplossingen.

De file dialoogbox Commando’s die met bestandsbeheer te maken hebben

zoals New, OPen, SAve, SAVEAS, MENULOAD,

IMPORT, EXPORT, MSLIDE, SLIDE, RSCRIPT kunt u

veranderen van functies met een dialoogbox naar functies

op de commandoregel door de systeemvariabele FILEDIA

de waarde 0 te geven. Voor het commando Open kunt u

ook Fileopen gebruiken. Wanneer u bij Save, SaveAs of

Export over een bestand gaat schrijven tijdens een DDE

commando, wordt niet de gebruikelijke waarschuwing

gegeven, zodat u vooraf weet welke waarden u moet

invullen onafhankelijk van de situatie.

Plot en attribuut

dialoogbox

Als de systeemvariabele ATTDIA op nul staat ,dan worden

de dialoogbox voor DDINSERT en INSERT vervangen

door vragen op de dialoogregels.

Commando’s met en

zonder dialoogboxen

Commando’s met een dialoogbox hebben varianten waarbij

geen dialoogbox getoond wordt. De variant begint met een

- teken. Bijvoorbeeld Plot en -plot.

SysteemvariabelenAlle systeemvariabelen kunt u instellen door de naam van

deze variabele in te typen.

Enter toets Wanneer u een commando geeft in AutoCAD, dan sluit u

8 Deel II Aanpassen 1 Tekenen met data uit Excel

ARray -ARray Group -Group Pan -Pan XBind -XBind

ATTdef -ATTdef HatchEdit -HatchEdit PLOT -PLOT XRef -XRef

ATtEdit -ATtEdit HYPERLINK -HYPERLINK PLOTSTYLE -PLOTSTYLE TEXT -TEXT

ATTEXT -ATTEXT Insert -Insert PUrge -PUrge

BHatch -BHatch LAyer -LAyer REName -REName

Block -Block LineType -LineType STyle -STyle

BOundary -BOundary LWeight -LWeight View -View

COLor -COLor MText -MText VPORTS -VPORTS

CUSTOMIZE -TOolbar OSnap -OSnap Wblock -Wblock

Page 9: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

deze af met de Enter-toets of de spatietoets. Als u tekst

invoert, kunt u alleen de Enter-toets gebruiken. Er zou

tenslotte een spatie in de tekst kunnen staan. In Visual

Basic gebruikt u dan Chr(13) of vbCr. Dit is de ASCII

weergave van de Enter-toets.

Afbreken van

commando’s

Wanneer u een commando wilt afbreken in AutoCAD, dan

drukt u eenmaal en bij sommige commando’s tweemaal op

de Esc-toets. Het is verstandig om uw programma hiermee

te laten beginnen, zodat u vooraf weet dat er geen

AutoCAD commando actief is. Het Escape-karakter wordt

in Visual Basic weergegeven als Chr(27).

Invoer via het

toetsenbord is altijd

een tekst

DDE draagt alleen teksten over en draagt geen getallen

over. Als u een getal wilt invoeren, dient u deze te

converteren naar een tekst. Er mag voor deze tekst dan

geen spatie komen, omdat AutoCAD de spatie

interpreteert als het indrukken van de Enter-toets. Bij de

conversiefunctie van Visual Basic worden alle positieve

getallen voorafgegaan door een spatie. U zult dus een eigen

stringconversie moeten maken.

Aanpassen Deel II 7.2 CAD commando’s 9

Page 10: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk KoppelenU werkt verder met het VBA programma van de vorige

paragraaf.

Invoegen

Module

Activeer in de VBA editor het pulldownmenu Invoegen en

kies voor een nieuwe module.

LT Verander de naam van de module naar LT.

Globale variabele: Het kanaalnummer komt in meerdere

procedures voor. Om ervoor te zorgen dat deze overal

bekend is; wordt deze globaal gedefinieerd.

Opdracht Type op de eerste regel van Module LT:

De volgende teksten kunt u kopiëren uit [www.cadcollege.com >

Instructiefilmpjes > AutoCAD LT > Aanpassen > 1.0]

Global KanaalNr As Long

Koppelen: Ieder programma begint met het koppelen aan

AutoCAD LT.

Opdracht Type de volgende drie regels in Algemeen om deze

koppeling te maken. In het vervolg hoeft u dus slechts het

commando Koppelen te geven.

Sub Koppelen()KanaalNr=Application.DDEInitiate("AutoCAD LT.DDE","System")End Sub

Ontkoppelen: Ieder programma wordt beëindigd met het

ontkoppelen van AutoCAD LT.

Opdracht Type de volgende drie regels in Algemeen om deze

ontkoppeling te maken. In het vervolg hoeft u dus slechts

het commando Ontkoppelen te geven in plaats van die

10 Deel II Aanpassen 1 Tekenen met data uit Excel

Page 11: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

lange regel in te typen.

Sub Ontkoppelen() Call Application.DDETerminate(KanaalNr)End Sub

Er bestaan vier verschillende soorten van invoer voor

AutoCAD: functieactivering, getalinvoer, waarde-invoer

en tekstinvoer. Door voor ieder van deze functies routines

te maken, kunnen we eenvoudig andere functies van hogere

orde programmeren. Omdat in deze basisfuncties de

conversie van getal naar tekst voorkomt, wordt eerst de

nieuwe conversiefunctie gemaakt.

Tekst conversie: VBA kan een getal vertalen naar een tekst,

maar voegt daar een ongewenste spatie toe.

Opdracht Voeg de volgende regels toe in de module LT. Deze

vormen de nieuwe tekst conversiefunctie. De functie

converteert een getal naar een tekst met de VBA functie Str

en verwijdert daarna de spatie met het commando Trim.

Function AcadStr(x) Tdl = Str(x) AcadStr = Trim(Tdl)End Function

Naar AutoCAD Doorsturen: Omdat alle invoerfuncties een

tekstregel naar AutoCAD sturen, wordt deze in een

procedure gestopt, zodat deze makkelijk is te onderhouden.

De tekstregel wordt altijd afgesloten met een spatie of

Enter. Omdat de Enter meer algemeen is, wordt deze ook

opgenomen in deze procedure.

Een Enter-toets is in Visual Basic Chr(13) of vbCr.

Rondom de tekstregel zitten de DDE haakjes “[” en “]”. In

VBA wordt het teken & gebruikt, om twee teksten aan

elkaar te plakken. Er staan altijd spaties rondom &.

Opdracht Voeg nu de volgende regels toe aan de module LT.

Sub Invoeren(Commando) Tdl = "[" & Commando & Chr(13) & "]" Call Application.DDEExecute (KanaalNr, Tdl)End Sub

Com man do in voer: De vol gen de pro ce du re ac ti veert een

com man do. De te kens die over ge dra gen wor den be gin nen

met twee keer het Esc-te ken, chr(27) of chr( vbKeyEsca -

Aanpassen Deel II 7.2 CAD commando’s 11

Page 12: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

pe), om een even tu eel ac tief com man do af te breken.

Opdracht Type de volgende regels in.

Sub Commando(functie) Call Invoeren (Chr(27) & Chr(27) & functie )End Sub

GetalInvoer: De volgende procedure voert een getal in.

Opdracht Type de volgende regels in.

Sub Waarde(x) Call Invoeren (AcadStr(x))End Sub

Puntinvoer: De volgende procedure voert een punt in. Een

punt bestaat uit twee getallen gescheiden door een komma.

De dynamische invoer wordt op de eerste regel uit gezet.

Opdracht Type de volgende regels in.

Sub Punt(x, y)Call Invoeren ("´DYNMODE -3")

Call Invoeren (AcadStr(x) & "," & AcadStr(y))End Sub

Als u al de bovenstaande regels heeft ingetypt dan ziet uw

programma er als volgt uit. Controleer dit met uw scherm.

Let op: Controleer de code goed. Let op de spelling van

alle procedures. Een letter of spatie anders is fataal.

12 Deel II Aanpassen 1 Tekenen met data uit Excel

Page 13: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Lijn met VBAVoeg de volgende regels toe aan de module LT. Deze

vormen een procedure om een lijn te tekenen.

Sub lijn(x1, y1, x2, y2)

Call Commando("Line")

Call Punt (x1, y1)

Call Punt (x2, y2)

Call Invoeren ( "" )

End Sub

Ga naar de oorspronkelijke module “Blad1”. Verwijder alle

code en type de volgende regels:

Sub Cursus

Call LT.Koppelen

Call LT.Lijn(10, 20, 50, 20)

Call LT.Lijn(50, 20, 30, 40)

Call LT.Lijn(30, 40, 10, 20)

Call LT.Ontkoppelen

End Sub

Zet de cursor in de subroutine van Cursus, zodat VB weet

welke macro u wilt uitvoeren.

� Klik op uitvoeren macro. U gebruikt de functietoets F5 of

de button met het pijltje. Als alles goed is gegaan, wordt

opnieuw de lijn getekend.

Tip: Als u een fout heeft ge maakt in uw pro gram ma dan

wordt er geen lijn ge te kend, maar ver schijnt een fout mel -

ding. U heeft dan een ty pe fout ge maakt. Con tro leer dan de

code van deze en van de vo ri ge pagina’s.

Aanpassen Deel II 7.2 CAD commando’s 13

x1 x2

y1

y2

1

2

*

Page 14: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Cirkel met VBAVoeg de volgende regels toe aan de module LT voor de

subroutine om een cirkel te tekenen. U begint onder de

laatste regel van de macro lijn.

Sub cirkel (x, y, r )

Call Commando("Dragmode off")

Call Commando ("Circle")

Call Punt (x, y)

Call Waarde (r)

Call Commando ("Dragmode auto")

End Sub

De dragline is in de code hierboven uitgezet, omdat deze

alleen werkt met directe invoer op het scherm

Voeg de volgende dik gedrukte tekst toe aan de macro

Cursus in de module Blad1.

Sub CursusCall LT.KoppelenCall LT.Lijn(10, 20, 50, 20)Call LT.Lijn(50, 20, 30, 40)Call LT.Lijn(30, 40, 10, 20)

Call LT.Cirkel(30, 30, 50)

Call LT.Cirkel(55, 45, 5)

Call LT.Cirkel(5, 45, 5) Call LT.Ontkoppelen

End Sub

Zet de cursor in de tekst van Macro Cursus, zodat VB weet

welke macro u wilt uitvoeren.

� Klik op uitvoeren macro. De volgende tekening ontstaat.

14 Deel II Aanpassen 1 Tekenen met data uit Excel

x

y

R

*

Page 15: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Boog met VBAVoeg de volgende tekst toe aan de module LT voor een

subroutine om een boog te tekenen. U begint onder de

laatste regel van de macro cirkel.

Sub boog(x, y, x1, y1, hoek)

Call Invoeren ("Dragmode off")

Call Commando( "Arc")

Call Invoeren( "C")

Call Punt (x, y)

Call Punt (x1, y1)

Call Invoeren ("A")

Call Waarde (hoek)

Call Invoeren ("Dragmode auto")

End Sub

Voeg de volgende tekst toe aan de tekst van de macro

Cursus in de module Blad1.

Sub CursusCall LT.KoppelenCall LT.Lijn(10, 20, 50, 20)Call LT.Lijn(50, 20, 30, 40)Call LT.Lijn(30, 40, 10, 20)Call LT.Cirkel(30, 30, 50)Call LT.Cirkel(55, 45, 5)Call LT.Cirkel(5, 45, 5)

Call LT.Boog(30, 40, 2, 11, 90) Call LT.Ontkoppelen

End Sub

Zet de cursor in de tekst van Cursus, zodat VB weet welke

macro u wilt uitvoeren.

� Klik op uitvoeren macro. De volgende tekening ontstaat.

Aanpassen Deel II 7.2 CAD commando’s 15

Hoek

1

X

Y

X1

Page 16: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Tekst met VBAVoeg de volgende tekst toe aan de module LT voor een

subroutine om tekst te tekenen. U begint onder de laatste

regel van de macro boog.

Sub tekst(x, y, h, Regel)

Call Commando ("-TEXT")

Call Punt (x, y)

Call Waarde (h)

Call Waarde (0)

Call Invoeren (Regel )

End Sub ‘Einde tekst

Voeg de volgende tekst toe aan de tekst van de macro

Cursus in de module Blad1.

Sub CursusCall LT.KoppelenCall LT.Lijn(10, 20, 50, 20)Call LT.Lijn(50, 20, 30, 40)Call LT.Lijn(30, 40, 10, 20)Call LT.Cirkel(30, 30, 50)Call LT.Cirkel(55, 45, 5)Call LT.Cirkel(5, 45, 5) Call LT.Boog(30, 40, 2, 11, 90)Call LT.Tekst(90, 40, 20,"Hallo wereld")Call LT.Ontkoppelen

End Sub

Zet de cursor in de tekst van Cursus, zodat VB weet welke

macro u wilt uitvoeren.

� Klik op uitvoeren macro. De volgende tekening ontstaat

.

16 Deel II Aanpassen 1 Tekenen met data uit Excel

x

y

*

Hoogte

0ABC Hoek

Page 17: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

7.3

SysteemvariabelenTheorie De systeemvariabelen zijn variabelen waarin AutoCAD

zijn instellingen bewaard. Er worden onder andere

systeemvariabelen gebruikt die aangeven wat de huidige

kleur is waarin u tekent, wat de huidige lijnsoort is of wat

de huidige laag is.

Instellen via de

dialoogregel

De meeste systeemvariabelen zijn direct te wijzigen op de

dialoogregel. De werking is eenvoudig. U typt de naam van

een systeemvariabele in en vervolgens typt u de nieuwe

waarde van de systeemvariabele in.

Sommige systeemvariabelen kunnen direct een waarde

krijgen. Hiertoe behoort onder andere de systeemvariabele

CECOLOR. Deze kunt u ieder moment een waarde geven

tussen 0 en 255.

Instellen met

commando’s

Sommige systeemvariabele zoals CELTYPE voor de

huidige lijnsoort en CELAYER voor de huidige laag,

kunnen alleen een waarde krijgen van een van de

lijnsoorten of een van de lagen die in de tekening zijn

gedefinieerd. U kunt bijvoorbeeld de lijnsoort HIDDEN

niet actief maken als deze niet is gedefinieerd.

Het is in dat geval handiger om de commando’s

-LINETYPE SET respectievelijk -LAYER SET te

gebruiken. Deze commando’s stellen niet alleen de

systeemvariabele in, maar laden ook de betreffende lijnsoort

of maken de betreffende laag aan.

Aanpassen Deel II 7.3 Systeemvariabelen 17

Page 18: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Kleur en lijnsoorten met VBAVoeg de volgende regels toe aan de module LT voor de

subroutine om een kleur te kiezen en om de lijnsoort te

kiezen. U begint onder de laatste regel van de macro tekst.

Sub Kleur(waarde)

Call Commando ("CECOLOR")

Call Invoeren (waarde)

End Sub

Sub LijnSoort(waarde)

Call Commando ("-LINETYPE")

Call Invoeren ("S")

Call Invoeren (waarde)

Call Invoeren ("")

End sub

Voeg de volgende tekst toe de macro Cursus in de module

Blad1.

Sub CursusCall LT.KoppelenCall LT.Lijn(10, 20, 50, 20)Call LT.Lijn(50, 20, 30, 40)Call LT.Lijn(30, 40, 10, 20)Call LT.Cirkel(30, 30, 50)Call LT.Cirkel(55, 45, 5)Call LT.Cirkel(5, 45, 5)

Call LT.LijnSoort ("HIDDEN"Call LT.Boog(30, 40, 2, 11, 90)

Call LT.Kleur (1) Call LT.Tekst(90, 40, 20,"Hallo wereld")Call LT.Ontkoppelen

End Sub

Wis eerst de tekening. Zet de cursor in de tekst van Cursus,

zodat VB weet welke macro u wilt uitvoeren.

� Klik op uitvoeren macro. De volgende tekening ontstaat.

Opdracht Sla het Excel bestand op. Deze subroutines vormen de basis

voor verdere ontwikkelingen. Verwijder de tekening in

AutoCAD.

18 Deel II Aanpassen 1 Tekenen met data uit Excel

Page 19: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

7.4

RekenbladTheorie Tot nu toe is er vanuit gegaan dat er gebruik wordt

gemaakt van Visual Basic for Applications. In dit geval is

VBA gekoppeld aan Excel. Uit het rekenblad kunnen

gegevens gehaald worden, om die voor de tekening te

gebruiken.

Aanpassen Deel II 7.4 Rekenblad 19

DisplayAlerts

Screenupdating

Visible

Excel.application

ActiveWorkbook

ActiveWorksheet

Cells( 1, 1 )

Value

Value

Cells( 1, 2 )

Cells( ., . )

Value

Cells( 2, 1 )

Value

Page 20: 1 Tekenen met data uit Excel - cadcollege.com · AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat

Praktijk Waarden uit Excel met VBAU werkt verder met de bestanden van de vorige paragraaf.

Opdracht Voeg de volgende regels toe aan de module LT. De tekst is

een functie om een waarde uit een veld van Excel te lezen.

U begint onder de laatste regel van de macro LijnSoort.

Function Veld(i,j)

Veld = Application.Worksheets("Blad1").Cells(i,j).Value

End Function

Bij de Engelse versie van Excel gebruikt u “Sheet” in plaats

van “Blad”. Voeg de volgende subroutine toe aan de

module Blad1

Sub Cursus2()

Call LT.Koppelen

i = 1

Do

Call LT.Lijn (Veld(i,1),Veld(i,2),Veld(i,3),Veld(i,4))

i = i + 1

Loop Until Veld(i, 1) = ""

Call LT.Ontkoppelen

End Sub

Vul het rekenblad “Blad1” in met de waarden uit de

volgende afbeelding. Zet de cursor in de procedure

Cursus2, zodat VB weet welke macro u wilt uitvoeren.

� Klik op uitvoeren macro. De volgende tekening verschijnt:

20 Deel II Aanpassen 1 Tekenen met data uit Excel