Changes between Version 6 and Version 7 of OpenCascade
- Timestamp:
- Oct 10, 2011, 6:05:42 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OpenCascade
v6 v7 15 15 == Modularna struktura CAD-jedra Open CASCADE == 16 16 [[BR]] 17 [[Image(slika15-1.png )]]17 [[Image(slika15-1.png, width=480px,align=center)]] 18 18 [[BR]] 19 19 Other CAD systems: Ostali modelirniki CAD 20 Input 20 Input : Vstop v OC 21 21 GUI Framework (JAD,QAD,MFC): Programski okvir GUI (JAD, QAD,MFC) 22 22 Developmnet Tools (WOK, Wizards, Draw): Razvojna orodja (WOK, Wizards, Draw) … … 98 98 Open 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 99 [[BR]] 100 [[Image(slika15-2.png )]]100 [[Image(slika15-2.png, width=480px,align=center)]] 101 101 [[BR]] 102 102 … … 104 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. 105 105 [[BR]] 106 [[Image(slika15-3.png )]]106 [[Image(slika15-3.png, width=480px,align=center)]] 107 107 [[BR]] 108 108 … … 119 119 dolžina: myWidth = 50 mm, 120 120 [[BR]] 121 [[Image(slika15-4.png )]]121 [[Image(slika15-4.png, width=480px,align=center)]] 122 122 [[BR]] 123 123 … … 128 128 Če želimo izdelati želeni 3D-profil, je potrebno v prvem koraku kreirati točke v ravnini XY0, ki ležijo na isti ravnini. 129 129 [[BR]] 130 [[Image(slika15-5.png )]]130 [[Image(slika15-5.png, width=480px,align=center)]] 131 131 [[BR]] 132 132 … … 134 134 tvorjenje točke s primitivom gp_Pnt 135 135 dinamična točka Geom_CartesiaPoint, ki je vodena s kazalcem handle 136 136 137 137 handle je kazalec, ki ima avtomatsko povezavo s spominom, v katerega se skladno z našo zahtevo zapisujejo podatki o trenutni lokaciji točke. 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 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). 141 141 [[BR]] 142 [[Image(slika15-6.png )]]142 [[Image(slika15-6.png, width=480px,align=center)]] 143 143 [[BR]] 144 144 … … 146 146 sliki 15.7. Grajenje objektov različnih velikosti je izvedeno na enak način. 147 147 [[BR]] 148 [[Image(slika15-7.png )]]148 [[Image(slika15-7.png, width=480px,align=center)]] 149 149 [[BR]] 150 150 151 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. 152 152 [[BR]] 153 [[Image(slika15-8.png )]]153 [[Image(slika15-8.png, width=480px,align=center)]] 154 154 [[BR]] 155 155 … … 158 158 Predhodno 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. 159 159 [[BR]] 160 [[Image(slika15-9.png )]]160 [[Image(slika15-9.png, width=480px,align=center)]] 161 161 [[BR]] 162 162 163 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. 164 164 [[BR]] 165 [[Image(slika15-10.png )]]166 [[BR]] 167 168 [[BR]] 169 [[Image(slika15-11.png )]]165 [[Image(slika15-10.png, width=480px,align=center)]] 166 [[BR]] 167 168 [[BR]] 169 [[Image(slika15-11.png, width=480px,align=center)]] 170 170 [[BR]] 171 171 … … 205 205 Sklop katerihkoli oblik 206 206 [[BR]] 207 [[Image(slika15-12.png )]]207 [[Image(slika15-12.png, width=480px,align=center)]] 208 208 [[BR]] 209 209 … … 211 211 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. 212 212 [[BR]] 213 [[Image(slika15-13.png )]]213 [[Image(slika15-13.png, width=480px,align=center)]] 214 214 [[BR]] 215 215 216 216 V 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. 217 217 [[BR]] 218 [[Image(slika15-14.png )]]218 [[Image(slika15-14.png, width=480px,align=center)]] 219 219 [[BR]] 220 220 221 221 === Mreženje skupine robov === 222 1) 222 1) Mreženje skupine robov, ki je odprto 223 223 224 224 V skupini robov, ki so topološko med seboj določeni, lahko njihove povezave strnemo v mrežo. Mreža robov je lahko odprta ali zaprta. Izdelamo jo na dva načina, in sicer: … … 228 228 Za izdelavo mreže se v primeru treh robov uporabi neposredno metodo izdelovanja mreže, ki je prikazana v naslednji formi C++: 229 229 [[BR]] 230 [[Image(slika15-15.png )]]231 [[BR]] 232 233 2) 230 [[Image(slika15-15.png, width=480px,align=center)]] 231 [[BR]] 232 233 2) Mreženje skupine robov, ki je zaprto 234 234 235 235 Robove, 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. 236 236 [[BR]] 237 [[Image(slika15-16.png )]]237 [[Image(slika15-16.png, width=480px,align=center)]] 238 238 [[BR]] 239 239 240 240 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). 241 242 1) 241 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. 242 1) točka P1 in smer vektorja, ki poteka skozi točko P1 243 243 os X poteka skozi točko P1(0, 0, 0) – uporabimo ukaz gp_Pnt 244 244 smer osi X določa enotski vektor (1, 0, 0) – uporabimo ukaz gp_Dir 245 245 [[BR]] 246 [[Image(slika15-17.png )]]247 [[BR]] 248 249 2) 250 [[BR]] 251 [[Image(slika15-18.png )]]246 [[Image(slika15-17.png, width=480px,align=center)]] 247 [[BR]] 248 249 2) opredelitev osi X v prostoru z neposrednim ukazom 250 [[BR]] 251 [[Image(slika15-18.png, width=480px,align=center)]] 252 252 [[BR]] 253 253 254 254 Če želimo izvajati zrcaljenje okoli prej opredeljene osi X, v nadaljevanju uporabimo zrcalno metodo SetMirror. 255 255 [[BR]] 256 [[Image(slika15-19.png )]]256 [[Image(slika15-19.png, width=480px,align=center)]] 257 257 [[BR]] 258 258 259 259 Sedaj 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. 260 260 [[BR]] 261 [[Imag(slika15-20.png )]]261 [[Imag(slika15-20.png, width=480px,align=center)]] 262 262 [[BR]] 263 263 264 264 Funkcija 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. 265 265 [[BR]] 266 [[Image(slika15-21.png )]]266 [[Image(slika15-21.png, width=480px,align=center)]] 267 267 [[BR]] 268 268 269 269 Sedaj 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. 270 270 [[BR]] 271 [[Image(slika15-22.png )]]272 [[BR]] 273 274 [[BR]] 275 [[Image(slika15-23.png )]]271 [[Image(slika15-22.png, width=480px,align=center)]] 272 [[BR]] 273 274 [[BR]] 275 [[Image(slika15-23.png, width=480px,align=center)]] 276 276 [[BR]] 277 277 … … 297 297 298 298 [[BR]] 299 [[Image(slika15-24.png )]]299 [[Image(slika15-24.png, width=480px,align=center)]] 300 300 [[BR]] 301 301 … … 303 303 Na 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. 304 304 [[BR]] 305 [[Image(slika15-25.png )]]305 [[Image(slika15-25.png, width=480px,align=center)]] 306 306 [[BR]] 307 307 308 308 Podprogrami 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: 309 309 [[BR]] 310 [[Image(slika15-26.png )]]310 [[Image(slika15-26.png, width=480px,align=center)]] 311 311 [[BR]] 312 312 313 313 Na 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. 314 314 [[BR]] 315 [[Image(slika15-27.png )]]315 [[Image(slika15-27.png, width=480px,align=center)]] 316 316 [[BR]] 317 317 … … 320 320 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). 321 321 [[BR]] 322 [[Image(slika15-28.png )]]322 [[Image(slika15-28.png, width=480px,align=center)]] 323 323 [[BR]] 324 324 … … 328 328 po izvedenih ukazih stalno spremljamo, kakšne oblike telesa se pojavijo za vsak rob posebej. 329 329 [[BR]] 330 [[Image(slika15-29.png )]]330 [[Image(slika15-29.png, width=480px,align=center)]] 331 331 [[BR]] 332 332 333 333 Prav 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: 334 334 [[BR]] 335 [[Image(slika15-30.png )]]335 [[Image(slika15-30.png, width=480px,align=center)]] 336 336 [[BR]] 337 337 … … 341 341 Next – premik na naslednji še neraziskani podmodel. 342 342 [[BR]] 343 [[Image(slika15-31.png )]]343 [[Image(slika15-31.png, width=480px,align=center)]] 344 344 [[BR]] 345 345 346 346 S 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: 347 347 [[BR]] 348 [[Image(slika15-32.png )]]349 [[BR]] 350 351 [[BR]] 352 [[Image(slika15-33.png )]]348 [[Image(slika15-32.png, width=480px,align=center)]] 349 [[BR]] 350 351 [[BR]] 352 [[Image(slika15-33.png, width=480px,align=center)]] 353 353 [[BR]] 354 354 355 355 Po 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. 356 356 [[BR]] 357 [[Image(slika15-34.png )]]357 [[Image(slika15-34.png, width=480px,align=center)]] 358 358 [[BR]] 359 359 … … 364 364 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. 365 365 [[BR]] 366 [[Image(slika15-35.png )]]366 [[Image(slika15-35.png, width=480px,align=center)]] 367 367 [[BR]] 368 368 … … 370 370 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. 371 371 [[BR]] 372 [[Image(slika15-36.png )]]372 [[Image(slika15-36.png, width=480px,align=center)]] 373 373 [[BR]] 374 374 … … 385 385 V 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. 386 386 [[BR]] 387 [[Image(slika15-37.png )]]387 [[Image(slika15-37.png, width=480px,align=center)]] 388 388 [[BR]] 389 389 … … 392 392 Na 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. 393 393 [[BR]] 394 [[Image(slika15-38.png )]]394 [[Image(slika15-38.png, width=480px,align=center)]] 395 395 [[BR]] 396 396 397 397 V nadaljevanju določimo robove vozliščnega elementa, ki so odvisni od dimenzij I-profila. 398 398 [[BR]] 399 [[Image(slika15-39.png )]]399 [[Image(slika15-39.png, width=480px,align=center)]] 400 400 [[BR]] 401 401 … … 403 403 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. 404 404 [[BR]] 405 [[Image(slika15-40.png )]]405 [[Image(slika15-40.png, width=480px,align=center)]] 406 406 [[BR]] 407 407 408 408 Zaprto 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. 409 409 [[BR]] 410 [[Image(slika15-41.png )]]410 [[Image(slika15-41.png, width=480px,align=center)]] 411 411 [[BR]] 412 412 … … 415 415 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). 416 416 [[BR]] 417 [[Image(slika15-42.png )]]418 [[BR]] 419 420 [[BR]] 421 [[Image(slika15-43.png )]]417 [[Image(slika15-42.png, width=480px,align=center)]] 418 [[BR]] 419 420 [[BR]] 421 [[Image(slika15-43.png, width=480px,align=center)]] 422 422 [[BR]] 423 423 … … 425 425 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. 426 426 [[BR]] 427 [[Image(slika15-44.png )]]427 [[Image(slika15-44.png, width=480px,align=center)]] 428 428 [[BR]] 429 429 … … 434 434 Za 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. 435 435 [[BR]] 436 [[Image(slika15-45.png )]]436 [[Image(slika15-45.png, width=480px,align=center)]] 437 437 [[BR]] 438 438 … … 443 443 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). 444 444 [[BR]] 445 [[Image(slika15-46.png )]]445 [[Image(slika15-46.png, width=480px,align=center)]] 446 446 [[BR]] 447 447 448 448 Drugi 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. 449 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 )]]450 [[Image(slika15-47.png, width=480px,align=center)]] 451 [[BR]] 452 453 [[BR]] 454 [[Image(slika15-48.png, width=480px,align=center)]] 455 [[BR]] 456 457 [[BR]] 458 [[Image(slika15-49.png, width=480px,align=center)]] 459 459 [[BR]] 460 460 … … 465 465 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++. 466 466 [[BR]] 467 [[Image(slika15-50.png )]]467 [[Image(slika15-50.png, width=480px,align=center)]] 468 468 [[BR]] 469 469 … … 476 476 Ta postopek je obvezen pred vsakim definiranjem geometrije in zagotavlja ustrezno pomnilno kapaciteto za vsak poimenovani sestav. 477 477 [[BR]] 478 [[Image(slika15-51.png )]]478 [[Image(slika15-51.png, width=480px,align=center)]] 479 479 [[BR]] 480 480 … … 485 485 Pri 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. 486 486 [[BR]] 487 [[Image(slika15-52.png )]]487 [[Image(slika15-52.png, width=480px,align=center)]] 488 488 [[BR]] 489 489 … … 493 493 Izbranemu robu določimo normalo n, ki jo uporabimo za določitev usmerjenosti I- profila v prostoru. 494 494 [[BR]] 495 [[Image(slika15-53.png )]]495 [[Image(slika15-53.png, width=480px,align=center)]] 496 496 [[BR]] 497 497 … … 500 500 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. 501 501 [[BR]] 502 [[Image(slika15-54.png )]]502 [[Image(slika15-54.png, width=480px,align=center)]] 503 503 [[BR]] 504 504 … … 507 507 Na 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. 508 508 [[BR]] 509 [[Image(slika15-55.png )]]509 [[Image(slika15-55.png, width=480px,align=center)]] 510 510 [[BR]] 511 511 … … 514 514 Č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. 515 515 [[BR]] 516 [[Image(slika15-56.png )]]516 [[Image(slika15-56.png, width=480px,align=center)]] 517 517 [[BR]] 518 518 … … 522 522 Opredeljeno 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. 523 523 [[BR]] 524 [[Image(slika15-57.png )]]524 [[Image(slika15-57.png, width=480px,align=center)]] 525 525 [[BR]] 526 526 … … 529 529 Za 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. 530 530 [[BR]] 531 [[Image(slika15-58.png )]]532 [[BR]] 533 534 [[BR]] 535 [[Image(slika15-59.png )]]531 [[Image(slika15-58.png, width=480px,align=center)]] 532 [[BR]] 533 534 [[BR]] 535 [[Image(slika15-59.png, width=480px,align=center)]] 536 536 [[BR]] 537 537 … … 555 555 556 556 557 558 559