Project: Optimalisatie Blister-design Auteur: Derk van Elten Bedrijf: Astellas Pharma Europe B.V. Plaats: Leiderdorp Begeleider docent: Ir. R. Boeklagen Bedrijf: TEC / CADCollege Plaats: Nijmegen Datum: 24 Februari 2006
Optimalisatie Blister-Design
Voorwoord Sinds 1999 ben ik werkzaam op de afdeling Pharmaceutical Development Department - Clinical Trial Material (PDD-CTM). Als Hoofd Productie afdeling heb ik de verantwoordelijkheid voor het maken van planningen, budgetten voor de productie afdeling, apparatuur, master en batch documentatie voor de productieafdeling, tekeningen van de verpakkingen en vervanger van de technische engineer. De afdeling PDD-CTM houdt zich bezig met het coördineren en bereiden, verpakken van medicatie t.b.v. klinische studies. Tijdens mijn afstudeeropdracht ben ik door diverse mensen bijgestaan. In het bijzonder wil ik dan ook bedanken mijn stagebegeleiders Ronald Boeklagen en Leonie Bergsma. Astellas Pharma Europe BV met name Jose Hilhorst voor het vertouwen in het volgen van deze opleiding. Pentapack voor het leveren van de gegevens voor het maken van een matrijs. Mijn vrouw Leja en kinderen waar ik de tijd van heb gekregen om thuis te kunnen studeren.
Pagina: 2 / 56
ACE System Manager
Optimalisatie Blister-Design
Inhoudsopgave: VOORWOORD ..................................................................................................................................... 2 INHOUDSOPGAVE:............................................................................................................................. 3 HOOFDSTUK 1 .................................................................................................................................... 4 INLEIDING:...........................................................................................................................................4 HOOFDSTUK 2 .................................................................................................................................... 5 ASTELLAS PHARMA ..............................................................................................................................5 Fase 1 studies.............................................................................................................................. 7 Fase 2 Studies ............................................................................................................................. 8 Fase 3 Studies ............................................................................................................................. 8 ORGANIGRAM ASTELLAS PHARMA EUROPE PDD-CTM ..........................................................................9 HOOFDSTUK 3 .................................................................................................................................. 10 HUIDIGE SITUATIE..............................................................................................................................10 ROUTE VAN ORDERVERWERKING ........................................................................................................11 HOOFDSTUK 4 .................................................................................................................................. 12 AANLEIDING ......................................................................................................................................12 PROBLEEMSTELLING ..........................................................................................................................12 OPZET TOT VERBETERING ..................................................................................................................13 Foto blistermachine .................................................................................................................... 13 HOOFDSTUK 5 .................................................................................................................................. 14 KNELPUNTEN, GEVOLG EN OORZAKEN ................................................................................................14 MOGELIJKE OPLOSSING EN DE AFWEGING VAN DE OPLOSSING ...............................................................15 Matrix 1 ...................................................................................................................................... 16 Nieuwe tekeningen gegenereerd in AutoCAD ............................................................................ 17 HOOFDSTUK 6 .................................................................................................................................. 19 STROOMSCHEMA OPTIMALISATIE BLISTER-DESIGN ..............................................................................19 HOOFDSTUK 7 .................................................................................................................................. 20 WERKING BLISTER DESIGN .................................................................................................................20 Opstarten programma ................................................................................................................ 20 Procedure .................................................................................................................................. 23 Invoer tablet dimensies .............................................................................................................. 24 Invoerscherm ............................................................................................................................. 25 Tekenen 3d blisterformat............................................................................................................ 27 Tekenen van de tabletten PVC................................................................................................... 29 Tekenen van de capsules PVC / Alu .......................................................................................... 33 Aanroepen van de Database...................................................................................................... 35 Error meldingen.......................................................................................................................... 36 CONCLUSIE .......................................................................................................................................37 HOOFDSTUK 8 .................................................................................................................................. 38 PLANNING .........................................................................................................................................38 HOOFDSTUK 9 .................................................................................................................................. 39 PROGRAMMA.....................................................................................................................................39 Module ....................................................................................................................................... 39 Procedure .................................................................................................................................. 41
Pagina: 3 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 1 Inleiding: Dit is het verslag “Optimalisatie Blister-Design” die voor de opleiding AutoCAD System Manager bij TEC / CAD College is uitgevoerd in overleg met Astellas Pharma Europe BV. Voor het maken van een verpakkingsdesign is er overleg met de studie coördinator en hoofd productie afdeling. Aan de hand van een studie protocol wordt bekeken naar de hoeveelheid medicatie welke een patiënt mee naar huis krijgt voor de behandeling. Een van de voorwaarde is om een zo klein mogelijke verpakking te maken zodat het design patiënt vriendelijk is. Alle medicatie (tabletten en / of capsules) worden verpakt in een doordrukstrip, deze kan bestaan uit een thermo folie of en aluminiumfolie. Omdat de studies niet aan elkaar gelijk zijn is het nodig dat er matrijzen worden gemaakt voor het verpakken van de medicatie.
De optimalisatie is bedoeld om op een korte tijd diverse mogelijkheden visueel te kunnen laten zien zodat na een keuze de tekening kan worden opgestuurd naar de leverancier voor het maken van de matrijs. De tekening is bedoeld om te sturen naar de drukkerij voor het maken van een wallet. (een wallet is een karton met gaten welke overeenkomen met de pockets van de doordrukstrip.)
Pagina: 4 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 2 Astellas Pharma
Worldwide APEL APCA
AICL
APEBV
AUS/APUS APM
API
APT
Astellas Pharma is de nieuwe naam van de merger op 1 april 2005 tussen Yamanouchi Pharmaceutical Co. en Fujisawa Pharmaceutical Co. Het bedrijf heeft na de merger ca. 17000 personen in dienst en zijn verspreid over Japan, Verenigde Staten en Europa. Het hoofd kantoor is gevestigd in Tokyo, Japan. Het hoofd kantoor voor Europa is gevestigd in Londen, United Kingdom en het hoofdkantoor USA is gevestigd in Deerfield. Astellas is gespecialiseerd in Immunologie, Cardiologie, Dermatologie, Urologie en Infectie ziekte. De productie van de medicatie vindt plaats in de volgende landen: Japan, Korea, Italië, Duitsland, Ierland, Nederland en USA.
Astellas Pharmaceuticals Europe, CTM plant, Leiderdorp
Pagina: 5 / 56
ACE System Manager
Optimalisatie Blister-Design
In Japan, USA en in Nederland bevinden zich de Research en Development afdelingen. In Japan wordt een grondstof ontwikkeld met een werkzame stof met behulp van computer modellen. De stof wordt geselecteerd uit een van de vele computermodellen. Na de selectie procedure wordt de stof zodanig bewerkt bijvoorbeeld door synthese zodat het de juiste chemische eigenschappen bezit. Hierna wordt de nieuwe stof getest op muizen, ratten, honden en apen. Dit is niet te voorkomen maar wordt vanuit de overheid opgelegd. Het aantal dierproeven is sterk verminderd door de komst van computer modellen. Na goede resultaten wordt er besloten om de stof bij gezonde mensen te gaan toedienen. Dit kan pas geschieden als er toestemming is van de ethische commissie. Na de verkregen toestemming gaat de eerste fase in van het nieuwe medicijn.
Astellas Pharmaceuticals Japan, CTM Plant in Yaizu
Pagina: 6 / 56
ACE System Manager
Optimalisatie Blister-Design
Fase 1 studies Een Fase 1 studie wordt uitgevoerd om de acceptatie van het lichaam op het medicijn te testen. In een kliniek wordt bij een klein aantal gezonde vrijwilligers (tot ca. 50 personen) de medicatie toegediend, bijvoorbeeld er zij 10 gezonde vrijwilligers en 8 personen krijgen actief en 2 personen krijgen placebo. De studie wordt blind uitgevoerd wat betekend dat zowel de onderzoeker als de patiënten niet weten welke medicijnen zij krijgen. Na goede resultaten zoals de biologische beschikbaarheid (opname van het werkzame stof in het bloed) als de afwezigheid van bijwerkingen of minimale bijwerkingen gaat men verder met de volgende fase 1 studies. In de volgende studies wordt gekeken of er verschil van biologische beschikbaarheid is van de werkzame stof voor het eten of na het eten. Bepaling wat de maximale dosis van de werkzame stof is en welke invloed andere medicijnen hebben (interactie) met het nieuwe medicijn. De medicatie wordt in de meeste gevallen in bulk verzonden naar de kliniek, hierbij zijn de capsules verpakt in een doordrukstrip. Bij fase 1 wordt zelden tabletten gebruikt. Als eerst wordt er gestart met capsules een werkzame stof met een vulmiddel. Voor de latere fase wordt een tablet ontwikkeld. Na goede resultaten van de bovengenoemde studie wordt besloten om de volgende fase in te gaan.
Aluminium Blister (doordrukstrip)
Pagina: 7 / 56
ACE System Manager
Optimalisatie Blister-Design
Fase 2 Studies In een kleine groep (tot circa 300 patiënten) waarbij de aandoening aanwezig is getest. Dit gebeurt op vrijwillige basis. De duur van de studie is ca. 1 tot 3 maanden. Deze studies worden blind uitgevoerd en hierbij krijgt de patiënt de medicatie mee naar huis voor een bepaalde periode (2, 3 of 4 weken). Na de periode komt de patiënt de kliniek bezoeken voor een controle, zoals bloed, urine etc. Hierna krijgt de patiënt de medicatie mee voor een volgende periode. De medicatie is verpakt in een wallet, hierbij is de blister verpakt tussen twee kartonnen. Deze twee kartonnen zijn op elkaar geseald. Afhankelijk van het studie design worden er meerder wallets in een doos gedaan (visite box). Iedere visite doos en wallet is genummerd met een uniek randomisatie nummer zodat de patiënt en onderzoeker niet weten welke medicatie er wordt toegediend. In geval van nood, bij een medische indicatie kan een onderzoeker een envelop openen waarop vermeld staat welke dosis en de patiënt heeft toegediend gekregen. Bij fase 2 wordt ook de medicatie getest tegenover een concurrentie medicijn, zodat er inzicht kan worden verkregen naar de verschillen van bijwerkingen, opname in het bloed en effectiviteit van de werkzame stof. Het aantal landen waarin een fase 2 studie in Europa loopt varieert van 2 tot ca 22 verschillende landen. Voor ieder land moet de tekst ook op het doosje aanwezig zijn. Hier staat onder ander de gebruiksaanwijzing, studienummer, expiratie datum, batchnummer en adres van de sponsor met een 24 uurs telefoon nummer. Fase 3 Studies Hierbij gaat het om de zelfde opzet als bij fase 2 studies met dit verschil dat de patiënten groep groter is (tot ca. 3000). De duur van de studie is langer, een patiënt gebruikt dan ca. 1 jaar lang de medicatie. Het totale project van ontwikkeling tot registratie dat het product op de markt is duurt ca. 8 tot 10 jaar. 1 op de 10 producten haalt de registratie. De overige producten hebben geen of verkeerde resultaten opgeleverd in de studies. De kosten van de klinische studies lopen op ca. 15 miljoen euro.
Wallet met twee blisters
Pagina: 8 / 56
Visite doos met x wallets
ACE System Manager
Optimalisatie Blister-Design
Organigram Astellas Pharma Europe PDD-CTM
Drs. J. Hilhorst Section Head – Head Production
Dirk van Elten Head Production Office
Dr. Henk Mollee Head Production Coordinator
Jannie de Jong Quality Production operation
Ton de Ridder Operator
Elly Vink Coordinator
Leo Bruijn Operator
Michael Jie Coordinator
Arjan Huisman Operator
Tjalke Alkema Operator
Pagina: 9 / 56
ACE System Manager
Robert van Koutrik Technisch Engineer
Jeroen van den Burg, Assistent
Optimalisatie Blister-Design
Hoofdstuk 3 Huidige Situatie Voor het maken van een ontwerp wordt er gekeken samen met een coördinator welk design er wordt uitgekozen. Het design wordt geschetst op papier en na een keuze wordt deze voorgelegd aan een studiemanager voor controle. Aan de hand van de dimensies van een tablet (diameter en dikte) of de dimensies van een capsule (dikte en lengte) wordt naar de leverancier voor het maken van een matrijs deze gegevens gestuurd. Er wordt aan gegeven hoeveel tabletten of capsules naast elkaar op een rij zitten. Hierna wordt de tekening van de leverancier voor akkoord toegezonden. Na akkoord kan de leverancier de matrijs gaan maken en kan een tekening gemaakt gaan worden voor de drukkerij voor het maken van een wallet. Een wallet zijn twee kartonnen waartussen een blister is geplaatst. Zie foto 2. Een blister is een blaar welke gevormd wordt in Aluminium of een thermoplast zoals pvc, pvc-pvdc, pp. Een blister kan meerdere blaren (pockets) bevatten waar een tablet of een capsule inzit. Zie foto 3. Op pagina 9 is de huidige tekening gesitueerd. Deze tekening wordt aan de hand van de matrijstekening welke wordt aangeleverd opgemaakt. De tekening is gemaakt in PowerPoint. De reden hiervan is dat er geen tekenprogramma in het bedrijf beschikbaar was. Vorig jaar is tot aanschaf van het programma AutoCAD 2004LT overgegaan en heb ik de cursussen AutoCAD Basis, Autocad 2D gevorderd, Autocad Optimalisatie, AutoCAD 3D, AutoCAD & VisualBasic en AutoCAD & VisualBasic gevorderd gevolgd bij TEC / CAD College in Nijmegen.
Foto 2 Wallet
Pagina: 10 / 56
Foto 3 Blister Aluminium
ACE System Manager
Optimalisatie Blister-Design
Route van orderverwerking Studie manager, Coordinator
Coordinator, Head Production Office
Verpakken van de medicatie
Bereiden van de medicatie
Labellen van de medicatie
Verzenden van de medicatie
Route voor het maken van een medicijn, bespreking, order, bereiding, verpakken, samenstellen, verzenden.
Pagina: 11 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 4 Aanleiding Aanleiding tot het maken van een tekening in AutoCAD met behulp van Visual Basic for Applications. De huidige methode bestond uit het maken van een schets in PowerPoint. (zie hieronder) Om standaardisatie van tekening te verkrijgen is besloten om deze te gaan tekenen met een AutoCAD. Probleemstelling • • •
Omdat er voor een studie vaak diverse modellen nodig zijn is het een tijdrovende klus om deze in AutoCAD te tekenen. Vaak wordt er op het laatste moment nog wijzigingen ingevoerd. De fouten marge wordt tevens omlaag gebracht daar de tekening naar diverse bedrijven gestuurd wordt voor het maken van matrijzen en drukwerk waar gaten worden ingeponst voor de blister.
PVC/Al 33 mm
Alu/Alu 50 mm
126,3mm
Pagina: 12 / 56
ACE System Manager
Optimalisatie Blister-Design
Opzet tot verbetering Door middel van een tool te maken opdat er een uniforme tekening ontstaat welke naar alle leveranciers gestuurd wordt voor het maken van matrijzen. De tool moet gemakkelijk in gebruik zijn.
Foto blistermachine
Labelstation
Sealfolie
Vul station Vormstation
Snijstation
Vormfolie Accept / reject station
Sealstation
Vul controle
Foto Blistermachine Pentapack EAS
Pagina: 13 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 5 Knelpunten, Gevolg en Oorzaken De knelpunten in dit proces zijn: • Dat de PowerPoint tekening niet op schaal is. Hierdoor is er geen duidelijke visualisatie van wat het uiteindelijk het resultaat wordt. • Tekeningen zijn moeilijk te wijzigen. Er is geen standaardisatie van de tekening. • De levertijd van de materialen zijn langer. • Eerst moet op een tekening van de leverancier van de matrijs gewacht worden voordat een tekening naar de drukker gestuurd kan worden. • Aan de hand van de tekening van de leverancier wordt een tekening voor de drukker gemaakt. Het overnemen van de maten kan fouten opleveren. • Het gevolg hiervan dat een studie moet worden uitgesteld daar de medicatie niet op tijd geleverd kan worden. Hetgeen zeer hoge kosten met zich meebrengt daar de onderzoekers, artsen en onderzoekcentrum lang van tevoren besproken zijn.
Van links boven naar rechts: het malen van een Actieve stof voor een nieuw medicijn, het granuleren van een actieve stof met een hulp stof, het maken van een tablet. Van links onder naar rechts: het analyseren van de tabletten, het blisteren van de tabletten en het handmatig vullen van de pockets op de blistermachine.
Pagina: 14 / 56
ACE System Manager
Optimalisatie Blister-Design
Mogelijke oplossing en de afweging van de oplossing Er zijn 4 mogelijke oplossingen voor het tekenen van blisters. 1) Is de huidige methode hanteren. Het nadeel hiervan is dat de kwaliteit niet verbeterd en dat de kans op fouten aanwezig blijft. Tevens is er geen standaardisatie in tekeningen. 2) Het tekenen in Microsoft Visio. De tekeningen kunnen worden gegenereerd en worden uitgeplot zoals ook in AutoCAD. Het nadeel is dat de tekening welke wordt verstuurd naar de leverancier voor matrijzen AutoCAD gebruikt. De kans dat er fouten ontstaan tijdens het converteren naar AutoCAD kan aanwezig zijn. De conversie stap is niet gevalideerd. 3) Het tekenen in AutoCAD. Een mogelijke oplossing is het gebruik van dynamische blokken in samenwerking met Visual Basic Application. Hierdoor is het mogelijk om variabele in te kunnen voeren en door te geven aan een dynamische blok. Deze optie heb ik overwogen daar het afstudeerproject is geschreven in AutoCAD 2006 en hierin is het heel goed mogelijk. Met de hand tekenen in AutoCAD. Dit levert een verbetering op van de huidige werkwijze maar is een zeer tijdrovende bezigheid. Hierdoor zijn de kosten van een tekening zeer hoog. Het maken van een tool in AutoCAD zodat via het ingeven van variabelen in een VBA omgeving een blister tekening wordt gegenereerd. (zie tekeningen op pagina 17) 4) Het tekenwerk uitbesteden. Hiervan is bekend dat er een lange levertijd op de tekeningen zit. Het maken van diverse ontwerpen wordt bemoeilijkt daar de tekenaar toch alle schetsen zal moeten hebben om een ontwerp te maken.
Pagina: 15 / 56
ACE System Manager
Optimalisatie Blister-Design
Matrix 1 In matrix 1 zijn de mogelijkheden neergezet met de programma’s en de eisen waaraan voldaan moet worden. De schaal van 1 tot en met 9 is gebruikt waarbij 1 zeer slecht is en 9 uitmuntend. Het gewogen gemiddelde bepaald de te gebruiken oplossing.
Programma
Powerpoint
Microsoft Visio
AutoCad
Uitbesteden
Gebruiksvriendelijk
1
7
7
1
Kwaliteit
1
7
8
8
Realistisch
1
8
8
8
Tijdsduur in tekenen
1
5
8
1
VBA programmering
1
7
7
1
Totaal
5
34
38
19
Eisen
AutoCAD en Microsoft Visio hebben beide een hoog gewogen gemiddelde. AutoCAD scoort hoger mede omdat alle gevolgde cursussen in AutoCAD gevolgd zijn. Alle tekeningen welke aanwezig zijn van de huidige matrijzen van de leverancier zijn in AutoCAD getekend. De tekeningen van de facility waar de geneesmiddelen geproduceerd zijn tevens in AutoCAD aangeleverd bij wijzigingen moeten deze aangepast kunnen worden. Standaardisatie van de tekeningen is nu mogelijk Het uitbesteden levert geen tijdwinst op. De tekening voor de drukker zal alsnog gemaakt moeten worden wat eventueel fouten kan opleveren.
Pagina: 16 / 56
ACE System Manager
Optimalisatie Blister-Design
Nieuwe tekeningen gegenereerd in AutoCAD
Pagina: 17 / 56
ACE System Manager
Optimalisatie Blister-Design Keuze van de oplossing De keuze om geen dynamische blokken te gebruiken in combinatie met VBA is dat dit alleen mogelijk is in versie AutoCAD 2006 en hoger. Alle voorgaande versie kunnen dan met deze tool niet werken. De keuze om via een tool alle variabelen in te voeren heeft de voorkeur gekregen. De tijd om een blister te tekenen is gereduceerd naar enkele minuten in plaats van minimaal 1 uur. Het is ook heel eenvoudig om een 3-D visualisatie te tonen zodat de Studiemanager een duidelijk beeld heeft van het product. Deze tool is ook te gebruiken in andere versies van AutoCAD en niet allen in 2006 en hoger. Uitgezonderd zijn de LT versies 2000 en 2004, deze kunnen namelijk geen VBA aan. Een gebruiker met enige kennis van AutoCAD moet met deze tool kunnen werken. Met het werken van deze tool wordt een standaardisatie verkregen van een tekening en iedere leverancier werkt met dezelfde tekening. Hetgeen de kans op fouten wordt verkleind. Een voordeel hiervan is dat er in korte tijd diverse ontwerpen op tafel kunnen liggen en hieruit gekozen kan worden voor welk ontwerp er gebruikt gaat worden voor de studie.
Pagina: 18 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 6 Stroomschema Optimalisatie Blister-Design Load file Template_ Blister-Design
33, 37, 50, 55, 100, 110
Select Blister breedte
18,04 tot 61,96mm
Select Transport Lengte
1 tot 5
Select aantal pockect in breedte
1 tot 7
Select aantal pockets in lengte
Vul tablet afmetingen in
Check invoer gegevens
Msgbox: To much pockets
Msgbox: Transport to small
Select Capsule / Tablet
Msgbox: Field no numeriek caps. - tablet Select Capsule maat
Check Database
Pagina: 19 / 56
Database
Messagebox Can not find the database, fill correct pad in
ACE System Manager
Draw 3D
Optimalisatie Blister-Design
Hoofdstuk 7 Werking Blister design Opstarten programma Om het programma op te starten moet de template_BlisterDesign worden geladen. Wordt er gewerkt met een netwerk dan zal de template op een netwerk locatie geplaatst moeten worden zodat een ieder het programma kan aanroepen. Na het laden van de template komt de vraag om de macro’s te laden. De knop “Enable macros” activeren en het invoerscherm verschijnt. Deze wordt door onderstaande sub aangeroepen. Private Sub AcadDocument_Activate() UserForm1.Show End Sub Als het menu is opgestart kan men beginnen met het in vullen van de variabelen. Onder de variabelen wordt verstaan: - Breedte van de blister folie, - Soort folie PVC / PVdC, - Transport lengte, - Aantal capsules / tabletten in de breedte, - Aantal capsules / tabletten in de lengte, - Tablet dimensies dikte en diameter, - Tablet of capsule en ingeval van een capsule kan het type uitgezocht worden. Na het invullen van al deze gegevens kan de opdracht gegeven worden voor het tekenen van de ingevoerde gegevens.
Pagina: 20 / 56
ACE System Manager
Optimalisatie Blister-Design
Via de combo boxen kan de transport lengte worden uitgekozen, de hoeveelheid pockets in de breedte en hoeveelheid pockets in de lengte. ‘Keuze transport lengte Me.CboTransport.AddItem (" 18,04") Me.CboTransport.AddItem (" 22,10") Me.CboTransport.AddItem (" 25,91") Me.CboTransport.AddItem (" 29,08") Me.CboTransport.AddItem (" 30,31") Me.CboTransport.AddItem (" 33,14") Me.CboTransport.AddItem (" 38,51") Me.CboTransport.AddItem (" 45,96") Me.CboTransport.AddItem (" 52,78") Me.CboTransport.ListIndex = 0 De hoeveelheid pockets in de lengte is maximaal (7) zeven, dit komt ook overeen met het aantal dagen in een week.
Pagina: 21 / 56
ACE System Manager
Optimalisatie Blister-Design ‘Keuze hoeveelheid pockets in de lengte Me.cboAantalPocketsLengte.AddItem (" 1") Me.cboAantalPocketsLengte.AddItem (" 2") Me.cboAantalPocketsLengte.AddItem (" 3") Me.cboAantalPocketsLengte.AddItem (" 4") Me.cboAantalPocketsLengte.AddItem (" 5") Me.cboAantalPocketsLengte.AddItem (" 6") Me.cboAantalPocketsLengte.AddItem (" 7") Me.cboAantalPocketsLengte.ListIndex = 0 De hoeveelheid pockets in de breedte is minimaal (2) twee maximaal (5) vijf. De minimale hoeveelheid van twee is nodig om de spanning van het materiaal tijdens het vormen evenredig te verdelen over de gehele breedte van de folie. ‘Keuze hoeveelheid pockets in de breedte Me.cboAantalPocketsBreedte.AddItem (" 2") Me.cboAantalPocketsBreedte.AddItem (" 3") Me.cboAantalPocketsBreedte.AddItem (" 4") Me.cboAantalPocketsBreedte.AddItem (" 5") Me.cboAantalPocketsBreedte.ListIndex = 0
Pagina: 22 / 56
ACE System Manager
Optimalisatie Blister-Design
Procedure Hieronder staan de procedures voor het oproepen van de cirkels welke gebruikt wordt voor het tekenen van de tablet cirkels. De tweede procedure voor het tekenen van de lijnen van de blister omtrek. Function Cirkel(ByVal x3 As Double, ByVal y3 As Double, ByVal r As Double) As AcadCircle Dim middelpnt(0 To 2) As Double Dim cirkelobject As AcadCircle middelpnt(0) = x3 middelpnt(1) = y3 middelpnt(2) = 0 Set cirkelobject = ThisDrawing.ModelSpace.AddCircle(middelpnt, r) cirkelobject.Update Set Cirkel = cirkelobject End Function 'Einde Cirkel Sub lijn(ByVal x1 As Double, ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As Double) Dim beginpnt(0 To 2) As Double Dim eindpnt(0 To 2) As Double beginpnt(0) = x1: eindpnt(0) = x2 beginpnt(1) = y1: eindpnt(1) = y2 beginpnt(2) = 0: eindpnt(2) = 0 Set Lijnobject = ThisDrawing.ModelSpace.AddLine(beginpnt, eindpnt) Lijnobject.Update End Sub Dim CapsuleSoort(0 To 9) As String Dim CapsuleMaat(0 To 11, 0 To 9) As Double Dim astrbloknaam(0 To 1) As String Private Sub cboAantalPocketsBreedte_Change() Me.lblAantalPocketsBreedte = Me.cboAantalPocketsBreedte.Value End Sub Private Sub cboAantalPocketsLengte_Change() Me.lblAantalPocketsLengte = Me.cboAantalPocketsLengte.Value End Sub
Pagina: 23 / 56
ACE System Manager
Optimalisatie Blister-Design
Invoer tablet dimensies Voor het invoeren van de gegevens voor tablet dikte en de tablet diameter worden de getallen gebruikt 0 tot en met 9 en gevolgd indien van toepassing met een komma voor decimale getallen. Het invoeren van een punt als decimaal is niet mogelijk daar VBA dit niet accepteert. Er zal dan een hele grote tablet worden getekend. Met de onderstaande code wordt dit probleem omgelost. Als de gebruiker een punt intypt zal deze punt worden omgezet naar een komma. Private Sub txtTabletDikt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr(1, txtTabletDikt.Text, ".") > 0 And KeyAscii = Asc(".") Then KeyAscii = 0 Exit Sub End If Select Case KeyAscii Case Asc("0") To Asc("9"), Asc(".") Case Else KeyAscii = 0 End Select End Sub Private Sub txtTabletDikt_change() If txtTabletDikt.Text = "." Then txtTabletDikt.Text = "0." End If End Sub Private Sub txtTabletDiameter_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr(1, txtTabletDiameter.Text, ".") > 0 And KeyAscii = Asc(".") Then KeyAscii = 0 Exit Sub End If Select Case KeyAscii Case Asc("0") To Asc("9"), Asc(".") Case Else KeyAscii = 0 End Select End Sub Private Sub txtTabletDiameter_change() If txtTabletDiameter.Text = "." Then txtTabletDiameter.Text = "0." End If End Sub
Pagina: 24 / 56
ACE System Manager
Optimalisatie Blister-Design
Invoerscherm Het invoerscherm start op in de modes voor tabletten. De tekening van een tablet wordt getoond en indien er voor wordt gekozen voor capsules wordt er een tekening van een capsule getoond. Hieronder staat de aanroep code voor het tonen van de tekening tablet of capsule. De tekeningen staan in een bepaalde directory, als deze op een netwerk geplaatst worden dan zal de locatie hier ook moeten worden gewijzigd zodat een ieder die gebruik maakt van het menu geen error melding krijgt. Private Sub cboCaps_Tabl_Change() Toonblok End Sub Private Sub OptCapsuleLengte_Change() Toonblok End Sub Sub Toonblok() DWG = astrbloknaam(Me.cboCaps_Tabl.ListIndex) If Me.OptCapsuleLengte Then DWG = DWG & "Lengte" Else DWG = DWG & "Breedte" End If Me.lblTekening.Caption = DWG On Error Resume Next Me.lblTekening.Picture = LoadPicture("I:\Autocad\AutoCad HBO\Drawings\" & DWG & ".wmf") End Sub
Pagina: 25 / 56
ACE System Manager
Optimalisatie Blister-Design Om het invoerscherm overzichtelijk te houden worden enkele optie onzichtbaar gemaakt. Bij selectie van een tablet worden de comboboxen “Caps. length en Direction of rotation” niet zichtbaar getoond. Is de selectie capsule dan wordt deze comboboxen wel getoond en zijn dit verplicht invoervelden. 'Selectie van Tablet of Capsule If Me.cboCaps_Tabl = "Capsule" Then Me.txtTabletDikte = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 0) Me.txtTabletDiameter = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 1) Me.txtTabletLengte = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 2) End If End Sub 'Tonen van de Comboboxen If Me.cboCaps_Tabl = "Tablet" Then Me.txtTabletDikte.Enabled = True Me.txtTabletDiameter.Enabled = True Me.txtTabletDikte.Value = "" Me.txtTabletDiameter.Value = "" Me.cboCapsulesoort.Visible = False Me.lblCapsuleAfmeting.Visible = False Me.txtTabletLengte.Visible = False Me.lblCapsLengte.Visible = False Me.cboDraaihoek.Visible = False Else Call cboCapsulesoort_Change Me.txtTabletDikte.Enabled = False Me.txtTabletDiameter.Enabled = False Me.txtTabletLengte.Enabled = False Me.cboDraaihoek.Enabled = True Me.cboDraaihoek.Value = "" Me.cboCapsulesoort.Visible = True Me.lblCapsuleAfmeting.Visible = True Me.txtTabletLengte.Visible = True Me.lblCapsLengte.Visible = True Me.cboDraaihoek.Visible = True End If
Pagina: 26 / 56
ACE System Manager
Optimalisatie Blister-Design
Tekenen 3d blisterformat Het tekenen van de blister wordt uitgevoerd door de onderstaande code. De keuze uit de transport breedte (B) 33, 50, 100 of 110mm vermenigvuldigd met het aantal tabletten of capsules (A) vermenigvuldigd met de transportstap (H). De lijnen worden getekend met een polylijn. Na het tekenen van de blister omtrek wordt hier een region van gemaakt. En wordt de polylijn gedelete. De dikte van de blister (di) is 1 mm. Van de transport breedte (B) en de lengte (H) wordt de maat geplaatst: Maat 1 en Maat 2 De blister breedte 33, 37, 50 en 55 wordt alleen gekozen voor het maken voor de matrijs van de wallet. De machine matrijs heeft altijd een breedte van 100 of 110 mm. Bij de blister breedte 33 en 37 kan maar 1 capsule of tablet worden getekend en bij de blister breedte 50 en 55 is het mogelijk om maximaal 2 capsules of tabletten te tekenen. Dit betekend voor de machine matrijs bij maat 33 en 37 dat er uiteindelijk 2 pockets naast elkaar worden getekend. Bij 50 en 55 is dat 4 pockets. Me.Cbobreedte.AddItem (" 33") Me.Cbobreedte.AddItem (" 37") Me.Cbobreedte.AddItem (" 50") Me.Cbobreedte.AddItem (" 55") Me.Cbobreedte.AddItem (" 100") Me.Cbobreedte.AddItem (" 110") Me.Cbobreedte.ListIndex = 0
B = Me.Cbobreedte.Value H = Me.CboTransport.Value A= lblAantalPocketsLengte K = Tan(Atn(1) / 2) di = -1 a(0) = 0: a(1) = 0 a(2) = B: a(3) = 0 a(4) = B: a(5) = 0 a(6) = B: a(7) = H * A a(8) = B: a(9) = H * A a(10) = 0: a(11) = H * A a(12) = 0: a(13) = H * A a(14) = 0: a(15) = 0 Dim pl As AcadLWPolyline Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(a) pl.Closed = True pl.Update
Pagina: 27 / 56
ACE System Manager
Optimalisatie Blister-Design ‘Plaatsen van de maat pi = VBA.Atn(1) * 4 Dim Punt1(0 To 2) As Double Dim Punt2(0 To 2) As Double Dim Punt3(0 To 2) As Double Punt1(0) = a(0) Punt1(1) = a(1) Punt2(0) = a(2) Punt2(1) = a(3) Punt3(0) = (a(0) + a(2)) / 2 Punt3(1) = a(3) - 7 Set Maat1 = ThisDrawing.ModelSpace.AddDimRotated(Punt1, Punt2, Punt3, 0) Punt1(0) = a(4) Punt1(1) = a(5) Punt2(0) = a(6) Punt2(1) = a(7) Punt3(0) = a(4) + 7 Punt3(1) = (a(5) + a(7)) / 2 Set Maat1 = ThisDrawing.ModelSpace.AddDimRotated(Punt1, Punt2, Punt3, pi / 2)
Dim rand(0 To 0) As AcadEntity Set rand(0) = pl regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update pl.Delete Dim reg As AcadRegion Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, di, 0) reg.Delete ext.Update De keuze van de tablet of capsule welke via een combobox kan worden geselecteerd. Private Sub UserForm_Initialize() astrbloknaam(0) = "Tablet" astrbloknaam(1) = "Capsule" For i = 0 To 1 Call Me.cboCaps_Tabl.AddItem(astrbloknaam(i)) Next i Me.cboCaps_Tabl.ListIndex = 0
Pagina: 28 / 56
ACE System Manager
Optimalisatie Blister-Design
Tekenen van de tabletten PVC Voor het tekenen van tabletten wordt gekozen in het dropdown menu tabletten / capsules. De instructie If Me.cboCaps_Tabl = "Tablet" Then is actief als de keuze tablet is. De tabletten worden getekend met een cirkel. De procedure cirkel wordt opgeroepen en aan de hand van de ingevulde tablet diameter (d) wordt de cirkel getekend. De tabletten aan de beide zijde staan altijd 7.5 mm van de rand onafhankelijk van de diameter. Twee cirkels is het minimale wat getekend wordt. Dit is de geleiding van de machine en de twee dienen tevens voor een rechte geleiding in de machine. De pocket welke getekend wordt is altijd groter dan de tablet. De tablet moet ruim in de pocket liggen maar er mogen geen meerdere tabletten in een pocket passen. Hier wordt er voor gekozen om de pocket 0.65 mm groter te maken dan de tablet. Van de cirkel wordt een region gemaakt en dit is nodig om later een 3-D tekening te laten plotten. Na het aanmaken van de region wordt de cirkel verwijderd. De region wordt met behulp van de code AddExtrudedSolid geëxtrudeerd onder een hoek van 5 graden en de hoogte wordt bepaald door de dikte van de tablet plus 0.3 mm. De cirkels worden getekend als aan de voorwaarde wordt voldaan welke genoemd is in cboAantalPocketsbreedte het aantal tabletten in de breedte van 1 tot en met 5. Als de tabletten getekend zijn bestaat er 1 rij met tabletten. Indien er in de lengte meerdere tabletten moeten worden getekend wordt dit aangeroepen door cirkels = c1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) het aantal pockets wordt vermenigvuldigd met het ingevulde aantal en wordt gekopieerd met de transport lengte welke gekozen is. Hieronder een gedeelte van het programma om de tabletten te tekenen. If Me.cboCaps_Tabl = "Tablet" Then 'Tekenen van de tabletten PVC Select Case True Case cboAantalPocketsBreedte = 1 'eerste tablet Dim c1 As AcadCircle Dim cirkels As Variant Set c1 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c1 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c1.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update
Pagina: 29 / 56
ACE System Manager
Optimalisatie Blister-Design Next i Case cboAantalPocketsBreedte = 2 'eerste tablet Dim c2 As AcadCircle Set c2 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c2.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c2 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c2.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update Next i 'tweede tablet Dim c3 As AcadCircle Set c3 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c3.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c3 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c3.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update Next i
Pagina: 30 / 56
ACE System Manager
Optimalisatie Blister-Design
Case cboAantalPocketsBreedte = 3 'eerste tablet Dim c31 As AcadCircle Set c31 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c31.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c31 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c31.Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update Next i 'tweede tablet Dim c32 As AcadCircle Set c32 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c32.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c32 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c32.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update Next I
Pagina: 31 / 56
ACE System Manager
Optimalisatie Blister-Design 'middelste tablet Dim c4 As AcadCircle Set c4 = Tekenen.Cirkel(B / 2, H / 2, r + 0.65) cirkels = c4.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c4 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c4.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update Next i Case cboAantalPocketsBreedte = 4 Case cboAantalPocketsBreedte = 5 Deze twee stukjes code zijn niet hier beschreven maar kunnen gevonden worden in de bijlage.
Pagina: 32 / 56
ACE System Manager
Optimalisatie Blister-Design
Tekenen van de capsules PVC / Alu De capsules worden getekend met een polylijn. De functie capsule wordt opgeroepen door in de combobox voor capsule te kiezen. Op het userform verschijnt de combobox voor het selecteren van de capsulemaat, deze capsule maten zijn gedefinieerd in een Acces database. De capsule maten komen dubbel in de combobox voor 1 x voor PVC en 1 x voor Aluminium. Na selectie kan men bekijken de dikte, diameter en lengte. De capsule wordt getekend door middel van de punten 0 t/m 7. Dit is een halve capsule in de Y richting welke wordt opgemaakt als een polylijn. Hierna wordt de polylijn gerevolved over 180 graden om de y-as heen. Set ext = ThisDrawing.ModelSpace.AddRevolvedSolid(reg, AsPunt, AsRichting, -Atn(1) * 4) daarna volgt het commando regen en 3D-view. ThisDrawing.Regen (acActiveViewport) Call ThisDrawing.SendCommand("Shademode g -vp -1,-1,1 ") 'Tekenen van een capsule Function capsule(ByVal x As Double, ByVal y As Double, ByVal d As Double, ByVal l As Double, ByVal DraaiHoek As Double) As Acad3DSolid Dim Punten(0 To 7) As Double Punten(0) = x Punten(1) = y - l / 2 Punten(2) = x + d / 2 Punten(3) = Punten(1) + d / 2 Punten(4) = Punten(2) Punten(5) = y + l / 2 - d / 2 Punten(6) = x Punten(7) = y + l / 2 Dim pl As AcadLWPolyline Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(Punten) Call pl.SetBulge(0, 0.41421) Call pl.SetBulge(2, 0.41421) pl.Closed = True pl.Update Dim rand(0 To 0) As Object Set rand(0) = pl regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update pl.Delete Dim AsPunt(0 To 2) As Double AsPunt(0) = x AsPunt(1) = y Dim AsRichting(0 To 2) As Double AsRichting(1) = 1 Set reg = regions(0) Dim ext As Acad3DSolid Set ext = ThisDrawing.ModelSpace.AddRevolvedSolid(reg, AsPunt, AsRichting, -Atn(1) * 4) reg.Delete ext.Update DraaiHoek = DraaiHoek * Atn(1) / 45 Call ext.Rotate(AsPunt, DraaiHoek) ext.color = acRed Set capsule = ext
Pagina: 33 / 56
ACE System Manager
Optimalisatie Blister-Design End Function 'Tekenen van een capsule Select Case True Case cboAantalPocketsBreedte = 1 'eerste capsule Dim cap1 As AcadLWPolyline Set cap1 = Tekenen.capsule(7.5 + (0.5 * d), H / 2, d, l) End Select Select Case True Case cboAantalPocketsBreedte = 2 'eerste + tweede capsule Set cap1 = Tekenen.capsule(7.5 + (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B - 7.5 - (0.5 * d), H / 2, d, l) End Select Select Case True Case cboAantalPocketsBreedte = 3 'eerste + tweede + derde capsule Set cap1 = Tekenen.capsule(7.5 + (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B - 7.5 - (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B / 2, H / 2, d, l) End Select Select Case True Case cboAantalPocketsBreedte = 4 'eerste + tweede + derde + vierde capsule Set cap1 = Tekenen.capsule(7.5 + (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B - 7.5 - (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B / 2 - 7.5 - (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B / 2 + 7.5 + (0.5 * d), H / 2, d, l) End Select Select Case True Case cboAantalPocketsBreedte = 5 'eerste + tweede + derde + vierde + vijfde capsule Set cap1 = Tekenen.capsule(7.5 + (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B - 7.5 - (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B / 2, H / 2, d, l) Set cap1 = Tekenen.capsule(B / 5 + 7.5 + (0.5 * d), H / 2, d, l) Set cap1 = Tekenen.capsule(B / 5 * 3 + 7.5 + (0.5 * d), H / 2, d, l) End Select End Sub
Pagina: 34 / 56
ACE System Manager
Optimalisatie Blister-Design
Aanroepen van de Database Voor het aanroepen van de database geschied door de onderstaande code. Allereerst wordt gekeken of het bestand welke genoemd staat onder bestand daadwerkelijk daar staat. Als het bestand daar niet aanwezig is zal er een Error melding verschijnen Database niet gevonden. In de input box kan de juiste locatie van het bestand worden ingevoerd en na sluiten zal deze worden gesaved. Bij een volgende keer opstarten en de settings zijn niet gewijzigd zal de database direct oproepbaar zijn. 'Aanroepen van de Database Dim db As ADODB.Connection Set db = CreateObject("adodb.connection") Bestand = "F:\Autocad\AutoCad HBO\HBO Database\capsules.mdb" Bestand = VBA.GetSetting("Blister", "Algemeen", "Database", Bestand) Dim sql As String Openen: sql = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Bestand On Error Resume Next db.Open (sql) If Err Then Bestand = VBA.InputBox("Can not find the Database", "Error", Bestand) Call VBA.SaveSetting("Blister", "Algemeen", "Database", Bestand) GoTo Openen End If On Error GoTo 0 Dim rs As Recordset sql = "SELECT * FROM tabel2" Set rs = db.Execute(sql) For i = 0 To 19 Naam = rs.Fields("Naam").Value Me.cboCapsulesoort.AddItem (Naam) CapsuleMaat(i, 0) = rs.Fields("Diepte") CapsuleMaat(i, 1) = rs.Fields("Breedte") CapsuleMaat(i, 2) = rs.Fields("Lengte") rs.MoveNext Next i Me.cboCapsulesoort.ListIndex = 0 Set rs = Nothing db.Close Set db = Nothing End Sub
Pagina: 35 / 56
ACE System Manager
Optimalisatie Blister-Design
Error meldingen Als de transportlengte te klein is ten opzichte van de tablet diameter of capsule wordt de message box getoond met de melding “Transport to small”. De afstand rondom de tablet of blister moet minimaal 3 millimeter zijn. Dit is een gestandaardiseerde maat waarbij men kan waarborgen dat de sealing van het materiaal geen lucht doorlaat van de buitenrand naar de pocket toe. 'error transport melding Tr = CboTransport - txtTabletDiameter If Tr < 6 Then FoutMelding = FoutMelding & vbCr & "* Transport to small." End If
Als de velden “Thickness, Diameter of Direction of rotation” niet zijn ingevuld worden deze rood gekleurd. Tegelijkertijd komt message box met de melding “Field (Thickness) is no numeric”. Bij een keuze van de transport breedte 33mm of 50mm kan maximaal 1 of 2 tabletten / capsules getekend worden. Heeft men ene groter getal inveuld wordt de message box met de melding “To much Pockets for this blister width”. 'error invoer melding If Not VBA.IsNumeric(txtTabletDikte) Then Me.txtTabletDikte.BackColor = vbRed FoutMelding = FoutMelding & vbCr & "* Field Thickness is no numeric." Else Me.txtTabletDikte.BackColor = vbWhite End If 'error Aantalpockets melding Select Case True Case Cbobreedte = 33 And Me.cboAantalPocketsBreedte > 1 FoutMelding = FoutMelding & vbCr & "* To much Pockets for this blister width."
Pagina: 36 / 56
ACE System Manager
Optimalisatie Blister-Design
Conclusie De tool is getest op AutoCAD versies 2004, 2005 en 2006. Het is niet werkzaam op de LT versies van AutoCAD daar hier geen VBA ingelezen kon worden. De tool werkt voor het maken van matrijs tekeningen voor thermo-folie en niet voor Aluminium folie. AutoCAD 2006 kan wegens het ontbreken van een functie voor het tekenen van bepaalde diverse lagen onder bepaalde hoeken dit niet uitvoeren. AutoCAD 2007 heeft de functionaliteit wel en de tool zal met een versie update moeten worden aangepast. Persoonlijk ben ik van mening dat zoals het programma nu beschikbaar is dat er grote tijdwinst behaald kan worden. Door toekomstige uitbreidingen kan het programma breder worden ingezet. Gedacht kan worden in de vestigingen Japan en de USA.
Pagina: 37 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 8 Planning
Pagina: 38 / 56
ACE System Manager
Optimalisatie Blister-Design
Hoofdstuk 9 Programma Module Function Cirkel(ByVal x3 As Double, ByVal y3 As Double, ByVal r As Double) As AcadCircle Dim middelpnt(0 To 2) As Double Dim cirkelobject As AcadCircle middelpnt(0) = x3 middelpnt(1) = y3 middelpnt(2) = 0 Set cirkelobject = ThisDrawing.ModelSpace.AddCircle(middelpnt, r) cirkelobject.Update Set Cirkel = cirkelobject End Function 'Einde Cirkel Sub lijn(ByVal x1 As Double, ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As Double) Dim beginpnt(0 To 2) As Double Dim eindpnt(0 To 2) As Double beginpnt(0) = x1: eindpnt(0) = x2 beginpnt(1) = y1: eindpnt(1) = y2 beginpnt(2) = 0: eindpnt(2) = 0 Set Lijnobject = ThisDrawing.ModelSpace.AddLine(beginpnt, eindpnt) Lijnobject.Update End Sub Function capsule(ByVal x As Double, ByVal y As Double, ByVal d As Double, ByVal l As Double, ByVal DraaiHoek As Double) As Acad3DSolid Dim Punten(0 To 7) As Double Punten(0) = x Punten(1) = y - l / 2 Punten(2) = x + d / 2 Punten(3) = Punten(1) + d / 2 Punten(4) = Punten(2) Punten(5) = y + l / 2 - d / 2 Punten(6) = x Punten(7) = y + l / 2 Dim pl As AcadLWPolyline Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(Punten) Call pl.SetBulge(0, 0.41421) Call pl.SetBulge(2, 0.41421) pl.Closed = True pl.Update Dim rand(0 To 0) As Object Set rand(0) = pl regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update pl.Delete Dim AsPunt(0 To 2) As Double AsPunt(0) = x
Pagina: 39 / 56
ACE System Manager
Optimalisatie Blister-Design AsPunt(1) = y Dim AsRichting(0 To 2) As Double AsRichting(1) = 1 Set reg = regions(0) Dim ext As Acad3DSolid Set ext = ThisDrawing.ModelSpace.AddRevolvedSolid(reg, AsPunt, AsRichting, -Atn(1) * 4) reg.Delete ext.Update DraaiHoek = DraaiHoek * Atn(1) / 45 Call ext.Rotate(AsPunt, DraaiHoek) ext.color = acRed Set capsule = ext End of Function
Pagina: 40 / 56
ACE System Manager
Optimalisatie Blister-Design
Procedure Private Sub AcadDocument_Activate() UserForm1.Show End Sub Dim CapsuleSoort(0 To 9) As String Dim CapsuleMaat(0 To 19, 0 To 2) As Double Dim astrbloknaam(0 To 1) As String Dim Tr As Double Private Sub cboAantalPocketsBreedte_Change() Me.lblAantalPocketsBreedte = Me.cboAantalPocketsBreedte.Value End Sub Private Sub cboAantalPocketsLengte_Change() Me.lblAantalPocketsLengte = Me.cboAantalPocketsLengte.Value End Sub Private Sub cboCapsulesoort_Change() 'Selectie van Tablet of Capsule If Me.cboCaps_Tabl = "Capsule" Then Me.txtTabletDikte = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 0) Me.txtTabletDiameter = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 1) Me.txtTabletLengte = CapsuleMaat(Me.cboCapsulesoort.ListIndex, 2) End If End Sub Private Sub cboCaps_Tabl_Change() 'Tonen van de Comboboxen If Me.cboCaps_Tabl = "Tablet" Then Me.txtTabletDikte.Enabled = True Me.txtTabletDiameter.Enabled = True Me.txtTabletDikte.Value = "" Me.txtTabletDiameter.Value = "" Me.cboCapsulesoort.Visible = False Me.lblCapsuleAfmeting.Visible = False Me.txtTabletLengte.Visible = False Me.lblCapsLengte.Visible = False Me.cboDraaihoek.Visible = False Else Call cboCapsulesoort_Change Me.txtTabletDikte.Enabled = False Me.txtTabletDiameter.Enabled = False Me.txtTabletLengte.Enabled = False Me.cboDraaihoek.Enabled = True Me.cboDraaihoek.Value = "" Me.cboCapsulesoort.Visible = True Me.lblCapsuleAfmeting.Visible = True Me.txtTabletLengte.Visible = True Me.lblCapsLengte.Visible = True Me.cboDraaihoek.Visible = True End If
Pagina: 41 / 56
ACE System Manager
Optimalisatie Blister-Design
Private Sub OptCapsuleLengte_Change() Toonblok End Sub Sub Toonblok() DWG = astrbloknaam(Me.cboCaps_Tabl.ListIndex) If Me.OptCapsuleLengte Then DWG = DWG & "Lengte" Else DWG = DWG & "Breedte" End If Me.lblTekening.Caption = DWG On Error Resume Next Me.lblTekening.Picture = LoadPicture("I:\Autocad\AutoCad HBO\Drawings\" & DWG & ".wmf") End Sub Sub ControleerInvoer(FoutMelding) 'error invoer melding If Not VBA.IsNumeric(txtTabletDikte) Then Me.txtTabletDikte.BackColor = vbRed FoutMelding = FoutMelding & vbCr & "* Field Thickness is no numeric." Else Me.txtTabletDikte.BackColor = vbWhite End If If Not VBA.IsNumeric(txtTabletDiameter) Then Me.txtTabletDiameter.BackColor = vbRed FoutMelding = FoutMelding & vbCr & "* Field Diameter is no numeric." Else Me.txtTabletDiameter.BackColor = vbWhite End If If Not VBA.IsNumeric(cboDraaihoek) Then Me.cboDraaihoek.BackColor = vbRed FoutMelding = FoutMelding & vbCr & "* Field Direction of rotation is no numeric." Else Me.cboDraaihoek.BackColor = vbWhite End If 'error transport melding Foutafhandeling: Tr = CboTransport - txtTabletDiameter If Tr < 6 Then FoutMelding = FoutMelding & vbCr & "* Transport to small." End If 'error Aantalpockets melding c Select Case True Case Cbobreedte = 33 And Me.cboAantalPocketsBreedte > 1 FoutMelding = FoutMelding & vbCr & "* To much Pockets for this blister width." Case Cbobreedte = 37 And Me.cboAantalPocketsBreedte > 1 FoutMelding = FoutMelding & vbCr & "* To much Pockets for this blister width." Case Cbobreedte = 50 And Me.cboAantalPocketsBreedte > 2 FoutMelding = FoutMelding & vbCr & "* To much Pockets for this blister width." Case Cbobreedte = 55 And Me.cboAantalPocketsBreedte > 2
Pagina: 42 / 56
ACE System Manager
Optimalisatie Blister-Design FoutMelding = FoutMelding & vbCr & "* To much Pockets for this blister width." End Select End Sub Private Sub cmdTekenen_Click() Dim H As Double Dim B As Double Dim c As Double Dim d As Double Dim e As Double Dim r As Double Dim rz As Double Call ControleerInvoer(FoutMelding) If FoutMelding <> "" Then Call VBA.MsgBox(FoutMelding, vbCritical, "Error, follow the instructions below") Exit Sub End If d = Me.txtTabletDiameter.Value H = Me.CboTransport.Value B = Me.Cbobreedte.Value c = Me.txtTabletDikte.Value r = Me.txtTabletDiameter.Value / 2 l = Me.txtTabletLengte DraaiHoek = Me.cboDraaihoek x3 = 7.5 + (0.5 * d) y3 = Me.CboTransport.Value / 2 rz = Me.txtTabletDikte.Value Dim a(0 To 17) As Double eindpnt = Me.CboTransport.Value beginpnt = Me.Cbobreedte.Value On Error GoTo 0 'tekenen '3d blisterformat B = Me.Cbobreedte.Value H = Me.CboTransport.Value K = Tan(Atn(1) / 2) di = -1 a(0) = 0: a(1) = 0 a(2) = B: a(3) = 0 a(4) = B: a(5) = 0 a(6) = B: a(7) = H * lblAantalPocketsLengte a(8) = B: a(9) = H * lblAantalPocketsLengte a(10) = 0: a(11) = H * lblAantalPocketsLengte a(12) = 0: a(13) = H * lblAantalPocketsLengte a(14) = 0: a(15) = 0 Dim pl As AcadLWPolyline Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(a) pl.Closed = True pl.Update
Pagina: 43 / 56
ACE System Manager
Optimalisatie Blister-Design pi = VBA.Atn(1) * 4 Dim Punt1(0 To 2) As Double Dim Punt2(0 To 2) As Double Dim Punt3(0 To 2) As Double Dim Punt4(0 To 2) As Double Punt1(0) = a(0) Punt1(1) = a(1) Punt2(0) = a(2) Punt2(1) = a(3) Punt3(0) = (a(0) + a(2)) / 2 Punt3(1) = a(3) - 7 Set Maat1 = ThisDrawing.ModelSpace.AddDimRotated(Punt1, Punt2, Punt3, 0) Punt1(0) = a(4) Punt1(1) = a(5) Punt2(0) = a(6) Punt2(1) = a(7) Punt3(0) = a(4) + 7 Punt3(1) = (a(5) + a(7)) / 2 Set Maat1 = ThisDrawing.ModelSpace.AddDimRotated(Punt1, Punt2, Punt3, pi / 2) Dim rand(0 To 0) As AcadEntity Set rand(0) = pl regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update pl.Delete Dim reg As AcadRegion Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, di, 0) reg.Delete ext.Update 'Tekenen van de tabletten PVC If Me.cboCaps_Tabl = "Tablet" Then Select Case True Case cboAantalPocketsBreedte = 1 'eerste tablet Dim c1 As AcadCircle Dim cirkels As Variant Set c1 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c1 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c1.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i)
Pagina: 44 / 56
ACE System Manager
Optimalisatie Blister-Design regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i Case cboAantalPocketsBreedte = 2 'eerste tablet Dim c2 As AcadCircle Set c2 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c2.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c2 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c2.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'tweede tablet Dim c3 As AcadCircle Set c3 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c3.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c3 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c3.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.Update For i = LBound(cirkels) To UBound(cirkels)
Pagina: 45 / 56
ACE System Manager
Optimalisatie Blister-Design
Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i Case cboAantalPocketsBreedte = 3 'eerste tablet Dim c31 As AcadCircle Set c31 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c31.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c31 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c31.Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'tweede tablet Dim c32 As AcadCircle Set c32 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c32.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c32 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c32.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed
Pagina: 46 / 56
ACE System Manager
Optimalisatie Blister-Design ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'middelste tablet Dim c4 As AcadCircle Set c4 = Tekenen.Cirkel(B / 2, H / 2, r + 0.65) cirkels = c4.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c4 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c4.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i Case cboAantalPocketsBreedte = 4 'eerste tablet Dim c41 As AcadCircle Set c41 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c41.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c41 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c41.Delete Set reg = regions(0)
Pagina: 47 / 56
ACE System Manager
Optimalisatie Blister-Design Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'tweede van 4 tablet Dim c5 As AcadCircle Set c5 = Tekenen.Cirkel(B / 2 - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c5.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c5 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c5.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'derde van 4 tablet Dim c6 As AcadCircle Set c6 = Tekenen.Cirkel(B / 2 + 7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c6.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c6 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update
Pagina: 48 / 56
ACE System Manager
Optimalisatie Blister-Design c6.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'vierde tablet Dim c42 As AcadCircle Set c42 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c42.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c42 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c42.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i Case cboAantalPocketsBreedte = 5 'eerste tablet Dim c51 As AcadCircle Set c51 = Tekenen.Cirkel(7.5 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c51.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0)
Pagina: 49 / 56
ACE System Manager
Optimalisatie Blister-Design
Set rand(0) = c51 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c51.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'tweede van 5 tablet Dim c52 As AcadCircle Set c52 = Tekenen.Cirkel(((B - 15) / 4 + 3.75) + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c52.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c52 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c52.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i
Pagina: 50 / 56
ACE System Manager
Optimalisatie Blister-Design 'derde van 5 tablet Dim c53 As AcadCircle Set c53 = Tekenen.Cirkel(B / 2, H / 2, r + 0.65) cirkels = c53.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c53 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c53.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i 'vierde van 5 tablet Dim c54 As AcadCircle Set c54 = Tekenen.Cirkel((B - 15) / 4 * 3 + (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c54.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c54 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c54.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed
Pagina: 51 / 56
ACE System Manager
Optimalisatie Blister-Design ext.Update Next i 'vijfde tablet Dim c55 As AcadCircle Set c55 = Tekenen.Cirkel(B - 7.5 - (0.5 * d + 0.65), H / 2, r + 0.65) cirkels = c55.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set rand(0) = c55 regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update c55.Delete Set reg = regions(0) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update For i = LBound(cirkels) To UBound(cirkels) Set rand(0) = cirkels(i) regions = ThisDrawing.ModelSpace.AddRegion(rand) regions(0).Update cirkels(i).Delete Set reg = regions(aantal) Set ext = ThisDrawing.ModelSpace.AddExtrudedSolid(reg, txtTabletDikte, 5 * pi / 180) reg.Delete ext.color = acRed ext.Update Next i End Select Else 'Tekenen van een capsule Select Case True Case cboAantalPocketsBreedte = 1 'eerste capsule Dim cap1 As Acad3DSolid Dim caps As Variant AfstandVanafRand = 7.5 + 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 AfstandVanafRand2 = B - 7.5 - 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 Set cap1 = Tekenen.capsule(AfstandVanafRand, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) End Select Select Case True Case cboAantalPocketsBreedte = 2 'eerste + tweede capsule AfstandVanafRand = 7.5 + 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 AfstandVanafRand2 = B - 7.5 - 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 Set cap1 = Tekenen.capsule(AfstandVanafRand, H / 2, d, l, DraaiHoek)
Pagina: 52 / 56
ACE System Manager
Optimalisatie Blister-Design caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(AfstandVanafRand2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) End Select Select Case True Case cboAantalPocketsBreedte = 3 'eerste + tweede + derde capsule AfstandVanafRand = 7.5 + 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 AfstandVanafRand2 = B - 7.5 - 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 Set cap1 = Tekenen.capsule(AfstandVanafRand, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(AfstandVanafRand2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) End Select Select Case True Case cboAantalPocketsBreedte = 4 'eerste + tweede + derde + vierde capsule AfstandVanafRand = 7.5 + 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 AfstandVanafRand2 = B - 7.5 - 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 Set cap1 = Tekenen.capsule(AfstandVanafRand, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(AfstandVanafRand2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 2 - 7.5 - (0.5 * d), H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 2 + 7.5 + (0.5 * d), H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) End Select Select Case True Case cboAantalPocketsBreedte = 5 'eerste + tweede + derde + vierde + vijfde capsule AfstandVanafRand = 7.5 + 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 AfstandVanafRand2 = B - 7.5 - 0.5 * d * Cos(DraaiHoek * pi / 180) + l * Sin(DraaiHoek * pi / 180) / 2 Set cap1 = Tekenen.capsule(AfstandVanafRand, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(AfstandVanafRand2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 2, H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 5 + 7.5 + (0.5 * d), H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) Set cap1 = Tekenen.capsule(B / 5 * 3 + 7.5 + (0.5 * d), H / 2, d, l, DraaiHoek) caps = cap1.ArrayRectangular(Me.cboAantalPocketsLengte, 1, 1, Me.CboTransport, 1, 0) End Select ThisDrawing.Regen (acActiveViewport) Call ThisDrawing.SendCommand("Shademode g -vp -1,-1,1 ") End If
Pagina: 53 / 56
ACE System Manager
Optimalisatie Blister-Design End Sub Private Sub txtTabletDiameter_Change() Me.txtTabletDiameter = VBA.Replace(Me.txtTabletDiameter, ".", ",") End Sub Private Sub txtTabletDikte_Change() Me.txtTabletDikte = VBA.Replace(Me.txtTabletDikte, ".", ",") End Sub Private Sub txtTabletLengte_Change() Me.txtTabletLengte = VBA.Replace(Me.txtTabletLengte, ".", ",") End Sub Private Sub UserForm_Initialize() astrbloknaam(0) = "Tablet" astrbloknaam(1) = "Capsule" For i = 0 To 1 Call Me.cboCaps_Tabl.AddItem(astrbloknaam(i)) Next i 'Combobox Draaihoek Me.cboDraaihoek.AddItem (" 0") Me.cboDraaihoek.AddItem (" 45") Me.cboDraaihoek.AddItem (" 90") Me.cboDraaihoek.ListIndex = 0 'Combobox Transportbreedte Me.cboCaps_Tabl.ListIndex = 0 Me.Cbobreedte.AddItem (" 33") Me.Cbobreedte.AddItem (" 37") Me.Cbobreedte.AddItem (" 50") Me.Cbobreedte.AddItem (" 55") Me.Cbobreedte.AddItem (" 100") Me.Cbobreedte.AddItem (" 110") Me.Cbobreedte.ListIndex = 0 'Combobox Selectie Foile Me.CboFolie.AddItem (" PVC / PVdC") 'Me.CboFolie.AddItem (" Aluminium") Me.CboFolie.ListIndex = 0 'Combobox Transport Me.CboTransport.AddItem (" 17,59") Me.CboTransport.AddItem (" 18,04") Me.CboTransport.AddItem (" 18,51") Me.CboTransport.AddItem (" 19,00") Me.CboTransport.AddItem (" 19,52") Me.CboTransport.AddItem (" 20,07") Me.CboTransport.AddItem (" 20,65") Me.CboTransport.AddItem (" 21,27") Me.CboTransport.AddItem (" 21,92") Me.CboTransport.AddItem (" 22,62") Me.CboTransport.AddItem (" 23,36") Me.CboTransport.AddItem (" 24,15") Me.CboTransport.AddItem (" 25,00") Me.CboTransport.AddItem (" 25,91") Me.CboTransport.AddItem (" 26,89") Me.CboTransport.AddItem (" 27,94") Me.CboTransport.AddItem (" 29,08")
Pagina: 54 / 56
ACE System Manager
Optimalisatie Blister-Design Me.CboTransport.AddItem (" 30,32") Me.CboTransport.AddItem (" 31,67") Me.CboTransport.AddItem (" 33,14") Me.CboTransport.AddItem (" 34,76") Me.CboTransport.AddItem (" 36,54") Me.CboTransport.AddItem (" 38,51") Me.CboTransport.AddItem (" 40,71") Me.CboTransport.AddItem (" 45,97") Me.CboTransport.AddItem (" 49,14") Me.CboTransport.AddItem (" 52,78") Me.CboTransport.AddItem (" 57,00") Me.CboTransport.AddItem (" 61,96") Me.CboTransport.ListIndex = 0 'Combobox Aantal Pockets in Lengte Me.cboAantalPocketsLengte.AddItem (" 1") Me.cboAantalPocketsLengte.AddItem (" 2") Me.cboAantalPocketsLengte.AddItem (" 3") Me.cboAantalPocketsLengte.AddItem (" 4") Me.cboAantalPocketsLengte.AddItem (" 5") Me.cboAantalPocketsLengte.AddItem (" 6") Me.cboAantalPocketsLengte.AddItem (" 7") Me.cboAantalPocketsLengte.ListIndex = 0 'Combobox Aantal Pockets in Breedte Me.cboAantalPocketsBreedte.AddItem (" 1") Me.cboAantalPocketsBreedte.AddItem (" 2") Me.cboAantalPocketsBreedte.AddItem (" 3") Me.cboAantalPocketsBreedte.AddItem (" 4") Me.cboAantalPocketsBreedte.AddItem (" 5") Me.cboAantalPocketsBreedte.ListIndex = 0 'Aanroepen van de Database Dim db As ADODB.Connection Set db = CreateObject("adodb.connection") Bestand = "C:\Autocad\AutoCad HBO\HBO Database\capsules.mdb" Bestand = VBA.GetSetting("Blister", "Algemeen", "Database", Bestand) Dim sql As String Openen: sql = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Bestand On Error Resume Next db.Open (sql) If Err Then Bestand = VBA.InputBox("Can not found the Database", "Error", Bestand) Call VBA.SaveSetting("Blister", "Algemeen", "Database", Bestand) GoTo Openen End If On Error GoTo 0 Dim rs As Recordset sql = "SELECT * FROM tabel2" Set rs = db.Execute(sql) For i = 0 To 19 Naam = rs.Fields("Naam").Value Me.cboCapsulesoort.AddItem (Naam) CapsuleMaat(i, 0) = rs.Fields("Diepte")
Pagina: 55 / 56
ACE System Manager
Optimalisatie Blister-Design CapsuleMaat(i, 1) = rs.Fields("Breedte") CapsuleMaat(i, 2) = rs.Fields("Lengte") rs.MoveNext Next i Me.cboCapsulesoort.ListIndex = 0 Set rs = Nothing db.Close Set db = Nothing End Sub
Pagina: 56 / 56
ACE System Manager