Changes between Version 5 and Version 6 of OpenCascade


Ignore:
Timestamp:
Oct 10, 2011, 4:17:42 PM (9 years ago)
Author:
skulovec
Comment:

Klicanje slik -- nekatere mi še manjkajo --jih ni v priponki!!!

Legend:

Unmodified
Added
Removed
Modified
  • OpenCascade

    v5 v6  
    1515== Modularna struktura CAD-jedra Open CASCADE ==
    1616[[BR]]
    17 [[Image(Slika15-1.png)]]
     17[[Image(slika15-1.png)]]
    1818[[BR]]
    1919Other CAD systems: Ostali modelirniki CAD
     
    9797=== Razvojna orodja (ang. Development tools) ===
    9898Open CASCADE vsebuje celoten sklop razvijalnih orodij, ki so primerni tako za posamezne razvijalce kode CAD kot tudi za uporabo pri večjih industrijskih projektih CAD. OC Test Harness ali Draw sta orodji, napisani v programskem jeziku C++ in namenjeni testiranju geometrijsko modelirnih knjižnic. Tako orodje omogoča testiranje in demonstracijo modeliranih komponent pred izdelavo celotne aplikacije. Sestavljeno je iz programskih podsklopov, in sicer: ukaznega interpreterja v jeziku TCL, 2D- in 3D-pregledovalnika, osnovanega na X v sistemih Unix in Win32 API v sistemih Windows, in sklopa preddefiniranih ukazov.
    99 
    100 TODO: Slika 2
     99[[BR]]
     100[[Image(slika15-2.png)]]
     101[[BR]]
    101102
    102103WOK (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.
    103104Na 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 
    105 TODO: Slika 3
     105[[BR]]
     106[[Image(slika15-3.png)]]
     107[[BR]]
    106108
    107109Slika 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.
     
    116118višina: myHeight = 70 mm,
    117119dolžina: myWidth = 50 mm,
    118 
    119 TODO: Slika 4
     120[[BR]]
     121[[Image(slika15-4.png)]]
     122[[BR]]
    120123
    121124== Algoritem izdelave enostavnega 3D-modela ==
     
    124127
    125128Če želimo izdelati želeni 3D-profil, je potrebno v prvem koraku kreirati točke v ravnini XY0, ki ležijo na isti ravnini.
    126 
    127 TODO Slika 5
     129[[BR]]
     130[[Image(slika15-5.png)]]
     131[[BR]]
    128132
    129133V OC obstajata dve možnosti za popis točke v kartezičnem koordinatnem sistemu:
     
    135139Geom_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.
    136140V 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).
    137 
    138 SLika 6
     141[[BR]]
     142[[Image(slika15-6.png)]]
     143[[BR]]
    139144
    140145Č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
    141146sliki 15.7. Grajenje objektov različnih velikosti je izvedeno na enak način.
    142 
    143 Slika 7
     147[[BR]]
     148[[Image(slika15-7.png)]]
     149[[BR]]
    144150
    145151Č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.
    146 
    147 Slika 8
     152[[BR]]
     153[[Image(slika15-8.png)]]
     154[[BR]]
    148155
    149156=== Povezovanje točk s krivuljami ===
    150157
    151158Predhodno določene točke med sabo povežemo tako, da tvorijo geometrijo, sestavljeno iz dveh segmentov in enega loka, ki je napet med tremi točkami.
    152 
    153 Slika 9
     159[[BR]]
     160[[Image(slika15-9.png)]]
     161[[BR]]
    154162
    155163Za 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.
    156 
    157 Slika 10
    158 
    159 Slika 11
     164[[BR]]
     165[[Image(slika15-10.png)]]
     166[[BR]]
     167
     168[[BR]]
     169[[Image(slika15-11.png)]]
     170[[BR]]
    160171
    161172V 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 15.11.
     
    193204TopoDS_Compound
    194205Sklop katerihkoli oblik
    195 
    196 Slika 12
     206[[BR]]
     207[[Image(slika15-12.png)]]
     208[[BR]]
    197209
    198210Posamezne izrisane krivulje združimo glede na ukazje po tabeli 15.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.
    199211Ukazni 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.
    200 
    201 SLika 13
     212[[BR]]
     213[[Image(slika15-13.png)]]
     214[[BR]]
    202215
    203216V OC je poleg izdelave robov s preddoločenimi krivuljami mogoča tudi izdelava robov neposredno s pomočjo določitve posameznih točk. Omenjeni način pa velja samo za izdelavo ravnih krivulj med dvema poljubnima točkama.
    204 
    205 Slika 14
     217[[BR]]
     218[[Image(slika15-14.png)]]
     219[[BR]]
    206220
    207221=== Mreženje skupine robov ===
     
    213227
    214228Za izdelavo mreže se v primeru treh robov uporabi neposredno metodo izdelovanja mreže, ki je prikazana v naslednji formi C++:
    215 
    216 Slika 15
     229[[BR]]
     230[[Image(slika15-15.png)]]
     231[[BR]]
    217232
    2182332)      Mreženje skupine robov, ki je zaprto
    219234
    220235Robove, ki so povezani med seboj tako, da so v zaprti zanki, lahko uporabimo za različne namene. Najpogostejša uporaba je izvlek, ki fizično lahko opredeljuje različne profile (npr. U, I ipd.). Tako dobimo zelo hitro različne 3D-modele profilov, ki jih v vsakdanjem življenju najpogosteje uporabljamo. Najlažji način za izdelavo zaprtega profila je, da določen rob ali skupino robov prezrcalimo in nato prezrcaljeni rob ali skupino robov pridružimo prvotni mreži profila.
    221 
    222 Slika 16
     236[[BR]]
     237[[Image(slika15-16.png)]]
     238[[BR]]
    223239
    224240Pred 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).
     
    227243os X poteka skozi točko P1(0, 0, 0) – uporabimo ukaz gp_Pnt
    228244smer osi X določa enotski vektor (1, 0, 0) – uporabimo ukaz gp_Dir
    229 
    230 Slika 17
     245[[BR]]
     246[[Image(slika15-17.png)]]
     247[[BR]]
    231248
    2322492)      opredelitev osi X v prostoru z neposrednim ukazom
    233 
    234 Slika 18
     250[[BR]]
     251[[Image(slika15-18.png)]]
     252[[BR]]
    235253
    236254Če želimo izvajati zrcaljenje okoli prej opredeljene osi X, v nadaljevanju uporabimo zrcalno metodo SetMirror.
    237 
    238 Slika 19
     255[[BR]]
     256[[Image(slika15-19.png)]]
     257[[BR]]
    239258
    240259Sedaj imamo vse parametre, ki jih potrebujemo za izvedbo zrcaljenja mreže robov okrog osi X. Za samo zrcaljenje pa uporabimo ukaz, ki vsebuje argument zrcaljene geometrije in podatke o osi, okrog katere izvedemo zrcaljenje.
    241 
    242 Slika 20
     260[[BR]]
     261[[Imag(slika15-20.png)]]
     262[[BR]]
    243263
    244264Funkcija BrepBuilderAPI_Transform ne spreminja narave zrcaljene oblike, zato smo dobili poleg zrcalne slike mreže tudi samo mrežo robov. Da vrnemo mrežo robov nazaj, moramo uporabiti reverzno funkcijo oziroma ukaz BrepBuilderAPI_Transform::Shape, ki vrne objekt TopoDS_Shape v prvotno lego.
    245 
    246 Slika 21
     265[[BR]]
     266[[Image(slika15-21.png)]]
     267[[BR]]
    247268
    248269Sedaj imamo dve mreži robov. Ena je osnovna, druga pa zrcaljena v enem delu. Da lahko začnemo sestavljati novo mrežo robov, moramo najprej stare povezave, določene s staro topologijo, prestaviti v skupino krivulj. Za tako operacijo uporabimo sklop ukazov TopoDS. Z ukazom TopoDS::Wire tako vrnemo mrežo robov v skupino krivulj.
    249 
    250 Slika 22
    251 
    252 Slika 23
     270[[BR]]
     271[[Image(slika15-22.png)]]
     272[[BR]]
     273
     274[[BR]]
     275[[Image(slika15-23.png)]]
     276[[BR]]
    253277
    254278Sedaj imamo skupino krivulj, ki jo moramo povezati v mrežo robov. Ker so robovi med seboj povezani, dobimo zaključeno oziroma zaprto mrežo robov ali enostavno zanko. Za tako operacijo uporabimo ukaz BrepBuilderAPI_MakeWire. Najprej določimo naziv za mrežo, nato pa pod tem imenom vpisujemo zaporedno od prvega roba do zadnjega in tako ustvarimo zaprto mrežo oziroma zanko.
     
    270294Solid
    271295Shell
    272 Compound of Solid
    273 
    274 
    275 Slika 24
     296Compound of Solid
     297
     298[[BR]]
     299[[Image(slika15-24.png)]]
     300[[BR]]
    276301
    277302V računalniški terminologiji se velikokrat za enake fizikalne predstavitve ali procese uporablja več različnih izrazov. Tudi v našem primeru je pri uporabi pojma Shell (Loop) potrebno razumeti, da je to v bistvu zanka. Zanka je zaključena mreža robov, ki v geometriji dejansko predstavlja lik. Pogoj za to je, da vsi robovi in točke ležijo v isti ravnini. V opisanem programu OC se pojavljata pojma, ki sta opredeljena kot mreža robov (odprta zanka) ali zaprta mreža robov (zaprta zanka). Opozorilo o različnih terminih smo dodali zato, da bo dodaten študij programa OC lažji in ne zavajujoč.
    278303Na začetku predvidene operacije imamo samo zanko robov, zato moramo najprej opredeliti površino osnovnega lika. Za opredelitev površine uporabimo poseben ukaz BrepBuilderAPI_MakeFace. Kot smo že povedali, je površina sestavljena iz zaključene mreže robov, to je zanke. Če vse točke in celotna zanka robov ležijo na isti ravnini, se lahko ukaz za izvlek uporabi neposredno.
    279 
    280 Slika 25
     304[[BR]]
     305[[Image(slika15-25.png)]]
     306[[BR]]
    281307
    282308Podprogrami BrepBuilderAPI omogočajo izdelavo topoloških primitivov konstrukcij, kot so škatle, stožci, valji, krogle itd. V tej skupini podprogramov je tudi ukaz za izdelavo prizme BrepPrimAPI_MakePrism. Za uporabo tega ukaza potrebujemo naslednja parametra: 1) osnovni lik, ki je določen s površino in 2) smerni vektor, v smer katerega se izdela izvlek osnovne oblike. Smerni vektor za izdelavo prizme v smeri površinske normale na določeno višino prizme je določen z ukazom myHeight:
    283 
    284 Slika 26
     309[[BR]]
     310[[Image(slika15-26.png)]]
     311[[BR]]
    285312
    286313Na osnovi obeh parametrov lahko s sklepnim ukazom izvedemo model prizme. Zato uporabimo ukaz BrepPrimAPI_MakePrism, ki določi vse topološke podatke za prizmo, ki tako postane trdno telo.
    287 
    288 Slika 27
     314[[BR]]
     315[[Image(slika15-27.png)]]
     316[[BR]]
    289317
    290318=== Zaokroževanje robov ===
    291319
    292320Ker 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).
    293 
    294 Slika 28
     321[[BR]]
     322[[Image(slika15-28.png)]]
     323[[BR]]
    295324
    296325Za izvajanje zaokroževanj (Fillets) robov na poljubnih 3D-modelih lahko uporabimo sklop ukazov BrepFilletAPI_MakeFillet. Različne ukaze uporabljamo na naslednji način:
     
    298327nato določimo skupino robov, ki jih želimo zaokrožiti. Pri tem vedno uporabljamo skupino robov, ki imajo enake zaokrožitve, zato moramo najprej določiti polmer zaokrožitve. Robove, ki jih bomo zaokrožili, pa bomo dodajali z ukazom Add;
    299328po izvedenih ukazih stalno spremljamo, kakšne oblike telesa se pojavijo za vsak rob posebej.
    300 
    301 Slika 29
     329[[BR]]
     330[[Image(slika15-29.png)]]
     331[[BR]]
    302332
    303333Prav pri zaokrožitvah se velikokrat pojavi zahteva po dopolnjevanju ali spreminjanju podatkov. Zato moramo uporabiti funkcijo prikazovanja podatkov na zaslonu neposredno. Z namenom, da imamo podatke predstavljene na zaslonu in jih nato po potrebi spreminjamo, uporabimo ukaz TopExp_Explorer, ki pregleda zapisane podatke o izbranem modelu in nam vrne klicane parametre:
    304 
    305 Slika 30
     334[[BR]]
     335[[Image(slika15-30.png)]]
     336[[BR]]
    306337
    307338Raziskovalec (Explorer) je vgrajen v zanko in uporablja tri glavne metode:
     
    309340Current – potrebno je vedeti, v katerem podmodelu se nahajamo;
    310341Next – premik na naslednji še neraziskani podmodel.
    311 
    312 Slika 31
     342[[BR]]
     343[[Image(slika15-31.png)]]
     344[[BR]]
    313345
    314346S pomočjo raziskovalne zanke (explorer loop) lahko odkrijemo vse robove na izbranem modelu. Če želimo posamezni rob pridodati v nabor zaokroženih robov, to izvedemo z ukazom za dodajanje Add v ukaznem sestavu BrepFilletAPI_MakeFillet. Poleg podatka o zaokroženem robu moramo določiti še polmer zaokrožitve robov:
    315 
    316 Slika 32
    317 
    318 Slika 33
     347[[BR]]
     348[[Image(slika15-32.png)]]
     349[[BR]]
     350
     351[[BR]]
     352[[Image(slika15-33.png)]]
     353[[BR]]
    319354
    320355Po zaporednem določanju robov in polmerov zaokrožitev nato z zadnjim ukazom postavimo zahtevo za eksekutivno izvedbo oblike za vse izbrane robove. Na ta način zapišemo vse zaokrožene oziroma spremenjene površine v bazo podatkov za obravnavano trdno telo.
    321 
    322 Slika 34
     356[[BR]]
     357[[Image(slika15-34.png)]]
     358[[BR]]
    323359
    324360Z uporabo zadnjega ukaza imamo v bazi podatkov vse podatke in zapisano topologijo. S primerom smo poskušali predstaviti generiranje relativno enostavne oblike, ki pa v končni obliki postane zelo kompleksen model. Razumljivo je, da tako enostavnih oblik v naravi praviloma ni. Prav v tem pa se izkaže prednost OC. Če namreč pri komercialno uporabnih modelirnikih določene zahtevnejše oblike ne moremo zanesljivo določiti v vseh detajlih, pa z uporabo OC lahko dobimo bistveno natančnejši popis oblike tudi pri najzahtevnejših prostih površinah. V knjigi je predstavljen zelo zožen nabor ukazov. V knjižnici je bistveno več ukazov, ki si jih uporabnik lahko dodatno ogleda in uporablja.
     
    327363
    328364Izdelava 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.
    329 
    330 Slika 35
     365[[BR]]
     366[[Image(slika15-35.png)]]
     367[[BR]]
    331368
    332369Primer, 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.
    333370Na 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.
    334 
    335 Slika 36
     371[[BR]]
     372[[Image(slika15-36.png)]]
     373[[BR]]
    336374
    337375V nadaljevanju bomo predstavili zaporedje glavnih funkcij oz. operacij v OC ter izpeljane ukaze za izdelavo tako zastavljenega modela oziroma konstrukcije. Postopek za modeliranje posameznega elementa z izvlekom je predstavljen v prejšnjem poglavju, zato se pri izdelavi CAD-modela vozlišča osredotočimo predvsem na novo uporabljene funkcije.
     
    346384
    347385V spremenljivko aResVertex se shrani sestav cilindričnega vozlišča. Spremenljivka aResI je rezervirana za poenostavljene vozliščne I-profile. Profile v nadaljevanju s pomočjo Booleanove operacije razlike odrežemo s plaščem cilindra vozlišča in shranimo v novo spremenljivko aResI_cut.
    348 
    349 Slika 37
     386[[BR]]
     387[[Image(slika15-37.png)]]
     388[[BR]]
    350389
    351390=== Izdelava profilnih elementov v vozlišču (točke, robovi, mreže, zanka,   površina) ===
    352391
    353392Na začetku določimo pozicijo točk v prostoru, ki bodo sestavljale prerez poenostavljenega vozliščnega I-profila. Za popis prereza poenostavljenega I-profila potrebujemo dvanajst točk aPnt1, …, aPnt12, ki jih razporedimo glede na vozlišče mrežne strukture in se nahajajo na isti ravnini. Poudarjamo, da je upoštevano, da je prerez v isti ravnini. Pravimo, da je prerez je planaren.
    354 
    355 Slika 38
     393[[BR]]
     394[[Image(slika15-38.png)]]
     395[[BR]]
    356396
    357397V nadaljevanju določimo robove vozliščnega elementa, ki so odvisni od dimenzij I-profila.
    358 
    359 Slika 39
     398[[BR]]
     399[[Image(slika15-39.png)]]
     400[[BR]]
    360401
    361402Predstavljene 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.
    362403Iz 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.
    363 
    364 Slika 40
     404[[BR]]
     405[[Image(slika15-40.png)]]
     406[[BR]]
    365407
    366408Zaprto mrežo robov ali zanko v nadaljevanju uporabimo za določitev površine myFace. Ko je površina osnovne ploskve (ali bolje osnovni lik) določena, lahko izvedemo njen izvlek s pomočjo smernega vektorja vector, ki ga izračunamo glede na začetno in končno točko dolžine realnega I-profila. Tako dobimo 3D-model I-profila, ki ga opredelimo z ukazom myShape.
    367 
    368 
    369 Slika 41
     409[[BR]]
     410[[Image(slika15-41.png)]]
     411[[BR]]
    370412
    371413=== Rezanje profilnih elementov ===
    372414
    373415Vozlišč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).
    374 
    375 Slika 42
    376 
    377 Slika 43
     416[[BR]]
     417[[Image(slika15-42.png)]]
     418[[BR]]
     419
     420[[BR]]
     421[[Image(slika15-43.png)]]
     422[[BR]]
     423
    378424
    379425V 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.
    380 
    381 Slika 44
     426[[BR]]
     427[[Image(slika15-44.png)]]
     428[[BR]]
    382429
    383430Posebej moramo opozoriti, da vozliščni I-profil myShapeI ne poteka natančno do mrežnega vozlišča, ampak samo do prirobnice, ki jo predstavlja sedaj generirani valj vozliščnega elementa. Zaradi tega moramo I-profil odrezati na razdalji zunanjega roba cilindričnega vozlišča z ukazom cylinderCut. Operacijo odrezovanja izvedemo s pomočjo Booleanove operacije razlike. Od izbranega elementa I-profila odštejemo vozliščno geometrijo s funkcijo BrepAlgo_Cut. Takoj za izvedeno operacijo nato preostanek oziroma odrezani I-profil shranimo v sestav aResI, ki smo ga opredelili na samem začetku. To izvedemo z uporabo ukaza AddAIS_Shape, ki pa nam omogoči tudi prikazovanje rezultata v želeni barvi.
     
    386433
    387434Za skrbno določitev prostorske postavitve vseh delov sestava našega vozlišča, to je I-profilov in samega vozliščnega elementa, moramo določiti za vsak I-profil njegovo oddaljenost od centralne osi vozlišča mrežne strukture jeklene konstrukcije. Posebej poudarjamo, da je vsako vozlišče mrežne strukture jeklene konstrukcije postavljeno različno v globalnem koordinatnem sistemu, torej niti eno ni enako pozicionirano. Pri tem imamo pred seboj tako vse tri koordinate globalnega koordinatnega sistema kot tudi kote in značilne za usmeritev lokalnega koordinatnega sistema v primerjavi z globalnim. Zaradi tega moramo s posebnim programom določiti lokalni koordinatni sistem za vsako vozlišče mrežne strukture jeklene konstrukcije posebej.
    388 
    389 Slika 45
     435[[BR]]
     436[[Image(slika15-45.png)]]
     437[[BR]]
    390438
    391439=== Določitev vozliščnih parametrov (smer, razdalja, sestavni deli) ===
     
    394442Parameter 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.
    395443Po 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).
    396 
    397 Slika 46
     444[[BR]]
     445[[Image(slika15-46.png)]]
     446[[BR]]
    398447
    399448Drugi del sestava vozliščnega elementa vozliščnega cilindra je osrednji (ožji) del. Določimo ga tako, da najprej določimo premer srednjega dela cilindra, ki ga popisuje spremenljivka radius z dimenzijo 21,2 mm. Višina valja je 109 mm in jo lahko programsko vpišemo kot spremenljivko height. Tako določenemu in poimenovanemu srednjemu delu vozliščnega elementa nato s pomočjo Booleanove operacije razlike izvrtamo skoznjo izvrtino premera 31,2 mm (pazite, to je polmer 15,6 mm!). Zgornji del srednjega dela vozliščnega elementa priključimo spodnji površini zgornjega vozliščnega elementa takrat, kadar sta centrični glede na isto srednjico. Poudarimo naj, da spodnja površina velikega valja (prvi, ki smo ga generirali) leži na zgornji površini srednjega dela, to je drugega valja.
    400 
    401 Slika 47
    402 
    403 Slika 48
    404 
    405 Slika 49
    406 
     449[[BR]]
     450[[Image(slika15-47.png)]]
     451[[BR]]
     452
     453[[BR]]
     454[[Image(slika15-48.png)]]
     455[[BR]]
     456
     457[[BR]]
     458[[Image(slika15-49.png)]]
     459[[BR]]
    407460
    408461Na 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.
     
    411464
    412465Z 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++.
    413 
    414 Slika 50
     466[[BR]]
     467[[Image(slika15-50.png)]]
     468[[BR]]
    415469
    416470Slika 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.
     
    421475
    422476Ta postopek je obvezen pred vsakim definiranjem geometrije in zagotavlja ustrezno pomnilno kapaciteto za vsak poimenovani sestav.
    423 
    424 Slika 51
     477[[BR]]
     478[[Image(slika15-51.png)]]
     479[[BR]]
    425480
    426481Predvideni sestav ima ime aResI, ki ga izberemo in omogoča shranjevanje podatkov za I-profile.
     
    429484
    430485Pri narisanem I-profilu preberemo začetno in končno točko na isti tvornici (lahko srednjici) profila. Lahko pa določimo dolžino profila sami z vnaprejšnjim določanjem izhodiščne točke in vektorja dolžine. Glede na podan rob eh določimo začetno from in končno to točko izbranega profila.
    431 
    432 Slika 52
     486[[BR]]
     487[[Image(slika15-52.png)]]
     488[[BR]]
     489
    433490
    434491=== Določitev normale za izbrani rob ===
    435492
    436493Izbranemu robu določimo normalo n, ki jo uporabimo za določitev usmerjenosti I- profila v prostoru.
    437 
    438 Slika 53
     494[[BR]]
     495[[Image(slika15-53.png)]]
     496[[BR]]
    439497
    440498=== Tvorjenje robnih točk poenostavljenega I-profila (glej sliko 15.48) ===
    441499
    442500Prerez 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.
    443 
    444 Slika 54
     501[[BR]]
     502[[Image(slika15-54.png)]]
     503[[BR]]
    445504
    446505=== Tvorjenje robov iz robnih točk poenostavljenega I-profila ===
    447506
    448507Na osnovi podanih točk aPnt1…aPnt12 lahko opredelimo skupino robov myEdge1…myEdge12. Zaprta mreža ali zanka robov predstavlja lik oziroma prerez poenostavljenega I-profila.
    449 
    450 Slika 55
     508[[BR]]
     509[[Image(slika15-55.png)]]
     510[[BR]]
    451511
    452512=== Tvorjenje mreže robov (zanke) iz robov prereza ===
    453513
    454514Č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.
    455 
    456 Slika 56
     515[[BR]]
     516[[Image(slika15-56.png)]]
     517[[BR]]
    457518
    458519=== Določitev površine prereza in modela CAD poenostavljenega I-profila ===
     
    460521Po opredeljeni mreži oziroma zanki z imenom myWire preverimo še, ali točke in robovi ležijo v isti ravnini, torej so na površini, ki je planarna. Če je ta pogoj izpolnjen, lahko izvedemo ukaz za določitev površine myFace.
    461522Opredeljeno površino nato izvlečemo v smeri normale na ravnino in dobimo model CAD poenostavljenega I-profila. Operacijo izvleka izvedemo tako, da iz ravninskega lika ustvarimo 3D-prizmo, kar smo že večkrat prikazali. Smer površine določa normalni vektor myVector, ki kaže v smeri normale na rob in je po razdalji enak dolžini roba profila.
    462 
    463 Slika 57
     523[[BR]]
     524[[Image(slika15-57.png)]]
     525[[BR]]
    464526
    465527=== Izvoz formata STEP /IGES modela CAD poenostavljenega I-profila in uvoz formata STEP/IGES v ProE Wildfire 3.0 ===
    466528
    467529Za izvoz v format STEP ali IGES moramo vsakemu I-profilu najprej nastaviti plast profila. Šele nato ga lahko izvozimo v nevtralni format STEP ali IGES. Ukaz za določanje plasti in geometrije profilov je Profile.
    468 
    469 Slika 58
    470 
    471 Slika 59
     530[[BR]]
     531[[Image(slika15-58.png)]]
     532[[BR]]
     533
     534[[BR]]
     535[[Image(slika15-59.png)]]
     536[[BR]]
    472537
    473538Za risanje modelov CAD celotne mrežne konstrukcije ali konstrukcije, ki vsebuje več kot en poenostavljeni I-profil, uporabimo robni dopolnjevalec edge iterator, ki ga sistematično vključimo npr. v C++ for zanko. Tako uporabimo zanko za vsak izbrani izhodiščni rob kateregakoli prej določenega profila. V našem primeru velja zančje za poenostavljeni I-profil.