Changes between Version 9 and Version 10 of OpenCascade
- Timestamp:
- Oct 11, 2011, 11:14:25 AM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OpenCascade
v9 v10 30 30 Open, Components, Services: Odprti dostop, komponente – osnovne, vzdrževanje 31 31 32 Na sliki 1 5.1je prikazana struktura in modularna zgradba OC. Predstavljena je sestava in pozicija posameznega modula v OC. V nadaljevanju bomo predstavili značilnosti vseh pomembnih vsebin posameznih modulov.32 Na sliki 1 je prikazana struktura in modularna zgradba OC. Predstavljena je sestava in pozicija posameznega modula v OC. V nadaljevanju bomo predstavili značilnosti vseh pomembnih vsebin posameznih modulov. 33 33 34 34 === Osnovne transformacije (ang. Fundation Classes) === … … 102 102 103 103 WOK (Workshop Organization Kit) je podprogramski sklop, ki omogoča odpošiljanje enega ali več nizov strukturnih elementov programske kode velikih razvojnih projektov. Tak projekt je lahko sklop razvojnih podprojektov, ki jih nato razvijalci uporabijo za nadaljnji razvoj s standardnimi orodji in v sistemu organizacije različnih razvojnih timov v distribuiranih delovnih področjih. WOK omogoča prost dostop do standardnih nalog razvojnega procesa z raznimi orodji, kot so: urejevalniki (editorji), prevajalniki, povezovalniki (linkerji), iskalniki napak (debugerji) itd. 104 Na sliki 15.2 je prikazan kompleksni 3D-model. Model je narejen s CAD-jedrom OC. Poleg izdelave omenjenih geometrij je v prikazovalniku predstavljena možnost zaslonskega izbiranja posameznih komponent.104 Na sliki 2 je prikazan kompleksni 3D-model. Model je narejen s CAD-jedrom OC. Poleg izdelave omenjenih geometrij je v prikazovalniku predstavljena možnost zaslonskega izbiranja posameznih komponent. 105 105 [[BR]] 106 106 [[Image(slika15-3.png, width=480px,align=center)]] 107 107 [[BR]] 108 108 109 Slika 15.3 prikazuje pomreženi 3D-model v OC. Po izdelavi mreže lahko naredimo analizo z MKE (metoda končnih elementov). Rezultate analize MKE nato v nadaljevanju prikažemo na istem modelu. Predstavitve so mogoče za različne parametre: napetosti, pomiki, temperatura z različnimi atributi.109 Slika 3 prikazuje pomreženi 3D-model v OC. Po izdelavi mreže lahko naredimo analizo z MKE (metoda končnih elementov). Rezultate analize MKE nato v nadaljevanju prikažemo na istem modelu. Predstavitve so mogoče za različne parametre: napetosti, pomiki, temperatura z različnimi atributi. 110 110 111 111 = Predstavitev CAD-jedra Open CASCADE na primerih = … … 114 114 115 115 Na enostavnem primeru je prikazan postopek izdelave 3D-modela. Izdelava 3D-modela se začne na nivoju točk, nato pa se preko definiranja robov in uporabe funkcije za zrcaljene izvleče nastalo ravninsko površino v 3D-model. V nadaljevanju so prikazani ukazi za 3D-modeliranje z uporabo knjižnic Open CASCADE. Vsi zapisi bodo uporabljali programski jezik C++. 116 Na sliki 15.4 je prikazan 3D-model, ki ga želimo izdelati. Model je orientiran glede na globalni kartezični koordinatni sistem XYZ, prikazan na sliki 15.4. Model je parametrično popisan z dimenzijami višine, dolžine in širine.116 Na sliki 4 je prikazan 3D-model, ki ga želimo izdelati. Model je orientiran glede na globalni kartezični koordinatni sistem XYZ, prikazan na sliki 4. Model je parametrično popisan z dimenzijami višine, dolžine in širine. 117 117 Velikost parametrov modela: 118 118 višina: myHeight = 70 mm, … … 138 138 gp_Pnt je določen z izbrano vrednostjo in ima enako kot podobni objekti omejeno življenjsko dobo. 139 139 Geom_CartesianPoint je opredeljen glede na pozicijo handla, lahko je večkrat naslovljen in ima daljšo življenjsko dobo kot gp_Pnt. Vse točke so uporabljene le za pomoč pri tvorjenju krivulj za objekt omejene življenjske dobe. 140 V našem primeru izberemo za kreiranje točk gp_Pnt objekt. Po izbiri gp_Pnt moramo definirati koordinate X, Y in Z v globalnem kartezičnem koordinatnem sistemu (slika 15.6).140 V našem primeru izberemo za kreiranje točk gp_Pnt objekt. Po izbiri gp_Pnt moramo definirati koordinate X, Y in Z v globalnem kartezičnem koordinatnem sistemu (slika 6). 141 141 [[BR]] 142 142 [[Image(slika15-6.png, width=480px,align=center)]] … … 144 144 145 145 Če se odločimo uporabiti za kreiranje objekta Geom_CartesianPoint, pa je sintaksa izdelave posamezne točke drugačna. Vsi objekti, zgrajeni s kazalcem handle, morajo uporabljati standarden C++ operator new. Podatki se zbirajo po principu, ki je prikazan na 146 sliki 15.7. Grajenje objektov različnih velikosti je izvedeno na enak način.146 sliki 7. Grajenje objektov različnih velikosti je izvedeno na enak način. 147 147 [[BR]] 148 148 [[Image(slika15-7.png, width=480px,align=center)]] 149 149 [[BR]] 150 150 151 Če želimo v nadaljevanju programa prebrati podatke (npr. koordinate) o katerikoli izbrani točki v kartezičnem koordinatnem sistemu, lahko to opravimo na način, prikazan na sliki 15.8.151 Če želimo v nadaljevanju programa prebrati podatke (npr. koordinate) o katerikoli izbrani točki v kartezičnem koordinatnem sistemu, lahko to opravimo na način, prikazan na sliki 8. 152 152 [[BR]] 153 153 [[Image(slika15-8.png, width=480px,align=center)]] … … 161 161 [[BR]] 162 162 163 Za risanje krivulj, prikazanih na sliki 15.9 moramo v programsko kodo vključiti trodimenzionalne geometrijske objekte, ki se nahajajo v paketu OC Geom. Za vse vrste krivulj (npr. daljica je krivulja) uporabimo specifičen ukaz. V našem primeru za izdelavo segmenta (ravna linija – daljica) uporabimo objekt GC_MakeSegment. Segment se izdela tako, da določimo dve robni točki P1 in P2 in za povezavo med njima določimo ravno linijo. Za objekt po sliki 15.9 moramo povezati oba konca segmentov s krivuljo, ki je določena s tremi točkami. Izbor zaporednih ukazov za posamezne geometrijske elemente, to je dveh segmentov in loka, je prikazan na sliki 15.10. Obe funkciji za izdelavo krivulj uporabljata ukaz handle Geom_TrimmedCurve.163 Za risanje krivulj, prikazanih na sliki 9 moramo v programsko kodo vključiti trodimenzionalne geometrijske objekte, ki se nahajajo v paketu OC Geom. Za vse vrste krivulj (npr. daljica je krivulja) uporabimo specifičen ukaz. V našem primeru za izdelavo segmenta (ravna linija – daljica) uporabimo objekt GC_MakeSegment. Segment se izdela tako, da določimo dve robni točki P1 in P2 in za povezavo med njima določimo ravno linijo. Za objekt po sliki 9 moramo povezati oba konca segmentov s krivuljo, ki je določena s tremi točkami. Izbor zaporednih ukazov za posamezne geometrijske elemente, to je dveh segmentov in loka, je prikazan na sliki 10. Obe funkciji za izdelavo krivulj uporabljata ukaz handle Geom_TrimmedCurve. 164 164 [[BR]] 165 165 [[Image(slika15-10.png, width=480px,align=center)]] … … 170 170 [[BR]] 171 171 172 V primeru, da se pred risanjem izbrane krivulje želimo prepričati o možnosti izdelave krivulje, uporabimo ukaza isDone in Value. Uporaba obeh ukazov je predstavljena na primeru kreiranja segmenta po sliki 1 5.11.172 V primeru, da se pred risanjem izbrane krivulje želimo prepričati o možnosti izdelave krivulje, uporabimo ukaza isDone in Value. Uporaba obeh ukazov je predstavljena na primeru kreiranja segmenta po sliki 11. 173 173 174 174 === Definiranje podatkovne topološke strukture === … … 190 190 [[BR]] 191 191 192 Posamezne izrisane krivulje združimo glede na ukazje po tabeli 1 5.1 tako, da dobimo tri robove, ki so med seboj povezani (slika 15.12), zato jih omenjeni ukazi tudi označijo ter atribute zapišejo v bazo podatkov.192 Posamezne izrisane krivulje združimo glede na ukazje po tabeli 1 tako, da dobimo tri robove, ki so med seboj povezani (slika 12), zato jih omenjeni ukazi tudi označijo ter atribute zapišejo v bazo podatkov. 193 193 Ukazni sklop TopoDS določa le podatkovno topološko strukturo elementov. Algoritmi za izračun standardnih topoloških elementov se nahajajo v paketu BrepBuilder API. Za izdelavo roba se uporabi objekt BRepBuilderAPI_MakeEdge z že določenimi krivuljami. 194 194 [[BR]] … … 220 220 [[BR]] 221 221 222 Pred procesom zrcaljenja pa moramo opredeliti širši prostor, v katerem bomo nato uporabili 3D-transformacije. V ta namen vključimo modul za trodimenzionalno geometrijsko transformacijo (gp_Trsf). Omenjeni modul vsebuje značilne funkcije transformacij, kot so translacija, rotacija, skaliranje, zrcaljene itd., in omogoča različne kombinacije med njimi. V našem primeru se osredotočimo na zrcaljene okrog osi X globalnega koordinatnega sistema XYZ (glej sliko 15.4).222 Pred procesom zrcaljenja pa moramo opredeliti širši prostor, v katerem bomo nato uporabili 3D-transformacije. V ta namen vključimo modul za trodimenzionalno geometrijsko transformacijo (gp_Trsf). Omenjeni modul vsebuje značilne funkcije transformacij, kot so translacija, rotacija, skaliranje, zrcaljene itd., in omogoča različne kombinacije med njimi. V našem primeru se osredotočimo na zrcaljene okrog osi X globalnega koordinatnega sistema XYZ (glej sliko 4). 223 223 Os X, okoli katere bomo izvajali rotacijo, lahko določimo na dva načina: 1) točka P1 in smer vektorja, ki poteka skozi točko P1, 2) s posebnim ukazom za določitev osi X. 224 224 1) točka P1 in smer vektorja, ki poteka skozi točko P1 … … 294 294 === Zaokroževanje robov === 295 295 296 Ker so robovi nastale prizme ostri, jih želimo zaokrožiti. Za zaokroževanje robov se uporabi v OC ukaz Fillet (zaokroževanje). V našem primeru zapleteno zaokroževanje robov poenostavimo na način, da so vsi robovi enako zaokroženi s polmerom myThickness/12 (glej sliko 15.28).296 Ker so robovi nastale prizme ostri, jih želimo zaokrožiti. Za zaokroževanje robov se uporabi v OC ukaz Fillet (zaokroževanje). V našem primeru zapleteno zaokroževanje robov poenostavimo na način, da so vsi robovi enako zaokroženi s polmerom myThickness/12 (glej sliko 28). 297 297 [[BR]] 298 298 [[Image(slika15-28.png, width=300px,align=center)]] … … 338 338 = Izdelava 3D-modela vozlišča jeklene konstrukcije = 339 339 340 Izdelava CAD-modela vozlišča jeklene konstrukcije je prikazana na primeru izdelave nosilnega vozliščnega elementa v poljubni mrežni strukturi, prikazani na sliki 15.35. Pri predstavitvi bomo uporabljali programski jezik C++ in odprtokodno CAD-jedro Open CASCADE (OC). Odločitev za uporabo OC je bila v tem primeru osnovana na zahtevi popolnega prosto površinskega modela, ki bi bil generiran v posebnem generatorju oblik, nato prenesen v inženirski model za analizo napetostnih stanj, zatem pa preverjan glede na detajlno obliko v vozliščih, ki bi se v končni uporabi prenesli v mikrookolje za končno varjenje vozliščnega sklopa v robotiziranih sistemih. Omenjeni model CAD je potrebno izdelati za poljubne mrežne točke, ki se nahajajo v prostoru in imajo različno orientacijo. Vsaka točka mrežne strukture je povezana z najmanj tremi točkami. Poudarjamo, da je bilo prav zaradi kompleksnosti problema uporabljeno CAD-jedro OC, ki omogoča izdelavo splošnega modela in ga bo mogoče izdelati za poljubno mrežno strukturo.340 Izdelava CAD-modela vozlišča jeklene konstrukcije je prikazana na primeru izdelave nosilnega vozliščnega elementa v poljubni mrežni strukturi, prikazani na sliki 35. Pri predstavitvi bomo uporabljali programski jezik C++ in odprtokodno CAD-jedro Open CASCADE (OC). Odločitev za uporabo OC je bila v tem primeru osnovana na zahtevi popolnega prosto površinskega modela, ki bi bil generiran v posebnem generatorju oblik, nato prenesen v inženirski model za analizo napetostnih stanj, zatem pa preverjan glede na detajlno obliko v vozliščih, ki bi se v končni uporabi prenesli v mikrookolje za končno varjenje vozliščnega sklopa v robotiziranih sistemih. Omenjeni model CAD je potrebno izdelati za poljubne mrežne točke, ki se nahajajo v prostoru in imajo različno orientacijo. Vsaka točka mrežne strukture je povezana z najmanj tremi točkami. Poudarjamo, da je bilo prav zaradi kompleksnosti problema uporabljeno CAD-jedro OC, ki omogoča izdelavo splošnega modela in ga bo mogoče izdelati za poljubno mrežno strukturo. 341 341 [[BR]] 342 342 [[Image(slika15-35.png, width=480px,align=center)]] … … 344 344 345 345 Primer, ki ga obravnavamo, je predstavljen zato, da lahko potrdimo možnost celotnega procesa razvoja, inženirske analize, konstrukcije, izdelave, transporta, montaže in finalne uporabe. Pri tem je bil razvit poseben program, ki omogoča spremljanje vseh faz procesa zato, ker je v celoti določena geometrija in so sprotno obvladljivi vsi podatki, potrebni za kakršnekoli analize in določanja oblike. Zaradi povečane hitrosti procesiranja je bila prednost takega pristopa izkazana že v treh ponovljenih izvedbah. 346 Na sliki 15.35 je prikazan mrežni model CAD, izdelan s programskim jezikom C++ in CAD-jedrom OC. Mrežni model je izdelan iz poljubne vhodne mrežne strukture, ki je sestavljena iz petnajstih vozlišč. Za vsako vozlišče bomo glede na orientacijo posameznega vozlišča izdelali cilindrični vozliščni element, na katerega se varijo oziroma po potrebi vijačijo I-profili, ki jih modeliramo v poenostavljeni obliki.346 Na sliki 35 je prikazan mrežni model CAD, izdelan s programskim jezikom C++ in CAD-jedrom OC. Mrežni model je izdelan iz poljubne vhodne mrežne strukture, ki je sestavljena iz petnajstih vozlišč. Za vsako vozlišče bomo glede na orientacijo posameznega vozlišča izdelali cilindrični vozliščni element, na katerega se varijo oziroma po potrebi vijačijo I-profili, ki jih modeliramo v poenostavljeni obliki. 347 347 [[BR]] 348 348 [[Image(slika15-36.png, width=300px,align=center)]] … … 377 377 378 378 Predstavljene točke moramo združiti v linijske robne elemente, ki jih v nadaljevanju uporabimo za tvorjenje mreže robov, nato v zaprte mreže robov oz. zanke, površine in na koncu po izvajanju izvleka opredelimo še pravi 3D-model. 379 Iz robov myEdge1 … myEdge12 v nadaljevanju tvorimo mrežo myWire1 … myWire3. Ker lahko v eno mrežo vključimo največ štiri robove, je potrebno izdelati tri mreže, ki jih združimo (Add) in ustvarimo eno mrežo z imenom myWire, kakor je prikazano na sliki 15.40.379 Iz robov myEdge1 … myEdge12 v nadaljevanju tvorimo mrežo myWire1 … myWire3. Ker lahko v eno mrežo vključimo največ štiri robove, je potrebno izdelati tri mreže, ki jih združimo (Add) in ustvarimo eno mrežo z imenom myWire, kakor je prikazano na sliki 40. 380 380 [[BR]] 381 381 [[Image(slika15-40.png, width=480px,align=center)]] … … 389 389 === Rezanje profilnih elementov === 390 390 391 Vozliščni element v realnem svetu predstavlja določen premer valja, ki ima središčno os enako, kot je središčni vektor vozlišča. Da lahko opredelimo ravnino, kjer se I-profil v dotiku z valjem vozliščnega elementa konča, moramo najprej opredeliti ravnino, ki je tangencialna na valj vozliščnega elementa. Ne pozabite, da ves čas razumemo, da je vozliščni element postavljen v 3D-prostoru. Zaradi postopka moramo najprej določiti valj vozliščnega elementa (slika 15.42).391 Vozliščni element v realnem svetu predstavlja določen premer valja, ki ima središčno os enako, kot je središčni vektor vozlišča. Da lahko opredelimo ravnino, kjer se I-profil v dotiku z valjem vozliščnega elementa konča, moramo najprej opredeliti ravnino, ki je tangencialna na valj vozliščnega elementa. Ne pozabite, da ves čas razumemo, da je vozliščni element postavljen v 3D-prostoru. Zaradi postopka moramo najprej določiti valj vozliščnega elementa (slika 42). 392 392 [[BR]] 393 393 [[Image(slika15-42.png, width=480px,align=center)]] … … 399 399 400 400 401 V prvem delu (slika 15.43) kode določimo pozicijo, smer in premer valja, ki ga generiramo kot del vozliščnega elementa. Nato pa v nadaljevanju odrežemo že generirane I-profile od po sliki 15.43 generiranega valja vozliščnega elementa. Ukaz za Booleanovo operacijo je predstavljen na sliki 15.44.401 V prvem delu (slika 43) kode določimo pozicijo, smer in premer valja, ki ga generiramo kot del vozliščnega elementa. Nato pa v nadaljevanju odrežemo že generirane I-profile od po sliki 43 generiranega valja vozliščnega elementa. Ukaz za Booleanovo operacijo je predstavljen na sliki 44. 402 402 [[BR]] 403 403 [[Image(slika15-44.png, width=480px,align=center)]] … … 416 416 417 417 Valj vozliščnega elementa ima določene dimenzije, ki jih moramo določiti vnaprej. Vnos podatkov je postopen in v bistvu parametričen. Če so določene dimenzije znane, pa jih vnašamo kar z dejanskimi vrednostmi. 418 Parameter oz. spremenljivka radius (slika 15.45) določa polmer cilindra, ki je 75 mm. S spremenljivko radius_axis se popiše polmer srednje izvrtine v valju, višino valja določa spremenljivka height z 31 mm. Izvrtino v večji valj se naredi z uporabo Booleanove operacije razlike BrepAlgo_Cut.419 Po opredelitvi valja, ki še nima določene lokacije v prostoru, pristopimo k opredelitvi izhodiščne točke oziroma njene umestitve v lokalnem koordinatnem sistemu, z definiranjem spremenljivke circleLocation (glej sliko 15.45).418 Parameter oz. spremenljivka radius (slika 45) določa polmer cilindra, ki je 75 mm. S spremenljivko radius_axis se popiše polmer srednje izvrtine v valju, višino valja določa spremenljivka height z 31 mm. Izvrtino v večji valj se naredi z uporabo Booleanove operacije razlike BrepAlgo_Cut. 419 Po opredelitvi valja, ki še nima določene lokacije v prostoru, pristopimo k opredelitvi izhodiščne točke oziroma njene umestitve v lokalnem koordinatnem sistemu, z definiranjem spremenljivke circleLocation (glej sliko 45). 420 420 [[BR]] 421 421 [[Image(slika15-46.png, width=480px,align=center)]] … … 435 435 [[BR]] 436 436 437 Na sliki 15.49 imamo predstavljen model CAD našega vozliščnega elementa z vsemi priključenimi I-profili, ki je uvožen v formatu STEP/IGES v ProE Wildfire 3.0. Na ta način dokazujemo splošno uporabnost takega nevtralnega formata.438 439 15.4.2Izdelava modela CAD I-profila437 Na sliki 49 imamo predstavljen model CAD našega vozliščnega elementa z vsemi priključenimi I-profili, ki je uvožen v formatu STEP/IGES v ProE Wildfire 3.0. Na ta način dokazujemo splošno uporabnost takega nevtralnega formata. 438 439 Izdelava modela CAD I-profila 440 440 441 441 Z namenom, da predstavimo pomembne prednosti modeliranja v programskem okolju OC, bomo v nadaljevanju predstavili model CAD poenostavljenega I-profila, ki je bil izdelan s programskim jezikom C++. … … 444 444 [[BR]] 445 445 446 Slika 15.50 prikazuje model CAD poenostavljenega I-profila. Predstavljeni elementi I-profilov so odrezani glede na zunanjo površino cilindričnega vozlišča. V nadaljevanju je predstavljen algoritem poteka izdelave modela CAD poenostavljenega I-profila.446 Slika 50 prikazuje model CAD poenostavljenega I-profila. Predstavljeni elementi I-profilov so odrezani glede na zunanjo površino cilindričnega vozlišča. V nadaljevanju je predstavljen algoritem poteka izdelave modela CAD poenostavljenega I-profila. 447 447 448 448 === Izbira poljubnega roba ali celotne mrežne strukture === … … 472 472 [[BR]] 473 473 474 === Tvorjenje robnih točk poenostavljenega I-profila (glej sliko 15.48) ===475 476 Prerez v splošnem popišemo najmanj s tremi točkami. Število točk za popis posameznega prereza določa njegova zahtevnost oziroma naša zahteva po natančnosti popisa. I-profil v našem primeru poenostavimo in ga popišemo z dvanajstimi točkami (glej sliko 15.48). Točka a.XYZ() določa tudi začetek I-profila. Začetna točka a nam omogoča opredelitev celotnega prereza ter njegovo lokacijo v prostoru, saj je točka a izhodiščna točka. Razdalja startI predstavlja odmik profila od začetne vozliščne točke mreže vozlišč jeklene konstrukcije v smeri robne normale normal.XYZ(). Glavne dimenzije prereza določamo s širino I- profila in jo določa parameter widthI1. Parameter widthI1 je usmerjen v smeri pravokotno na normalo roba normal2.XYZ(). Širino pasnice istega poenostavljenega I-profila popisuje parameter lengthI1.474 === Tvorjenje robnih točk poenostavljenega I-profila (glej sliko 48) === 475 476 Prerez v splošnem popišemo najmanj s tremi točkami. Število točk za popis posameznega prereza določa njegova zahtevnost oziroma naša zahteva po natančnosti popisa. I-profil v našem primeru poenostavimo in ga popišemo z dvanajstimi točkami (glej sliko 48). Točka a.XYZ() določa tudi začetek I-profila. Začetna točka a nam omogoča opredelitev celotnega prereza ter njegovo lokacijo v prostoru, saj je točka a izhodiščna točka. Razdalja startI predstavlja odmik profila od začetne vozliščne točke mreže vozlišč jeklene konstrukcije v smeri robne normale normal.XYZ(). Glavne dimenzije prereza določamo s širino I- profila in jo določa parameter widthI1. Parameter widthI1 je usmerjen v smeri pravokotno na normalo roba normal2.XYZ(). Širino pasnice istega poenostavljenega I-profila popisuje parameter lengthI1. 477 477 [[BR]] 478 478 [[Image(slika15-54.png, width=480px,align=center)]] … … 488 488 === Tvorjenje mreže robov (zanke) iz robov prereza === 489 489 490 Če želimo opredeliti zaprto mrežo robov (zanke) iz robov prereza, moramo robove myEdge1…myEdge12 združiti. Omenjene robove smo opredelili z ukazi po sliki 15.53. Najprej izvedemo združevanje v mreže myWire1…myWire3, ki jih v naslednjem koraku združimo z ukazom Add v skupno mrežo myWire.490 Če želimo opredeliti zaprto mrežo robov (zanke) iz robov prereza, moramo robove myEdge1…myEdge12 združiti. Omenjene robove smo opredelili z ukazi po sliki 53. Najprej izvedemo združevanje v mreže myWire1…myWire3, ki jih v naslednjem koraku združimo z ukazom Add v skupno mrežo myWire. 491 491 [[BR]] 492 492 [[Image(slika15-56.png, width=480px,align=center)]] … … 517 517 = Literatura = 518 518 519 1 OpenCascadeTM 3D modelling kernel. OpenCascade inc. 2009, www. opencascade.org/.[[BR]]519 1 OpenCascadeTM 3D modelling kernel. OpenCascade inc. 2009, http://www. opencascade.org/.[[BR]] 520 520 2 Copyright© 2003 by Open CASCADE – A. Immeuble, Domaine Technologique de Saclay 4, rue Rene Razel, 91400 SACLAY – France.[[BR]] 521 521 3 L. Kos, S. Kulovec, V. Zaletelj, J. Duhovnik, Support Structure for Freeform Arhitectural Desing (TMCE 2010).[[BR]]