| | 252 | |
| | 253 | = Primer: Uvoz STEP modela in izluščevanje topoloških elementov = |
| | 254 | |
| | 255 | Spodaj je primer kode, kako se lahko iz obstoječe STEP datoteke v SHAPER-ju izlušči topološke elemente, v tem primeru vozlišča, lupine in površine. Za namene tega primera se lahko uporabi test.step datoteko, ki je priložena na tej strani (glej "priloge" oz. ang. "attachments"). |
| | 256 | |
| | 257 | {{{ |
| | 258 | #!python |
| | 259 | # Uvoz potrebnih knjižnic |
| | 260 | from salome.shaper import model |
| | 261 | from GeomAPI import * |
| | 262 | |
| | 263 | # Kreiranje SHAPER session-a |
| | 264 | model.begin() |
| | 265 | # Kreiranje objekta: t.i. "dokument", ki predstavlja temelje aplikacije |
| | 266 | # (root document of SHAPER) |
| | 267 | partSet = model.moduleDocument() |
| | 268 | |
| | 269 | # Dodajanje part-a v model |
| | 270 | Part_1 = model.addPart(partSet) |
| | 271 | # Kreiranje objekta za dostop do pod-dokumenta, ki se nanaša na part |
| | 272 | Part_1_doc = Part_1.document() |
| | 273 | |
| | 274 | # Importanje STEP datoteke |
| | 275 | # Opomba: pot se določa na način npr. /mapa/podmapa1/podmapa2/ime_step_datoteke.step |
| | 276 | Import_1 = model.addImport(Part_1_doc, "/home/penkod/WORK/training/salome_shaper/test.step") |
| | 277 | |
| | 278 | # Posodobi prikaz modela |
| | 279 | model.do() |
| | 280 | |
| | 281 | # Objekt, ki vsebuje lastnosti modela |
| | 282 | result = Import_1.defaultResult() |
| | 283 | |
| | 284 | # Izpis imena parta |
| | 285 | result.data().name() |
| | 286 | |
| | 287 | # --- vozlišča --- |
| | 288 | |
| | 289 | # Raziskovalec oblik: vozlišča (VERTEX) |
| | 290 | vertexExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.VERTEX) |
| | 291 | |
| | 292 | # Kreiranje nove skupine za vozlišča |
| | 293 | group_vertices = Part_1_doc.addFeature("Group") |
| | 294 | # Določevanje imena skupine |
| | 295 | group_vertices.data().setName("Vertex Group") |
| | 296 | |
| | 297 | # Iteriranje skozi vozlišča, dokler jih raziskovalec še najde |
| | 298 | nVertices = 0 |
| | 299 | while vertexExplorer.more(): |
| | 300 | # Trenutno vozlišče |
| | 301 | cv = vertexExplorer.current().vertex() |
| | 302 | |
| | 303 | # Prva koordinata trenutnega vozlišča |
| | 304 | x = cv.point().x() |
| | 305 | # Druga koordinata trenutnega vozlišča |
| | 306 | y = cv.point().y() |
| | 307 | # Tretja koordinata trenutnega vozlišča |
| | 308 | z = cv.point().z() |
| | 309 | |
| | 310 | # Izpis koordinat trenutne točke |
| | 311 | print("point XYZ: " + str(x) + ", " + str(y) + ", " + str(z) ) |
| | 312 | |
| | 313 | # Dodajanje vozlišča v skupino |
| | 314 | group_vertices.selectionList("group_list").append(result, vertexExplorer.current()) |
| | 315 | |
| | 316 | # Dodatno: Način dodajanja vozlišča direktno na part |
| | 317 | # model.addPoint(Part_1_doc, x,y,z) |
| | 318 | |
| | 319 | # Iteriranje na naslednje vozlišče |
| | 320 | vertexExplorer.next() |
| | 321 | # Prištevanje +1 k celotnemu seštevku vozlišč |
| | 322 | nVertices += 1 |
| | 323 | |
| | 324 | # Izpis seštevka najdenih vozlišč |
| | 325 | print("Number of vertices: ", str(nVertices)) |
| | 326 | |
| | 327 | # Posodobi prikaz modela |
| | 328 | model.do() |
| | 329 | |
| | 330 | # --- lupine --- |
| | 331 | |
| | 332 | # Raziskovalec oblik: lupine (SHELL) |
| | 333 | shellExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.SHELL) |
| | 334 | |
| | 335 | # Kreiranje nove skupine za lupine |
| | 336 | group_shells = Part_1_doc.addFeature("Group") |
| | 337 | # Določevanje imena skupine |
| | 338 | group_shells.data().setName("Shell Group") |
| | 339 | |
| | 340 | # Iteriranje skozi lupine, dokler jih raziskovalec še najde |
| | 341 | nShells = 0 |
| | 342 | while shellExplorer.more(): |
| | 343 | # Trenutna lupina |
| | 344 | sh = shellExplorer.current().shell() |
| | 345 | # Dodajanje lupine v skupino |
| | 346 | group_shells.selectionList("group_list").append(result, shellExplorer.current()) |
| | 347 | # Iteriranje na naslednjo lupino |
| | 348 | shellExplorer.next() |
| | 349 | # Prištevanje +1 k celotnemu seštevku lupin |
| | 350 | nShells += 1 |
| | 351 | |
| | 352 | # Izpis seštevka najdenih lupin |
| | 353 | print("Number of shells: ", str(nShells)) |
| | 354 | |
| | 355 | # Posodobi prikaz modela |
| | 356 | model.do() |
| | 357 | |
| | 358 | # --- površine --- |
| | 359 | |
| | 360 | # Raziskovalec oblik: površine (FACE) |
| | 361 | faceExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.FACE) |
| | 362 | |
| | 363 | # Kreiranje nove skupine za površine |
| | 364 | group_faces = Part_1_doc.addFeature("Group") |
| | 365 | # Določevanje imena skupine |
| | 366 | group_faces.data().setName("Faces Group") |
| | 367 | |
| | 368 | # Iteriranje skozi površine, dokler jih raziskovalec še najde |
| | 369 | nFaces = 0 |
| | 370 | while faceExplorer.more(): |
| | 371 | # Trenutno najdena površina |
| | 372 | face = faceExplorer.current().face() |
| | 373 | # Dodajanje površine v skupino |
| | 374 | group_faces.selectionList("group_list").append(result, faceExplorer.current()) |
| | 375 | # Iteriranje na naslednjo površino |
| | 376 | faceExplorer.next() |
| | 377 | # Prištevanje +1 k celotnemu seštevku površin |
| | 378 | nFaces += 1 |
| | 379 | |
| | 380 | # Izpis seštevka najdenih površin |
| | 381 | print("Number of faces: ", str(nFaces)) |
| | 382 | |
| | 383 | # Posodobi prikaz modela |
| | 384 | model.do() |
| | 385 | |
| | 386 | }}} |