Changes between Version 5 and Version 6 of salome_shaper


Ignore:
Timestamp:
Oct 10, 2019, 5:00:10 PM (5 years ago)
Author:
dpenko
Comment:

Add example demonstrating the use of shape explorer.

Legend:

Unmodified
Added
Removed
Modified
  • salome_shaper

    v5 v6  
    250250
    251251}}}
     252
     253= Primer: Uvoz STEP modela in izluščevanje topoloških elementov =
     254
     255Spodaj 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
     260from salome.shaper import model
     261from GeomAPI import *
     262
     263# Kreiranje SHAPER session-a
     264model.begin()
     265# Kreiranje objekta: t.i. "dokument", ki predstavlja temelje aplikacije
     266# (root document of SHAPER)
     267partSet = model.moduleDocument()
     268
     269# Dodajanje part-a v model
     270Part_1 = model.addPart(partSet)
     271# Kreiranje objekta za dostop do pod-dokumenta, ki se nanaša na part
     272Part_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
     276Import_1 = model.addImport(Part_1_doc, "/home/penkod/WORK/training/salome_shaper/test.step")
     277
     278# Posodobi prikaz modela
     279model.do()
     280
     281# Objekt, ki vsebuje lastnosti modela
     282result = Import_1.defaultResult()
     283
     284# Izpis imena parta
     285result.data().name()
     286
     287# --- vozlišča ---
     288
     289# Raziskovalec oblik: vozlišča (VERTEX)
     290vertexExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.VERTEX)
     291
     292# Kreiranje nove skupine za vozlišča
     293group_vertices = Part_1_doc.addFeature("Group")
     294# Določevanje imena skupine
     295group_vertices.data().setName("Vertex Group")
     296
     297# Iteriranje skozi vozlišča, dokler jih raziskovalec še najde
     298nVertices = 0
     299while 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šč
     325print("Number of vertices: ", str(nVertices))
     326
     327# Posodobi prikaz modela
     328model.do()
     329
     330# --- lupine ---
     331
     332# Raziskovalec oblik: lupine (SHELL)
     333shellExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.SHELL)
     334
     335# Kreiranje nove skupine za lupine
     336group_shells = Part_1_doc.addFeature("Group")
     337# Določevanje imena skupine
     338group_shells.data().setName("Shell Group")
     339
     340# Iteriranje skozi lupine, dokler jih raziskovalec še najde
     341nShells = 0
     342while 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
     353print("Number of shells: ", str(nShells))
     354
     355# Posodobi prikaz modela
     356model.do()
     357
     358# --- površine ---
     359
     360# Raziskovalec oblik: površine (FACE)
     361faceExplorer = GeomAPI_ShapeExplorer(result.shape(), GeomAPI_Shape.FACE)
     362
     363# Kreiranje nove skupine za površine
     364group_faces = Part_1_doc.addFeature("Group")
     365# Določevanje imena skupine
     366group_faces.data().setName("Faces Group")
     367
     368# Iteriranje skozi površine, dokler jih raziskovalec še najde
     369nFaces = 0
     370while 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
     381print("Number of faces: ", str(nFaces))
     382
     383# Posodobi prikaz modela
     384model.do()
     385
     386}}}