Arch: Added pref options for window transparency and collada export scaling - fixes #1379

This commit is contained in:
Yorik van Havre 2014-04-16 17:21:21 -03:00
parent dfe1c84796
commit 5d5ed949c6
5 changed files with 77 additions and 5 deletions

View File

@ -53,6 +53,8 @@ def makeWindow(baseobj=None,width=None,height=None,parts=None,name=translate("Ar
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name) obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
_Window(obj) _Window(obj)
_ViewProviderWindow(obj.ViewObject) _ViewProviderWindow(obj.ViewObject)
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
obj.ViewObject.Transparency=p.GetInt("WindowTransparency",85)
if width: if width:
obj.Width = width obj.Width = width
if height: if height:

File diff suppressed because one or more lines are too long

View File

@ -560,6 +560,26 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Transparency:</string>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefSpinBox" name="spinBox">
<property name="value">
<number>85</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>WindowTransparency</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
<property name="text"> <property name="text">
@ -636,6 +656,11 @@
<extends>QPushButton</extends> <extends>QPushButton</extends>
<header>Gui/Widgets.h</header> <header>Gui/Widgets.h</header>
</customwidget> </customwidget>
<customwidget>
<class>Gui::PrefSpinBox</class>
<extends>QSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget> <customwidget>
<class>Gui::PrefColorButton</class> <class>Gui::PrefColorButton</class>
<extends>Gui::ColorButton</extends> <extends>Gui::ColorButton</extends>

View File

@ -289,6 +289,45 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Collada export</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Scaling factor</string>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefDoubleSpinBox" name="doubleSpinBox">
<property name="decimals">
<number>4</number>
</property>
<property name="maximum">
<double>999999.989999999990687</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>ColladaScalingFactor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">

View File

@ -84,6 +84,9 @@ def decode(name):
def read(filename): def read(filename):
global col global col
col = collada.Collada(filename, ignore=[collada.DaeUnsupportedError]) col = collada.Collada(filename, ignore=[collada.DaeUnsupportedError])
# Read the unitmeter info from dae file and compute unit to convert to mm
unitmeter = col.assetInfo.unitmeter or 1
unit = unitmeter / 0.001
for geom in col.scene.objects('geometry'): for geom in col.scene.objects('geometry'):
#for geom in col.geometries: #for geom in col.geometries:
for prim in geom.primitives(): for prim in geom.primitives():
@ -97,6 +100,7 @@ def read(filename):
for tri in tset: for tri in tset:
face = [] face = []
for v in tri.vertices: for v in tri.vertices:
v = [x * unit for x in v]
face.append([v[0],v[1],v[2]]) face.append([v[0],v[1],v[2]])
meshdata.append(face) meshdata.append(face)
#print meshdata #print meshdata
@ -108,6 +112,8 @@ def read(filename):
def export(exportList,filename): def export(exportList,filename):
"called when freecad exports a file" "called when freecad exports a file"
if not checkCollada(): return if not checkCollada(): return
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
scale = p.GetFloat("ColladaScalingFactor",1.0)
colmesh = collada.Collada() colmesh = collada.Collada()
colmesh.assetInfo.upaxis = collada.asset.UP_AXIS.Z_UP colmesh.assetInfo.upaxis = collada.asset.UP_AXIS.Z_UP
effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1)) effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1))
@ -125,7 +131,7 @@ def export(exportList,filename):
findex = [] findex = []
# vertex indices # vertex indices
for v in m[0]: for v in m[0]:
vindex.extend([v.x,v.y,v.z]) vindex.extend([v.x*scale,v.y*scale,v.z*scale])
# normals # normals
for f in obj.Shape.Faces: for f in obj.Shape.Faces:
n = f.normalAt(0,0) n = f.normalAt(0,0)
@ -143,7 +149,7 @@ def export(exportList,filename):
findex = [] findex = []
# vertex indices # vertex indices
for v in m.Topology[0]: for v in m.Topology[0]:
vindex.extend([v.x,v.y,v.z]) vindex.extend([v.x*scale,v.y*scale,v.z*scale])
# normals # normals
for f in m.Facets: for f in m.Facets:
n = f.Normal n = f.Normal