AutoCAD-natiiviobjektin toteutus
Kontiotuote OY Maailman toiseksi suurin hirsitalotoimittaja Aloittanut toimintansa 70-luvulla Liikevaihto vuonna 2003-37,355 Milj. euroa josta vientiä 7,376 Milj. euroa Työntekijöitä vuonna 2003 noin 230 Kotipaikka Pudasjärvi, myyntikonttoreita ympäri maata
Pudasjärven tehdas
AutoCAD ja Tietokoneavusteinen suunnittelu AutoCAD on markkinajohtaja ohjelmisto tietokoneavusteiseen suunnitteluun. Tätä tietokoneavusteista suunnitelua kutsutaan kansainvälisesti termeillä: CAD(Computer Aided Desing) CAM (Computer Aided Manufacturing) Nykyään n. 95% kaikesta suunnittelusta tehdään tietokoneavusteisesti AutoDesk julkaisi ensimmäisen version vuonna 1982 Tämän jälkeen useita eri versioita
AutoCADin muokattavuus Koska perus AutoCADit ovat niin sanotusti yleiskäyttöisiä ohjelmistoja, AutoCADohjelmistoja räätälöidään kunkin yrityksen ja toimialan tarpeisiin Tarjolla myös valmiita ratkaisuja VBA (Visual Basic for Applications) ObjectARX ja ObjectDBX LISP Tietokanta
AutoCADin VBA AutoDesk lisäsi VBA:n AutoCADin versioon R14 Yksinkertainen Ei salli natiiviobjektien luomista
AutoCADin ObjectARX / ObjectDBX C++/MFC/ATL/COM -pohjainen ohjelmointirajapinta Lisättiin AutoCADin versioon R13 ObjectARXilla tehdään kaikki muut toiminnot paitsi objektit. ObjectDBX komponentit tarvitsevat aina ObjectARX -, LISP -, VBA - tai muun vastaavan rajapinnan toimiakseen ObjectDBXillä luodaan AutoCADin tietokantarakennekomponentti, eli esimerkiksi natiiviobjektit.
Mikä on natiiviobjekti? Graaffinen objekti Voidaan toteuttaa halutut toiminnot Itsenäinen Ei sisällä käyttöliittymää Tietokantarakennekomponentti Voidaan tehdä useita instansseja Oma XData (Extended Entity Data)
HirsiCAD 2002 Laajennus AutoCADiin Käytössä hirsirakenteiden suunnittelussa Kontiotuotteella. Toimii AutoCAD 2000/2002 -ympäristöissä Toteutettu VBA (Visual Basic for Applications) -ohjelmointikielellä.
Tutkimustehtävä Koska VBA ei salli AutoCADin syvällistä muokkaamista, toimeksiantaja halusi selvittää, kuinka ObjectARX-teknologiaa hyödyntäen HirsiCAD 2002:sta voitaisiin kehtitää toimimaan paremmin monimutkaisten grafiikkaobjektien kanssa Asiat, joita oli tarkoitus selvittää: tutkia, kuinka ObjectARXilla pystyttäisiin tekemään monimutkaisia kolmiulotteisiakin objekteja tutkia ja käytännössä testata, kuinka nämä ohjelmoimalla toteutetut natiiviobjektit saataisiin toimimaan VBA:lla tehdyssä ohjelmistossa tutkia kuinka objekti käyttäytyy, jos AutoCADin versiota vaihdetaan arvioida onko näiden monimutkaisempien objektien luominen taloudellisesti kannattavaa käyttäen ObjectARXia
Aloitus Käytetyt ohjelmistot: AutoCAD 2002 Visual Studio.Net ja 6.0 ObjectARX SDK Alkuun SDK:n opettelua kirjan mukaan Visual Studio.Net:illä tuntui olevan vaikeuksia käyttää ObjectARX 2002:sen SDK:ta. Vaatimusmäärittely
Natiiviobjekti Tutkimus objektiksi valitsimme yksinkertaisen pilarin. (suorakulmainen särmiö ja suora ympyrälieriö) Tarvittiin sekä ObjectDBX että ObjectARX projektit Objektin rungoksi valitisin 3D-solid muodon, jolla pystyi valmiiksi piirtämään halutut geometriat. Käyttöliittymä
Esimerkki pilareista
Toimivuus VBAn kanssa Mahdollista Tarvitsee ns. warpper luokan rajapinnaksi ATL
Kannattaako taloudellisesti? Toteutus vei noin 250 tuntia Uusi objekti minulta syntyisi nyt noin 50-100 tunnissa. Jos toteutettavat objektit sisältävät hieman enemmän toimintoja niin niihin käytetty ohjelmointi aika maksaa itsensä takaisin suunniteluajassa pitemmällä tähtäimellä.
Tulokset #1 Työn toteutuksen aikana selvisi, että ObjectARXilla ei suoraan pystytä tekemään natiiviobjekteja, mutta käyttäen ObjectDBXää tämä on mahdollista. Tehtyjä objekteja pystytään kutsumaan VBA:lla, jos niille tehdään rajapintaluokka käyttäen ObjectARXia.
Tulokset #2 Koska en saanut käyttööni AutoCADin muita versioita, en kyennyt testaamaan kuinka nämä objektit toimivat muissa AutoCADversioissa, teoriassa tämän pitäisi onnistua. Taloudellisesti objektien toteutus on kannattavaa, kunhan objekti ei ole liian yksinkertainen.
Ongelmia ObjectARXiin ja ObjectDBXään vaikea päästä sisälle Materiaalin määrä ja sen laatu Bugit velhossa
Yhteenveto Toimiva mutta vaativa teknologia Tarvitaan niin C++ osaamista, kuin AutoCAD osaamista Hyvin toteutetut natiiviobjektit säästävät suunnittelijoiden työtä
Mitä opin? AutoCAD perusteita ObjectARXia ja DBX kohtuullisen syvällisesti Projektityöskentelyä