Skip to content

Commit 3320e3e

Browse files
Merge pull request #1 from tpaviot/master
Updating to track upstream
2 parents d213615 + 4996184 commit 3320e3e

7 files changed

Lines changed: 130 additions & 63 deletions

File tree

.travis.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@ matrix:
6666
- env: PYTHON="3.7" CONDA_PY=37 ARCH="x86_64"
6767
os: osx
6868
osx_image: xcode9.4
69-
allow_failures:
70-
- env: PYTHON="3.7" CONDA_PY=37 ARCH="x86_64"
71-
os: osx
72-
osx_image: xcode9.4
7369
# Use miniconda to install binary versions of numpy etc. from continuum
7470
# analytic's repository. Follows an approach described by Dan Blanchard:
7571
# https://gist.github.com/dan-blanchard/7045057

CMakeLists.txt

Lines changed: 65 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ else(UNIX)
190190
endif(UNIX)
191191
message(STATUS "Platform:" ${PLATFORM})
192192

193+
if (APPLE)
194+
# find out python linking commands
195+
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print(sysconfig.get_config_vars('CFLAGS')[0])" OUTPUT_VARIABLE PYTHON_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE )
196+
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print(sysconfig.get_config_vars('BLDSHARED')[0].split(' ', 1)[1])" OUTPUT_VARIABLE PYTHON_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE )
197+
endif(APPLE)
198+
193199
##################################
194200
# Tells Swig to use py3k option #
195201
##################################
@@ -263,7 +269,13 @@ foreach(OCE_MODULE ${OCE_TOOLKIT_MODEL})
263269
swig_add_library (${OCE_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE)
264270
endif (CMAKE_VERSION VERSION_LESS 3.8)
265271

266-
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES})
272+
swig_link_libraries(${OCE_MODULE} ${OCE_MODEL_LIBRARIES})
273+
if (APPLE)
274+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
275+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
276+
else(APPLE)
277+
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES})
278+
endif(APPLE)
267279
endforeach(OCE_MODULE)
268280

269281
#################
@@ -282,7 +294,13 @@ if(PYTHONOCC_WRAP_VISU)
282294
swig_add_library (${OCE_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE)
283295
endif()
284296

285-
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
297+
swig_link_libraries(${OCE_MODULE} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
298+
if (APPLE)
299+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
300+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
301+
else(APPLE)
302+
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES})
303+
endif(APPLE)
286304
endforeach(OCE_MODULE)
287305
# Build third part modules
288306
# TODO : the following line is strange but necessary
@@ -304,10 +322,13 @@ if(PYTHONOCC_WRAP_VISU)
304322
if(APPLE)
305323
# on OSX, always add /System/Library/Frameworks/Cocoa.framework, even
306324
# if GLX is enabled
307-
swig_link_libraries(Visualization ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} /System/Library/Frameworks/Cocoa.framework)
325+
swig_link_libraries(Visualization ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} /System/Library/Frameworks/Cocoa.framework)
326+
set_target_properties(${SWIG_MODULE_Visualization_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
327+
set_target_properties(${SWIG_MODULE_Visualization_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
308328
else(APPLE)
309-
swig_link_libraries(Visualization ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
329+
swig_link_libraries(Visualization ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} ${PYTHON_LIBRARIES})
310330
endif(APPLE)
331+
311332
endif(PYTHONOCC_WRAP_VISU)
312333

313334
##########
@@ -330,9 +351,13 @@ else (CMAKE_VERSION VERSION_LESS 3.8)
330351
swig_add_library(Addons LANGUAGE python SOURCES ${ADDONS_SOURCE_FILES} TYPE MODULE)
331352
endif()
332353

333-
swig_link_libraries(Addons ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
334-
if(APPLE)
335-
swig_link_libraries(Addons ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} ${OPENGL_LIBRARIES})
354+
swig_link_libraries(Addons ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
355+
if (APPLE)
356+
set_target_properties(${SWIG_MODULE_Addons_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
357+
set_target_properties(${SWIG_MODULE_Addons_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
358+
swig_link_libraries(Addons ${OPENGL_LIBRARIES})
359+
else(APPLE)
360+
swig_link_libraries(Addons ${PYTHON_LIBRARIES})
336361
endif(APPLE)
337362

338363
############
@@ -352,7 +377,13 @@ else (CMAKE_VERSION VERSION_LESS 3.8)
352377
swig_add_library(GEOMAlgo LANGUAGE python SOURCES ${SPLITTER_SOURCE_FILES} TYPE MODULE)
353378
endif()
354379

355-
swig_link_libraries(GEOMAlgo ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
380+
swig_link_libraries(GEOMAlgo ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES})
381+
if (APPLE)
382+
set_target_properties(${SWIG_MODULE_GEOMAlgo_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
383+
set_target_properties(${SWIG_MODULE_GEOMAlgo_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
384+
else(APPLE)
385+
swig_link_libraries(GEOMAlgo ${PYTHON_LIBRARIES})
386+
endif(APPLE)
356387

357388
################
358389
# DataExchange #
@@ -368,7 +399,15 @@ if(PYTHONOCC_WRAP_DATAEXCHANGE)
368399
swig_add_library(${OCE_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE)
369400
endif()
370401

371-
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_DATAEXCHANGE_LIBRARIES})
402+
swig_link_libraries(${OCE_MODULE} ${OCE_MODEL_LIBRARIES} ${OCE_DATAEXCHANGE_LIBRARIES})
403+
404+
if (APPLE)
405+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
406+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
407+
else(APPLE)
408+
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES})
409+
endif(APPLE)
410+
372411
endforeach(OCE_MODULE)
373412
endif(PYTHONOCC_WRAP_DATAEXCHANGE)
374413

@@ -386,7 +425,15 @@ if(PYTHONOCC_WRAP_OCAF)
386425
swig_add_library(${OCE_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE)
387426
endif()
388427

389-
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_OCAF_LIBRARIES})
428+
swig_link_libraries(${OCE_MODULE} ${OCE_MODEL_LIBRARIES} ${OCE_OCAF_LIBRARIES})
429+
430+
if (APPLE)
431+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
432+
set_target_properties(${SWIG_MODULE_${OCE_MODULE}_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
433+
else(APPLE)
434+
swig_link_libraries(${OCE_MODULE} ${PYTHON_LIBRARIES})
435+
endif(APPLE)
436+
390437
endforeach(OCE_MODULE)
391438
endif(PYTHONOCC_WRAP_OCAF)
392439

@@ -404,8 +451,15 @@ if(PYTHONOCC_WRAP_SMESH)
404451
swig_add_library(${SMESH_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE)
405452
endif()
406453

454+
swig_link_libraries(${SMESH_MODULE} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} ${OCE_OCAF_LIBRARIES} ${SMESH_LIBRARIES})
455+
456+
if (APPLE)
457+
set_target_properties(${SWIG_MODULE_${SMESH_MODULE}_REAL_NAME} PROPERTIES COMPILE_FLAGS ${PYTHON_CFLAGS})
458+
set_target_properties(${SWIG_MODULE_${SMESH_MODULE}_REAL_NAME} PROPERTIES LINK_FLAGS ${PYTHON_LDFLAGS})
459+
else(APPLE)
460+
swig_link_libraries(${SMESH_MODULE} ${PYTHON_LIBRARIES})
461+
endif(APPLE)
407462

408-
swig_link_libraries(${SMESH_MODULE} ${PYTHON_LIBRARIES} ${OCE_MODEL_LIBRARIES} ${OCE_VISUALIZATION_LIBRARIES} ${OCE_OCAF_LIBRARIES} ${SMESH_LIBRARIES})
409463
endforeach(SMESH_MODULE)
410464
endif(PYTHONOCC_WRAP_SMESH)
411465

src/Display/WebGl/threejs_renderer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from OCC.Extend.TopologyUtils import is_edge, is_wire, discretize_edge, discretize_wire
3131
from OCC.Display.WebGl.simple_server import start_server
3232

33-
THREEJS_RELEASE = "r99"
33+
THREEJS_RELEASE = "r100"
3434

3535
def spinning_cursor():
3636
while True:

src/Display/WebGl/x3dom_renderer.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -263,23 +263,19 @@ def to_x3dfile_string(self, shape_id):
263263
<Scene>
264264
""" % (OCC_VERSION, OCC_VERSION, OCC_VERSION)
265265
for triangle_set in self._triangle_sets:
266-
x3dfile_str += '<Shape DEF="shape%i" onclick="' % shape_id
266+
x3dfile_str += "<Switch whichChoice='0' id='swBRP'><Transform scale='1 1 1'><Shape DEF='shape%i' onclick='" % shape_id
267267
x3dfile_str += "select(this);"
268-
x3dfile_str += '"><Appearance>\n'
268+
x3dfile_str += "'><Appearance>\n"
269269
#
270270
# set Material or shader
271271
#
272272
if self._vs is None and self._fs is None:
273273
x3dfile_str += "<Material id='color' diffuseColor="
274-
x3dfile_str += "'%g %g %g'" % (self._color[0],
275-
self._color[1],
276-
self._color[2])
274+
x3dfile_str += "'%g %g %g'" % (self._color[0], self._color[1], self._color[2])
277275
x3dfile_str += " shininess="
278276
x3dfile_str += "'%g'" % self._shininess
279277
x3dfile_str += " specularColor="
280-
x3dfile_str += "'%g %g %g'" % (self._specular_color[0],
281-
self._specular_color[1],
282-
self._specular_color[2])
278+
x3dfile_str += "'%g %g %g'" % (self._specular_color[0], self._specular_color[1], self._specular_color[2])
283279
x3dfile_str += " transparency='%g'>\n" % self._transparency
284280
x3dfile_str += "</Material>\n"
285281
else: # set shaders
@@ -292,20 +288,20 @@ def to_x3dfile_string(self, shape_id):
292288
x3dfile_str += '</Appearance>\n'
293289
# export triangles
294290
x3dfile_str += triangle_set
295-
x3dfile_str += "</Shape>\n"
291+
x3dfile_str += "</Shape></Transform></Switch>\n"
296292
# and now, process edges
297293
if self._export_edges:
298294
edge_id = 0
299295
# below '0' means show all
300296
# -1 means doesn't show line
301297
# the "Switch" node selects the group to be displayed
302-
x3dfile_str += "<Switch whichChoice='0'>\n"
298+
x3dfile_str += "<Switch whichChoice='0' id='swBRP'>\n"
303299
x3dfile_str += "\t<Group>\n"
304300
for line_set in self._line_sets:
305-
x3dfile_str += '\t\t<Shape DEF="edg%i">\n' % edge_id
306-
x3dfile_str += '\t\t\t<Appearance><Material emissiveColor="0 0 0"/></Appearance>\n\t\t' # empty appearance, but the x3d validator complains if nothing set
301+
x3dfile_str += "\t\t<Transform scale='1 1 1'><Shape DEF='edg%i'>\n" % edge_id
302+
x3dfile_str += "\t\t\t<Appearance><Material emissiveColor='0 0 0'/></Appearance>\n\t\t" # empty appearance, but the x3d validator complains if nothing set
307303
x3dfile_str += line_set
308-
x3dfile_str += "\t\t</Shape>\n"
304+
x3dfile_str += "\t\t</Shape></Transform>\n"
309305
edge_id += 1
310306
x3dfile_str += "\t</Group>\n"
311307
x3dfile_str += "</Switch>\n"
@@ -332,8 +328,8 @@ def DisplayShape(self,
332328
vertex_shader=None,
333329
fragment_shader=None,
334330
export_edges=False,
335-
color=(0.65, 0.65, 0.65),
336-
specular_color=(1, 1, 1),
331+
color=(0.65, 0.65, 0.7),
332+
specular_color=(0.2, 0.2, 0.2),
337333
shininess=0.9,
338334
transparency=0.,
339335
line_color=(0, 0., 0.),

src/Extend/DataExchange.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from OCC.Core.TDF import TDF_LabelSequence, TDF_Label, TDF_Tool
3434
from OCC.Core.TDataStd import TDataStd_Name, TDataStd_Name_GetID
3535
from OCC.Core.TCollection import TCollection_ExtendedString, TCollection_AsciiString
36-
from OCC.Core.Quantity import Quantity_Color
36+
from OCC.Core.Quantity import Quantity_Color, Quantity_TOC_RGB
3737
from OCC.Core.TopLoc import TopLoc_Location
3838
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_Transform
3939

@@ -43,7 +43,7 @@
4343
##########################
4444
# Step import and export #
4545
##########################
46-
def read_step_file(filename, return_as_shapes=False, verbosity=False):
46+
def read_step_file(filename, return_as_shapes=False, verbosity=True):
4747
""" read the STEP file and returns a compound
4848
filename: the file path
4949
return_as_shapes: optional, False by default. If True returns a list of shapes,
@@ -112,7 +112,8 @@ def read_step_file_with_names_colors(filename):
112112
if not os.path.isfile(filename):
113113
raise FileNotFoundError("%s not found." % filename)
114114
# the list:
115-
output_shapes = []
115+
output_shapes = {}
116+
116117
# create an handle to a document
117118
doc = TDocStd_Document(TCollection_ExtendedString("pythonocc-doc"))
118119

@@ -127,14 +128,13 @@ def read_step_file_with_names_colors(filename):
127128
step_reader.SetLayerMode(True)
128129
step_reader.SetNameMode(True)
129130
step_reader.SetMatMode(True)
131+
step_reader.SetGDTMode(True)
130132

131133
status = step_reader.ReadFile(filename)
132134
if status == IFSelect_RetDone:
133135
step_reader.Transfer(doc)
134136

135-
shape_tool.SetAutoNaming(True)
136137

137-
138138
#lvl = 0
139139
locs = []
140140
#cnt = 0
@@ -144,7 +144,7 @@ def _get_label_name(lab):
144144
TDF_Tool.Entry(lab, entry)
145145
n = TDataStd_Name()
146146
lab.FindAttribute(TDataStd_Name_GetID(), n)
147-
if n:
147+
if n is not None:
148148
return n.Get().PrintToString()
149149
return "No Name"
150150

@@ -174,6 +174,8 @@ def _get_sub_shapes(lab, loc):
174174
shape_tool.GetComponents(lab, l_comps)
175175
#print("Nb components :", l_comps.Length())
176176
#print()
177+
name = _get_label_name(lab)
178+
print("Name :", name)
177179

178180
if shape_tool.IsAssembly(lab):
179181
l_c = TDF_LabelSequence()
@@ -232,9 +234,7 @@ def _get_sub_shapes(lab, loc):
232234
#print(" X :", tran.X())
233235
#print(" Y :", tran.Y())
234236
#print(" Z :", tran.Z())
235-
shape = BRepBuilderAPI_Transform(shape, loc.Transformation()).Shape()
236-
237-
c = Quantity_Color()
237+
c = Quantity_Color(0.5, 0.5, 0.5, Quantity_TOC_RGB) # default color
238238
colorSet = False
239239
if (color_tool.GetInstanceColor(shape, 0, c) or
240240
color_tool.GetInstanceColor(shape, 1, c) or
@@ -258,12 +258,15 @@ def _get_sub_shapes(lab, loc):
258258
#n = c.Name(c.Red(), c.Green(), c.Blue())
259259
#print(' shape color Name & RGB: ', c, n, c.Red(), c.Green(), c.Blue())
260260

261+
shape_disp = BRepBuilderAPI_Transform(shape, loc.Transformation()).Shape()
262+
if not shape_disp in output_shapes:
263+
output_shapes[shape_disp] = [_get_label_name(lab), c]
261264
for i in range(l_subss.Length()):
262265
lab = l_subss.Value(i+1)
263-
print("\n######## simpleshape subshape label :", lab)
266+
#print("\n######## simpleshape subshape label :", lab)
264267
shape_sub = shape_tool.GetShape(lab)
265268

266-
c = Quantity_Color()
269+
c = Quantity_Color(0.5, 0.5, 0.5, Quantity_TOC_RGB) # default color
267270
colorSet = False
268271
if (color_tool.GetInstanceColor(shape_sub, 0, c) or
269272
color_tool.GetInstanceColor(shape_sub, 1, c) or
@@ -283,8 +286,10 @@ def _get_sub_shapes(lab, loc):
283286

284287
n = c.Name(c.Red(), c.Green(), c.Blue())
285288
#print(' shape color Name & RGB: ', c, n, c.Red(), c.Green(), c.Blue())
286-
287-
output_shapes.append([shape, _get_label_name(lab), c])
289+
shape_to_disp = BRepBuilderAPI_Transform(shape_sub, loc.Transformation()).Shape()
290+
# position the subshape to display
291+
if not shape_to_disp in output_shapes:
292+
output_shapes[shape_to_disp] = [_get_label_name(lab), c]
288293

289294

290295
def _get_shapes():
@@ -296,9 +301,9 @@ def _get_shapes():
296301
print()
297302
print("Number of shapes at root :", labels.Length())
298303
print()
299-
root = labels.Value(1)
300-
301-
_get_sub_shapes(root, None)
304+
for i in range(labels.Length()):
305+
root_item = labels.Value(i+1)
306+
_get_sub_shapes(root_item, None)
302307
_get_shapes()
303308
return output_shapes
304309

0 commit comments

Comments
 (0)