diff --git a/WorkFeature/Beam/__init__.py b/WorkFeature/Beam/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/Beam/beam.py b/WorkFeature/Beam/beam.py new file mode 100644 index 0000000..c41cd0d --- /dev/null +++ b/WorkFeature/Beam/beam.py @@ -0,0 +1,254 @@ +# -*- coding: utf-8 -*- + +import os +import FreeCAD as App +import FreeCADGui as Gui +import Part + +def sketch_normal(sketch): + a = App.Vector(0, 0, 1) + return sketch.Placement.Rotation.multVec(a) + +def project_to_plane(plane_p, plane_n, p, n): + '''p + l * n = plane_p + x * plane_n''' + return p + n * (plane_n.dot(plane_p - p) / (n.dot(plane_n))) + +class Beam(): + def __init__(self, obj, profile, path, path_name): + "'''Beam: representing a straight extrusion of a profile'''" + obj.addProperty("App::PropertyString", "type", "Beam", "type of the object").type = "beam" + obj.addProperty("App::PropertyLink","profile","Beam","sketch profile of the beam").profile = profile + obj.addProperty("App::PropertyLink","path","Beam","path of the beam").path = path + obj.addProperty("App::PropertyString","path_name","Beam", "name of beam line").path_name = path_name + obj.addProperty("App::PropertyDistance", "exdent_1", "Beam", "exdent side 1").exdent_1 = "0 mm" + obj.addProperty("App::PropertyDistance", "exdent_2", "Beam", "exdent side 2").exdent_2 = "0 mm" + obj.setEditorMode("path_name", 1) + obj.Proxy = self + self.Object = obj + + + def initialize(self): + print("initialize ...") + + @property + def profile(self): + profile = Part.Face(self.Object.profile.Shape.Wires) + if profile.Area < 0: + profile = Part.Face(self.Object.profile.Shape.Wires[::-1]) + return profile + + @property + def outer_shape(self): + path, a, b, n = self.path_a_b_n + profile = Part.Face(self.profile.Wires[0]) + new_profile = self.transform_to_n(profile, self.midpoint, a - n * self.Object.exdent_1.Value, n) + return new_profile.extrude(App.Vector(b - a) + n * (self.Object.exdent_1.Value + self.Object.exdent_2.Value)) + + def attach(self, fp): + fp.Proxy.Object = fp + + def execute(self, fp): + '''Do something when doing a recomputation, this method is mandatory''' + fp.Proxy.Object = fp + path, a, b, n = self.path_a_b_n + new_profile = self.transform_to_n(self.profile, self.midpoint, a - n * fp.exdent_1.Value, n) + fp.Shape = new_profile.extrude(App.Vector(b - a) + n * (fp.exdent_1.Value + fp.exdent_2.Value)) + + def transform_to_n(self, profile, midpoint, p, n): + '''transform a profile (Shape) lying in z = 0 to p and n''' + + t = sketch_normal(self.Object.path) + n.normalize() + v = n.cross(t) + + mat2 = App.Matrix() + mat2.move(App.Vector() - midpoint) + new_profile = profile.transformGeometry(mat2) + + rot_mat = App.Matrix() + rot_mat.A11 = v.x + rot_mat.A21 = v.y + rot_mat.A31 = v.z + rot_mat.A12 = t.x + rot_mat.A22 = t.y + rot_mat.A32 = t.z + rot_mat.A13 = n.x + rot_mat.A23 = n.y + rot_mat.A33 = n.z + new_profile = new_profile.transformGeometry(rot_mat) + + mat3 = App.Matrix() + mat3.move(p) + new_profile.transformShape(mat3) + return new_profile + + @property + def midpoint(self): + profile_midpoint = filter(lambda x: isinstance(x, App.Base.Vector), self.Object.profile.Geometry) + if len(profile_midpoint) == 0 or profile_midpoint is None: + profile_midpoint = App.Vector(0, 0, 0) + else: + profile_midpoint = profile_midpoint[0] + return profile_midpoint + + @property + def path_a_b_n(self): + path = self.Object.path.Shape.getElement(self.Object.path_name) + a, b = path.Vertexes + n = b.Point - a.Point + n.normalize() + return (path, a.Point, b.Point, n) + + @property + def profile_bound_box(self): + fac = 0.3 + bb = self.Object.profile.Shape.BoundBox + xmax = bb.XMax + bb.XLength * fac + xmin = bb.XMin - bb.XLength * fac + ymax = bb.YMax + bb.YLength * fac + ymin = bb.YMin - bb.YLength * fac + pol = Part.makePolygon( + [App.Vector(xmax, ymax, 0), + App.Vector(xmax, ymin, 0), + App.Vector(xmin, ymin, 0), + App.Vector(xmin, ymax, 0), + App.Vector(xmax, ymax, 0)]) + path, a, b, n = self.path_a_b_n + return self.transform_to_n(pol, self.midpoint, a, n) + + def project_profile_bound_box(self, plane_n, plane_p): + bb = self.profile_bound_box.Vertexes + vectors = [v.Point for v in bb] + path, a, b, n = self.path_a_b_n + projected = [project_to_plane(plane_p, plane_n, v, n) for v in vectors] + projected.append(projected[0]) + pol = Part.makePolygon(projected) + return pol + + def __getstate__(self): + return None + + def __setstate__(self, state): + return None + + +class ViewProviderBeam: + def __init__(self, obj): + ''' Set this object to the proxy object of the actual view provider ''' + obj.Proxy = self + + def attach(self, vobj): + self.vobj = vobj + + def getIcon(self): + _dir = os.path.dirname(os.path.realpath(__file__)) + return(_dir + "/" + "Icons/beam.png") + + def __getstate__(self): + return None + + def __setstate__(self, state): + return None + + +def makeBeam2(): + def plot_edge(Vector_A, Vector_B, part="Part::Feature", name="Edge", grp="Work"): + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + edge = App.ActiveDocument.addObject(part, name) + edge.Shape = Part.makeLine(Vector_A, Vector_B) + App.ActiveDocument.getObject( grp ).addObject(edge) + edge_User_Name = edge.Label + + return edge_User_Name, edge + + def plot_shape(Shape, part="Part::Feature", name="Shape", grp="Work"): + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + shape = App.ActiveDocument.addObject(part, name) + shape.Shape = Part.Shape(Shape) + App.ActiveDocument.getObject( grp ).addObject(shape) + shape_User_Name = shape.Label + + return shape_User_Name, shape + + from FreeCAD import Base + V1 = Base.Vector(0,10,0) + V2 = Base.Vector(30,10,0) + V3 = Base.Vector(30,-10,0) + V4 = Base.Vector(0,-10,0) + + VC1 = Base.Vector(-10,0,0) + C1 = Part.Arc(V1,VC1,V4) + L0 = Part.Line(V1,V4) + S0 = Part.Shape([C1,L0]) + + v1 = App.Vector(0,0,0) + v2 = App.Vector(10,0,0) + v3 = App.Vector(0,10,0) + #profile = Part.makePolygon([v1,v2,v3,v1]) + v4 = App.Vector(0,0,100) + L1 = Part.Line(v1,v4) + S1 = Part.Shape([L1]) + + + #path = Part.makeLine(v1, v4) + App.newDocument() + + + shape_User_Name, shape = plot_shape([C1,L0], part="Part::Feature", name="profile", grp="Work") + edge_User_Name, edge = plot_edge(v1, v4, part="Part::Feature", name="path", grp="Work") + + + a=App.ActiveDocument.addObject("Part::FeaturePython","Beam") + Beam(a, shape_User_Name, edge_User_Name, "Beam") + ViewProviderBeam(a.ViewObject) + +class make_beam(object): + def __init__(self, view): + self.profile = None + self.midpoint = None + self.path = None + self.n = None + self.view = view + App.Console.PrintMessage("choose the profile\n") + Gui.Selection.clearSelection() + self.klick_event = self.view.addEventCallback("SoMouseButtonEvent", self.choose_profile) + + + def choose_profile(self, cb): + if cb["State"] == "DOWN": + sel = Gui.Selection.getSelection() + if len(sel) > 0: + self.profile = sel[0] + App.Console.PrintMessage("Profile selected !\n") + Gui.Selection.clearSelection() + self.view.removeEventCallback("SoMouseButtonEvent", self.klick_event) + self.klick_event = self.view.addEventCallback("SoMouseButtonEvent", self.choose_path) + App.Console.PrintMessage("choose path\n") + + def choose_path(self, cb): + if cb["State"] == "DOWN": + sel = Gui.Selection.getSelectionEx() + if sel: + path_sketch = sel[0].Object + path_name = sel[0].SubElementNames[0] + App.Console.PrintMessage("Path selected !\n") + self.view.removeEventCallback("SoMouseButtonEvent", self.klick_event) + + a = App.ActiveDocument.addObject("Part::FeaturePython","beam") + Beam(a, self.profile, path_sketch, path_name) + ViewProviderBeam(a.ViewObject) + App.ActiveDocument.recompute() + + + App.Console.PrintMessage("end of tube tool\n") + + +if __name__ == "__main__": + view = Gui.ActiveDocument.activeView() + selection = make_beam(view) + +# if __name__ == '__main__': +# makeBeam() + \ No newline at end of file diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf index 9e3328c..a857023 100644 Binary files a/WorkFeature/Doc/WF_releasesDocumentation.pdf and b/WorkFeature/Doc/WF_releasesDocumentation.pdf differ diff --git a/WorkFeature/Icons/WF_Beam.svg b/WorkFeature/Icons/WF_Beam.svg index 2cda4c0..d5f97eb 100644 --- a/WorkFeature/Icons/WF_Beam.svg +++ b/WorkFeature/Icons/WF_Beam.svg @@ -14,7 +14,7 @@ width="64" height="64" id="svg3017" - inkscape:version="0.48.5 r10040" + inkscape:version="0.91 r13725" sodipodi:docname="WF_Beam.svg" inkscape:export-filename="/home/mark/HyperbolaIcon.png" inkscape:export-xdpi="90" @@ -388,6 +388,37 @@ operator="over" result="composite2" /> </filter> + <filter + id="filter42258-8" + style="color-interpolation-filters:sRGB" + inkscape:label="Drop Shadow"> + <feFlood + id="feFlood42260-7" + flood-opacity="0.705" + flood-color="rgb(0,0,0)" + result="flood" /> + <feComposite + id="feComposite42262-8" + in2="SourceGraphic" + in="flood" + operator="in" + result="composite1" /> + <feGaussianBlur + id="feGaussianBlur42264-72" + stdDeviation="0.8" + result="blur" /> + <feOffset + id="feOffset42266-4" + dx="1.4" + dy="1.4" + result="offset" /> + <feComposite + id="feComposite42268-09" + in2="offset" + in="SourceGraphic" + operator="over" + result="composite2" /> + </filter> </defs> <sodipodi:namedview pagecolor="#ffffff" @@ -398,17 +429,24 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1366" - inkscape:window-height="702" + inkscape:window-width="758" + inkscape:window-height="617" id="namedview13601" showgrid="false" - inkscape:zoom="5.840651" - inkscape:cx="60.002575" - inkscape:cy="25.215672" - inkscape:window-x="0" - inkscape:window-y="27" - inkscape:window-maximized="1" + inkscape:zoom="6.640625" + inkscape:cx="38.238655" + inkscape:cy="32" + inkscape:window-x="646" + inkscape:window-y="51" + inkscape:window-maximized="0" inkscape:current-layer="svg3017" /> + <path + style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter42258-8)" + d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z" + id="path41306-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.78623928,0.64039688,-0.64039688,0.78623928,0.95292704,-36.188309)" /> <g id="g3019" transform="translate(0,-126)" /> @@ -417,31 +455,31 @@ id="layer1" inkscape:label="Layer1" /> <path - style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258-1-9)" + style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter42258-1-9)" d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z" id="path41306-0-9" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" - transform="matrix(1.0140416,0,0,1.0140416,6.7397744,-16.930401)" /> + transform="matrix(0.91475345,-0.43761454,0.43761454,0.91475345,-36.379419,43.920861)" /> <path - style="fill:none;stroke:#0079f0;stroke-width:4.9307642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-start:none;filter:url(#filter42258-3)" + style="fill:none;stroke:#0079f0;stroke-width:4.9307642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;filter:url(#filter42258-3)" d="M 59.56913,7.9400816 14.840698,34.047565" id="path41306-2" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" - transform="matrix(0.93587081,-0.32882237,0.35174485,0.87488206,-10.056452,26.755735)" /> + transform="matrix(-0.27517775,-0.79253981,0.77893612,-0.28735762,27.462717,63.890512)" /> <path - style="opacity:0.75;fill:url(#radialGradient4972);fill-opacity:1;stroke:#7b5600;stroke-width:1.97230566;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)" - d="M 5.6355134,3.1288963 18.202502,50.386996 c 4.481547,3.102123 6.508918,3.663424 10.697937,4.957264 6.523619,2.014916 10.431492,2.708408 16.592978,3.580061 5.940277,0.840358 10.042357,1.311866 18.251555,-0.935616 5.871839,-1.607569 4.984746,-11.508491 1.746683,-14.547053 L 49.661758,-4.8533273 50.129083,9.6635035 C 43.991819,12.312691 38.86159,10.422644 35.440528,10.84792 28.051671,10.309231 22.570106,8.9514381 19.006586,8.3928725 14.48281,7.5717689 6.7252415,3.7669368 5.6355134,3.1288963 z" + style="opacity:0.75;fill:url(#radialGradient4972);fill-opacity:1;stroke:#7b5600;stroke-width:1.97230566;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter42258)" + d="m 54.010478,41.307266 -17.734987,-8.755467 17.247348,40.57948 c 1.86213,4.381212 3.579819,4.267496 11.961656,6.988451 5.401039,1.753313 6.991569,2.275752 15.200767,0.02827 C 86.557101,78.540431 93.065327,65.452713 92.8796,57.850683 L 76.424167,17.964864 64.006027,39.033739 c -6.137264,2.649188 -17.8513,-0.77147 -26.817735,-6.293186 -3.042053,-2.222593 7.117067,-9.575771 17.659045,-13.377937 10.541978,-3.802166 16.028623,-6.72627 20.257088,-3.10398 -0.645052,4.552964 -0.01884,10.14017 -5.449468,16.541579 -5.430623,6.40141 -15.058386,8.796395 -15.644479,8.507051 z" id="path41302" inkscape:connector-curvature="0" - sodipodi:nodetypes="ccssscccccc" - transform="matrix(-0.37450424,-0.5067961,0.81446679,-0.60186189,27.487169,66.65621)" /> + sodipodi:nodetypes="scsssccccscss" + transform="matrix(-0.49449359,0.39060441,-0.62773631,-0.79469555,97.151171,40.082247)" /> <path - style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter42258)" + style="fill:none;stroke:#0079f0;stroke-width:2.95845842;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter42258)" d="M 53.466148,40.841396 C 54.960979,34.41438 48.179469,13.17288 40.4768,16.330627 c -15.262777,8.562116 -9.554229,15.976085 -0.985029,20.249582 2.913415,2.039486 12.07402,7.793518 13.974377,4.261187 z" id="path41306" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" - transform="matrix(1.0140416,0,0,1.0140416,-26.228007,19.516859)" /> + transform="matrix(0.78623928,0.64039688,-0.64039688,0.78623928,35.707732,-10.466987)" /> </svg> diff --git a/WorkFeature/Icons/WF_isRadius.svg b/WorkFeature/Icons/WF_isRadius.svg new file mode 100644 index 0000000..095a505 --- /dev/null +++ b/WorkFeature/Icons/WF_isRadius.svg @@ -0,0 +1,473 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="64px" + height="64px" + id="svg2860" + sodipodi:version="0.32" + inkscape:version="0.48.5 r10040" + sodipodi:docname="WF_isRadius.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.1"> + <defs + id="defs2862"> + <linearGradient + inkscape:collect="always" + id="linearGradient4247"> + <stop + style="stop-color:#f30606;stop-opacity:1;" + offset="0" + id="stop4249" /> + <stop + style="stop-color:#f30606;stop-opacity:0;" + offset="1" + id="stop4251" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4155"> + <stop + style="stop-color:#0079ff;stop-opacity:1;" + offset="0" + id="stop4157" /> + <stop + style="stop-color:#0079ff;stop-opacity:0;" + offset="1" + id="stop4159" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4135"> + <stop + style="stop-color:#0079ff;stop-opacity:1;" + offset="0" + id="stop4137" /> + <stop + style="stop-color:#0079ff;stop-opacity:0;" + offset="1" + id="stop4139" /> + </linearGradient> + <linearGradient + id="linearGradient3377"> + <stop + id="stop3379" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2868" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-7" + id="radialGradient3692-3" + cx="45.883327" + cy="28.869568" + fx="45.883327" + fy="28.869568" + r="19.467436" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-7"> + <stop + id="stop3379-8" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-5" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="19.467436" + fy="28.869568" + fx="45.883327" + cy="28.869568" + cx="45.883327" + gradientUnits="userSpaceOnUse" + id="radialGradient3288-6" + xlink:href="#linearGradient3377-7-5" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3377-7-5"> + <stop + id="stop3379-8-7" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-5-4" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4135" + id="linearGradient4145" + x1="131.82286" + y1="101.22672" + x2="191.3165" + y2="101.22672" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4155" + id="linearGradient4161" + x1="4.6279406" + y1="100.81277" + x2="60.639036" + y2="100.81277" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4155" + id="linearGradient4231" + x1="33.746853" + y1="34.571426" + x2="72.681725" + y2="34.571426" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4135" + id="linearGradient3034" + gradientUnits="userSpaceOnUse" + x1="131.82286" + y1="101.22672" + x2="184.22351" + y2="100.7989" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144" + id="radialGradient3191" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3144"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3146" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3148" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-4" + id="radialGradient4272" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3144-4"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3146-3" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3148-6" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3809" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + id="linearGradient3144-8" + inkscape:collect="always"> + <stop + id="stop3146-1" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop3148-3" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3811" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3799" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3819" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3827" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3361" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3363" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3365" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144-8" + id="radialGradient3367" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4135-9" + id="linearGradient4145-1" + x1="131.82286" + y1="101.22672" + x2="191.3165" + y2="101.22672" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4135-9"> + <stop + style="stop-color:#0079ff;stop-opacity:1;" + offset="0" + id="stop4137-0" /> + <stop + style="stop-color:#0079ff;stop-opacity:0;" + offset="1" + id="stop4139-9" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4247" + id="linearGradient4253" + x1="3.6551317" + y1="12.367598" + x2="17.097535" + y2="12.367598" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-3.2003726,1.9706624)" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="6.7121053" + inkscape:cx="32.025693" + inkscape:cy="29.714482" + inkscape:current-layer="layer2" + showgrid="true" + inkscape:document-units="px" + inkscape:grid-bbox="true" + inkscape:window-width="1070" + inkscape:window-height="665" + inkscape:window-x="65" + inkscape:window-y="63" + inkscape:window-maximized="0" /> + <metadata + id="metadata2865"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer0"> + <g + id="g3805" + transform="matrix(0.42308339,-0.4673726,0.45454442,0.41147084,-191.37645,234.47455)"> + <path + transform="matrix(-0.1204122,-0.01873251,0.01873251,-0.1204122,472.97923,114.92595)" + d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z" + sodipodi:ry="23.991123" + sodipodi:rx="34.345188" + sodipodi:cy="672.79736" + sodipodi:cx="225.26402" + id="path2903" + style="fill:url(#radialGradient3359);fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g3813" + transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,100.90296,75.889312)" + inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png" + inkscape:export-xdpi="7.2934141" + inkscape:export-ydpi="7.2934141" /> + <g + id="g3821" + transform="matrix(-0.0719454,0.08583917,-0.08364263,-0.06979446,125.77915,48.713266)" + inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/circle.png" + inkscape:export-xdpi="7.2934141" + inkscape:export-ydpi="7.2934141" /> + <text + xml:space="preserve" + style="font-size:28px;font-style:normal;font-weight:normal;fill:#f30606;fill-opacity:1;stroke:#000000;stroke-width:0.94630939000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="-0.99982059" + y="24.728886" + id="text3735" + transform="matrix(0.88877016,-0.00548731,0.00694648,1.1251074,0,0)"><tspan + sodipodi:role="line" + id="tspan3737" + x="-0.99982059" + y="24.728886" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#f30606;fill-opacity:1;stroke:#000000;stroke-width:0.94630939000000003;stroke-opacity:1;font-family:Arial Black;-inkscape-font-specification:'Arial Black, Bold'">?</tspan></text> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + id="path3198-6" + d="M 14.02577,62.076429 C 22.33199,33.733751 36.895562,19.246636 62.48399,19.360008 l -0.103268,3.502841 C 35.89262,25.127098 27.43165,37.522297 17.03388,63.47509 z" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.30718172;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="font-size:54.21519089px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:none;stroke:#000000;stroke-width:3.85229659;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:7.70459246, 3.85229622;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Arial;-inkscape-font-specification:Arial" + d="M 57.149701,59.436716 27.748911,26.506858" + id="path4435" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:URW Gothic L;-inkscape-font-specification:URW Gothic L Book" + x="48.782253" + y="46.230598" + id="text3650" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="48.782253" + y="46.230598" + id="tspan4206" + style="font-weight:600;-inkscape-font-specification:URW Gothic L Semi-Bold">R</tspan></text> + </g> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + id="g3618" + transform="matrix(0.52225346,0,0,0.57723952,-65.447599,-41.263971)" + style="fill:url(#linearGradient4145);fill-opacity:1;stroke:#001833;stroke-opacity:1"> + <path + style="fill:#0079f0;fill-opacity:1;fill-rule:evenodd;stroke:#001833;stroke-width:1.53699219;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.74117647;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 139.43421,174.32438 c 15.84398,-68.67834 41.38722,-78.510254 99.7368,-83.696402 l 2.1381,6.489111 c -64.02927,7.754821 -72.71569,12.412451 -96.52154,78.755591 z" + id="rect3520" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + </g> + <g + id="g3564" + transform="matrix(0.57893948,0,0,0.57354776,33.859216,-7.0273696)" + style="fill:url(#linearGradient4161);fill-opacity:1" /> + </g> +</svg> diff --git a/WorkFeature/Icons/WF_objectCopy.svg b/WorkFeature/Icons/WF_objectCopy.svg new file mode 100644 index 0000000..60db8e1 --- /dev/null +++ b/WorkFeature/Icons/WF_objectCopy.svg @@ -0,0 +1,381 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="64px" + height="64px" + id="svg6248" + sodipodi:version="0.32" + inkscape:version="0.48.5 r10040" + sodipodi:docname="WF_objectCopy.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.1"> + <defs + id="defs6250"> + <linearGradient + id="linearGradient3253"> + <stop + style="stop-color:#89d5f8;stop-opacity:1;" + offset="0" + id="stop3255" /> + <stop + style="stop-color:#00899e;stop-opacity:1;" + offset="1" + id="stop3257" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6816"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6818" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop6820" /> + </linearGradient> + <linearGradient + id="linearGradient6781"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop6783" /> + <stop + style="stop-color:#3465a4;stop-opacity:0;" + offset="1" + id="stop6785" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective6256" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6781" + id="linearGradient6787" + x1="8.2986603" + y1="15.743738" + x2="1.7074128" + y2="36.600822" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.1723565,0.9850346,0.9850346,0.1723565,-9.8385315,6.3516142)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6816" + id="radialGradient6822" + cx="33.369828" + cy="51.929391" + fx="33.369828" + fy="51.929391" + r="25.198714" + gradientTransform="matrix(1.1581633,0,0,0.6558985,59.798539,15.944259)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5238" + id="linearGradient3675" + x1="81.451569" + y1="14.993487" + x2="3.0457773" + y2="17.729464" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.073092,0,0,1.2409961,-3.4880263,-3.3958734)" /> + <linearGradient + id="linearGradient5238"> + <stop + id="stop5240" + offset="0" + style="stop-color:#001ccc;stop-opacity:1;" /> + <stop + id="stop5242" + offset="1" + style="stop-color:#00afff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5238" + id="linearGradient5278" + x1="39.062847" + y1="28.236254" + x2="15.537552" + y2="30.209774" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.63858911,0.01886473,0,0.6800597,12.419337,8.4146081)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144" + id="radialGradient5582" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3144"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3146" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3148" /> + </linearGradient> + <radialGradient + r="34.345188" + fy="672.79736" + fx="225.26402" + cy="672.79736" + cx="225.26402" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + gradientUnits="userSpaceOnUse" + id="radialGradient5768" + xlink:href="#linearGradient3144" + inkscape:collect="always" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3144" + id="radialGradient5795" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5238-8" + id="linearGradient5278-3" + x1="39.062847" + y1="28.236254" + x2="15.537552" + y2="30.209774" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.63858911,0.01886473,0,0.6800597,12.419337,8.4146081)" /> + <linearGradient + id="linearGradient5238-8"> + <stop + id="stop5240-0" + offset="0" + style="stop-color:#001ccc;stop-opacity:1;" /> + <stop + id="stop5242-8" + offset="1" + style="stop-color:#00afff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3377"> + <stop + id="stop3379" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4722"> + <stop + id="stop4724" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop4726" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377" + id="radialGradient4426" + gradientUnits="userSpaceOnUse" + cx="45.883327" + cy="28.869568" + fx="45.883327" + fy="28.869568" + r="19.467436" + gradientTransform="translate(-129.7515,-68.681262)" /> + <linearGradient + id="linearGradient4729"> + <stop + id="stop4731" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop4733" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377" + id="radialGradient5552" + cx="32.41333" + cy="12.501603" + fx="32.41333" + fy="12.501603" + r="17.779947" + gradientTransform="matrix(1,0,0,0.50153435,0,6.2316196)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-5" + id="radialGradient5552-7" + cx="32.41333" + cy="12.501603" + fx="32.41333" + fy="12.501603" + r="17.779947" + gradientTransform="matrix(1,0,0,0.50153435,0,6.2316196)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-5"> + <stop + id="stop3379-3" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-2" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3377-3" + id="radialGradient5552-5" + cx="32.41333" + cy="12.501603" + fx="32.41333" + fy="12.501603" + r="17.779947" + gradientTransform="matrix(1,0,0,0.50153435,0,6.2316196)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3377-3"> + <stop + id="stop3379-0" + offset="0" + style="stop-color:#faff2b;stop-opacity:1;" /> + <stop + id="stop3381-6" + offset="1" + style="stop-color:#ffaa00;stop-opacity:1;" /> + </linearGradient> + <radialGradient + r="17.779947" + fy="12.501603" + fx="32.41333" + cy="12.501603" + cx="32.41333" + gradientTransform="matrix(1,0,0,0.50153435,-11.638763,42.837407)" + gradientUnits="userSpaceOnUse" + id="radialGradient5630" + xlink:href="#linearGradient3377-3" + inkscape:collect="always" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.99054" + inkscape:cx="30.695174" + inkscape:cy="28.159855" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:document-units="px" + inkscape:grid-bbox="true" + inkscape:window-width="1086" + inkscape:window-height="701" + inkscape:window-x="278" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="0,1" + position="66.534653,64.492849" + id="guide5842" /> + </sodipodi:namedview> + <metadata + id="metadata6253"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Layer0" /> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + style="color:#000000;fill:url(#linearGradient5278);fill-opacity:1;fill-rule:nonzero;stroke:#00064a;stroke-width:1.42440391;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 29.603191,10.406007 -14.281175,11.324601 0.81275,21.78592 22.292565,7.953737 10.565746,-14.896482 0.464429,-22.366426 -19.854315,-3.80135 z" + id="path2557" + inkscape:connector-curvature="0" /> + <path + id="path2559" + style="color:#000000;fill:none;stroke:#00064a;stroke-width:1.36512899;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 15.408137,21.659106 38.13654,27.247886 49.62441,14.087858 M 37.913623,27.243157 38.31385,50.911005" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="color:#000000;fill:url(#radialGradient5552);fill-opacity:1;fill-rule:nonzero;stroke:#7b5600;stroke-width:1.42440391000000011;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 29.626759,4.2965507 15.345584,15.621152 36.573679,20.706655 49.481074,8.0979007 z" + id="path2557-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#7b5600;stroke-width:2.524;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:1" + d="M 56.408428,15.872739 42.627845,31.57752 42.70593,52.43167 55.863621,36.318772 z" + id="path2557-6-0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="color:#000000;fill:none;stroke:#7b5600;stroke-width:2.52399993;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 27.949071,27.44737 -19.9128345,-5.320081 0.078085,0.07958 23.1695305,6.038296 z" + id="path2557-6-0-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="color:#000000;fill:url(#radialGradient5630);fill-opacity:1;fill-rule:nonzero;stroke:#7b5600;stroke-width:1.42440391;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 3.4708294,27.261207 3.706821,52.226939 24.934916,57.312442 25.202364,32.314037 z" + id="path2557-6-8" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg> diff --git a/WorkFeature/Ui/WFGui_2015.py b/WorkFeature/Ui/WFGui_2015.py index 13fb09c..075986e 100644 --- a/WorkFeature/Ui/WFGui_2015.py +++ b/WorkFeature/Ui/WFGui_2015.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sat Nov 7 20:09:36 2015 -# by: PySide UI code generator 4.11.2 +# Created: Sun Dec 13 18:49:39 2015 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -636,7 +636,7 @@ class Ui_Form(object): self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2")) self.scrollAreaWidgetContents_5 = QtGui.QWidget() - self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 259, 650)) + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 245, 648)) self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) @@ -1169,8 +1169,8 @@ class Ui_Form(object): self.tabWidget_7.addTab(self.tab_16, icon45, _fromUtf8("")) self.tab_17 = QtGui.QWidget() self.tab_17.setObjectName(_fromUtf8("tab_17")) - self.gridLayout_85 = QtGui.QGridLayout(self.tab_17) - self.gridLayout_85.setObjectName(_fromUtf8("gridLayout_85")) + self.gridLayout_6 = QtGui.QGridLayout(self.tab_17) + self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) self.frame_9 = QtGui.QFrame(self.tab_17) self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_9.setFrameShadow(QtGui.QFrame.Raised) @@ -1209,11 +1209,16 @@ class Ui_Form(object): self.button_sweep.setIconSize(QtCore.QSize(32, 32)) self.button_sweep.setObjectName(_fromUtf8("button_sweep")) self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1) - self.gridLayout_85.addWidget(self.frame_9, 0, 0, 1, 1) + self.gridLayout_6.addWidget(self.frame_9, 0, 0, 1, 1) spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_85.addItem(spacerItem11, 1, 0, 1, 1) + self.gridLayout_6.addItem(spacerItem11, 2, 0, 1, 1) + self.button_beam = QtGui.QPushButton(self.tab_17) icon47 = QtGui.QIcon() icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon47) + self.button_beam.setIconSize(QtCore.QSize(32, 32)) + self.button_beam.setObjectName(_fromUtf8("button_beam")) + self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1) self.tabWidget_7.addTab(self.tab_17, icon47, _fromUtf8("")) self.Plane_Tab1_3 = QtGui.QWidget() self.Plane_Tab1_3.setObjectName(_fromUtf8("Plane_Tab1_3")) @@ -1618,25 +1623,32 @@ class Ui_Form(object): self.angle_revolve.setObjectName(_fromUtf8("angle_revolve")) self.horizontalLayout_76.addWidget(self.angle_revolve) self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) - self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2) icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon67) + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon67) + self.button_copy_objects.setIconSize(QtCore.QSize(32, 32)) + self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects")) + self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1) + self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon68) self.button_common.setIconSize(QtCore.QSize(32, 32)) self.button_common.setObjectName(_fromUtf8("button_common")) - self.gridLayout_5.addWidget(self.button_common, 8, 0, 1, 1) + self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1) self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) - icon68 = QtGui.QIcon() - icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon68) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon69) self.button_difference.setIconSize(QtCore.QSize(32, 32)) self.button_difference.setObjectName(_fromUtf8("button_difference")) - self.gridLayout_5.addWidget(self.button_difference, 9, 0, 1, 1) + self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1) spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_5.addItem(spacerItem14, 10, 0, 1, 1) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Objects_Tab2_2, icon69, _fromUtf8("")) + self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon70, _fromUtf8("")) self.Modif_Tab_2 = QtGui.QWidget() self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2")) self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2) @@ -1654,9 +1666,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) self.button_alignface2view.setSizePolicy(sizePolicy) self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon70) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon71) self.button_alignface2view.setIconSize(QtCore.QSize(32, 32)) self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view")) self.gridLayout_95.addWidget(self.button_alignface2view, 0, 0, 1, 1) @@ -1664,9 +1676,9 @@ class Ui_Form(object): self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78")) self.button_align_faces = QtGui.QPushButton(self.align_tab_2) self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215)) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon71) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon72) self.button_align_faces.setIconSize(QtCore.QSize(32, 32)) self.button_align_faces.setObjectName(_fromUtf8("button_align_faces")) self.horizontalLayout_78.addWidget(self.button_align_faces) @@ -1685,9 +1697,9 @@ class Ui_Form(object): self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79")) self.button_align_edges = QtGui.QPushButton(self.align_tab_2) self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215)) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon72) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon73) self.button_align_edges.setIconSize(QtCore.QSize(32, 32)) self.button_align_edges.setObjectName(_fromUtf8("button_align_edges")) self.horizontalLayout_79.addWidget(self.button_align_edges) @@ -1705,16 +1717,16 @@ class Ui_Form(object): spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_95.addItem(spacerItem15, 5, 0, 1, 1) self.button_joint_points = QtGui.QPushButton(self.align_tab_2) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon73) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon74) self.button_joint_points.setIconSize(QtCore.QSize(32, 32)) self.button_joint_points.setObjectName(_fromUtf8("button_joint_points")) self.gridLayout_95.addWidget(self.button_joint_points, 3, 0, 1, 1) self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon74) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon75) self.button_joint_faces.setIconSize(QtCore.QSize(32, 32)) self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces")) self.gridLayout_95.addWidget(self.button_joint_faces, 4, 0, 1, 1) @@ -1884,9 +1896,9 @@ class Ui_Form(object): self.ObjRot_button_select_axis.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_axis.setObjectName(_fromUtf8("ObjRot_button_select_axis")) self.gridLayout_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_18, icon75, _fromUtf8("")) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon76, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -1913,9 +1925,9 @@ class Ui_Form(object): self.ObjRot_button_select_center.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_center.setObjectName(_fromUtf8("ObjRot_button_select_center")) self.gridLayout_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_19, icon76, _fromUtf8("")) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon77, _fromUtf8("")) self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1) self.groupBox_21 = QtGui.QGroupBox(self.frame_11) self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67)) @@ -1951,9 +1963,9 @@ class Ui_Form(object): self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle")) self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_11.addTab(self.tab_21, icon77, _fromUtf8("")) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon78, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -2102,9 +2114,9 @@ class Ui_Form(object): self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1) self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1) self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_22, icon78, _fromUtf8("")) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon79, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2179,9 +2191,9 @@ class Ui_Form(object): self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1) self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1) self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_23, icon79, _fromUtf8("")) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon80, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2215,65 +2227,58 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) self.button_alignview.setSizePolicy(sizePolicy) self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon80 = QtGui.QIcon() - icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon80) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon81) self.button_alignview.setIconSize(QtCore.QSize(32, 32)) self.button_alignview.setObjectName(_fromUtf8("button_alignview")) self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1) spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_124.addItem(spacerItem22, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon81 = QtGui.QIcon() - icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon81) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon82) self.button_trackcamera.setIconSize(QtCore.QSize(32, 32)) self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera")) self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.View_Tab_2, icon82, _fromUtf8("")) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon83, _fromUtf8("")) self.tab_24 = QtGui.QWidget() self.tab_24.setObjectName(_fromUtf8("tab_24")) self.gridLayout_125 = QtGui.QGridLayout(self.tab_24) self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125")) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem23, 9, 0, 1, 1) self.button_isView = QtGui.QPushButton(self.tab_24) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon83) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon84) self.button_isView.setIconSize(QtCore.QSize(32, 32)) self.button_isView.setObjectName(_fromUtf8("button_isView")) - self.gridLayout_125.addWidget(self.button_isView, 8, 0, 1, 1) + self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem23, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon84) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon85) self.button_isParallel.setIconSize(QtCore.QSize(32, 32)) self.button_isParallel.setObjectName(_fromUtf8("button_isParallel")) self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1) self.button_isAngle = QtGui.QPushButton(self.tab_24) - icon85 = QtGui.QIcon() - icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon85) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon86) self.button_isAngle.setIconSize(QtCore.QSize(32, 32)) self.button_isAngle.setObjectName(_fromUtf8("button_isAngle")) self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1) self.button_isLength = QtGui.QPushButton(self.tab_24) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon86) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon87) self.button_isLength.setIconSize(QtCore.QSize(32, 32)) self.button_isLength.setObjectName(_fromUtf8("button_isLength")) self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1) - self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon87) - self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) - self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) - self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) self.button_isDistance = QtGui.QPushButton(self.tab_24) icon88 = QtGui.QIcon() icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -2281,30 +2286,44 @@ class Ui_Form(object): self.button_isDistance.setIconSize(QtCore.QSize(32, 32)) self.button_isDistance.setObjectName(_fromUtf8("button_isDistance")) self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1) - self.button_isArea = QtGui.QPushButton(self.tab_24) - icon89 = QtGui.QIcon() - icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon89) - self.button_isArea.setIconSize(QtCore.QSize(32, 32)) - self.button_isArea.setObjectName(_fromUtf8("button_isArea")) - self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) self.button_isCoplanar = QtGui.QPushButton(self.tab_24) - icon90 = QtGui.QIcon() - icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon90) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon89) self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32)) self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar")) self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1) - self.button_isClearance = QtGui.QPushButton(self.tab_24) + self.button_isArea = QtGui.QPushButton(self.tab_24) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon90) + self.button_isArea.setIconSize(QtCore.QSize(32, 32)) + self.button_isArea.setObjectName(_fromUtf8("button_isArea")) + self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) + self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) icon91 = QtGui.QIcon() - icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon91) + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon91) + self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) + self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) + self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) + self.button_isClearance = QtGui.QPushButton(self.tab_24) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon92) self.button_isClearance.setIconSize(QtCore.QSize(32, 32)) self.button_isClearance.setObjectName(_fromUtf8("button_isClearance")) self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1) - icon92 = QtGui.QIcon() - icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.tab_24, icon92, _fromUtf8("")) + self.button_isRadius = QtGui.QPushButton(self.tab_24) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon93) + self.button_isRadius.setIconSize(QtCore.QSize(32, 32)) + self.button_isRadius.setObjectName(_fromUtf8("button_isRadius")) + self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon94, _fromUtf8("")) self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1) @@ -2321,7 +2340,7 @@ class Ui_Form(object): self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1) self.retranslateUi(Form) - self.tabWidget_7.setCurrentIndex(4) + self.tabWidget_7.setCurrentIndex(7) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) self.transition_comboBox.setCurrentIndex(2) @@ -2637,7 +2656,8 @@ class Ui_Form(object): "- Second push this button\n" "\n" "NB: \n" -" - The percentage of the extension can be defined first.", None)) +" - The percentage of the extension can be defined first.\n" +" - Negative percentage will shrink the Axis", None)) self.button_extension_axis.setText(_translate("Form", "Enlarge(Axis)", None)) self.extension_axis.setToolTip(_translate("Form", "Extension of the Line in percentage of original length of the Line.\n" "If the extension is 50% it means that each side is extended with 25% length.\n" @@ -2696,7 +2716,7 @@ class Ui_Form(object): self.ParCurve_button_store_2.setText(_translate("Form", "Store", None)) self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None)) self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None)) - self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "2D", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "Parametric 2D", None)) self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None)) self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" "save your custom curves.", None)) @@ -2734,7 +2754,7 @@ class Ui_Form(object): self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) - self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "3D", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) self.button_linecenter_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" "centered on the Point, perpendicular to the Axis \n" @@ -2807,6 +2827,14 @@ class Ui_Form(object): "# 0 (default), 1 (right corners) or 2 (rounded corners).)\n" "", None)) self.button_sweep.setText(_translate("Form", "Section Sweep", None)) + self.button_beam.setToolTip(_translate("Form", "Beam:\n" +"Will extrude a Section along a Linear Trajectory.\n" +"- Select first one Section wire (Closed wire will generate volumes by default)\n" +"(This Section can be a compound from sketch to realize \"tube\")\n" +"- Select one or several wire(s) as Trajectory(ies)\n" +"- Then push this button\n" +"", None)) + self.button_beam.setText(_translate("Form", "Beam", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweeping", None)) self.button_click_for_plane.setToolTip(_translate("Form", "Click:\n" "Create a rectangular Plane perpendicular to the view at location of one mouse click.\n" @@ -2994,6 +3022,11 @@ class Ui_Form(object): self.button_revolve.setText(_translate("Form", "Revolve", None)) self.angle_revolve.setToolTip(_translate("Form", "Angle of the revolution in degrees.", None)) self.angle_revolve.setText(_translate("Form", "360", None)) + self.button_copy_objects.setToolTip(_translate("Form", "Duplicate:\n" +"Make a copy of an object or a selected subObject part:\n" +"- Select one or several object(s) or subobject(s)\n" +"- Then push this button", None)) + self.button_copy_objects.setText(_translate("Form", "Duplicate", None)) self.button_common.setToolTip(_translate("Form", "Compute the common parts between selected shapes.\n" "- Select at least two objects and click.\n" "\n" @@ -3287,34 +3320,39 @@ class Ui_Form(object): "Click this button\n" " ", None)) self.button_isLength.setText(_translate("Form", "Length ?", None)) - self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" -"- Select the 2 faces/planes or 2 Edges/Lines and\n" -"Click this button\n" -"\n" -"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) - self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) self.button_isDistance.setToolTip(_translate("Form", "Check for two Points distance:\n" "Distances measurement and Delta values (on main Axes) between two Points\n" "- Select the 2 Points and\n" "Click this button\n" " ", None)) self.button_isDistance.setText(_translate("Form", "Distance ?", None)) - self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" -"Area measurement for a Plane or a set of Planes.\n" -"- Select One or several Planes and\n" -"Click this button", None)) - self.button_isArea.setText(_translate("Form", "Area ?", None)) self.button_isCoplanar.setToolTip(_translate("Form", "Check if two faces or two Edges are Coplanar:\n" "- Select the 2 faces/planes or 2 Edges/Lines and\n" "Click this button\n" "\n" "NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) self.button_isCoplanar.setText(_translate("Form", "are Coplanar ?", None)) + self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" +"Area measurement for a Plane or a set of Planes.\n" +"- Select One or several Planes and\n" +"- Then click this button", None)) + self.button_isArea.setText(_translate("Form", "Area ?", None)) + self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) self.button_isClearance.setToolTip(_translate("Form", "Check for two Objects Clearance distance:\n" "Quick measurements between parallel faces and similarly placed objects\n" "- Select the 2 Objects and\n" "Click this button", None)) self.button_isClearance.setText(_translate("Form", "Distance Clearance ?", None)) + self.button_isRadius.setToolTip(_translate("Form", "Check for Radius:\n" +"Radius measurement for a Circle or an Arc.\n" +"- Select One Circle or Arc\n" +"- Then click this button", None)) + self.button_isRadius.setText(_translate("Form", "Radius ?", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_24), _translate("Form", "Check", None)) self.button_WF_quit.setText(_translate("Form", "Close", None)) self.label_release.setText(_translate("Form", "2015", None)) diff --git a/WorkFeature/Ui/WFGui_2015.ui b/WorkFeature/Ui/WFGui_2015.ui index f3f6d99..80abcad 100644 --- a/WorkFeature/Ui/WFGui_2015.ui +++ b/WorkFeature/Ui/WFGui_2015.ui @@ -57,7 +57,7 @@ <enum>QTabWidget::West</enum> </property> <property name="currentIndex"> - <number>4</number> + <number>0</number> </property> <widget class="QWidget" name="Origin_Tab_2"> <attribute name="icon"> @@ -1745,7 +1745,8 @@ Extend an Axis at two extrema. - Second push this button NB: - - The percentage of the extension can be defined first.</string> + - The percentage of the extension can be defined first. + - Negative percentage will shrink the Axis</string> </property> <property name="text"> <string>Enlarge(Axis)</string> @@ -1908,7 +1909,7 @@ Then click on this button.</string> </property> <widget class="QWidget" name="tab_14"> <attribute name="title"> - <string>2D</string> + <string>Parametric 2D</string> </attribute> <layout class="QGridLayout" name="gridLayout_75"> <item row="0" column="0"> @@ -2514,7 +2515,7 @@ To save your curve you need to go to "Edit".</string> </widget> <widget class="QWidget" name="tab_15"> <attribute name="title"> - <string>3D</string> + <string>Parametric 3D</string> </attribute> <layout class="QGridLayout" name="gridLayout_80"> <item row="0" column="0"> @@ -3412,7 +3413,7 @@ Then click on this button.</string> <attribute name="title"> <string>Sweeping</string> </attribute> - <layout class="QGridLayout" name="gridLayout_85"> + <layout class="QGridLayout" name="gridLayout_6"> <item row="0" column="0"> <widget class="QFrame" name="frame_9"> <property name="frameShape"> @@ -3560,7 +3561,7 @@ NB: You can change first: </layout> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <spacer name="verticalSpacer_25"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -3573,6 +3574,32 @@ NB: You can change first: </property> </spacer> </item> + <item row="1" column="0"> + <widget class="QPushButton" name="button_beam"> + <property name="toolTip"> + <string>Beam: +Will extrude a Section along a Linear Trajectory. +- Select first one Section wire (Closed wire will generate volumes by default) +(This Section can be a compound from sketch to realize "tube") +- Select one or several wire(s) as Trajectory(ies) +- Then push this button +</string> + </property> + <property name="text"> + <string>Beam</string> + </property> + <property name="icon"> + <iconset> + <normaloff>../Icons/WF_Beam.svg</normaloff>../Icons/WF_Beam.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + </widget> + </item> </layout> </widget> <widget class="QWidget" name="Plane_Tab1_3"> @@ -4762,6 +4789,29 @@ NB: </layout> </item> <item row="8" column="0"> + <widget class="QPushButton" name="button_copy_objects"> + <property name="toolTip"> + <string>Duplicate: +Make a copy of an object or a selected subObject part: +- Select one or several object(s) or subobject(s) +- Then push this button</string> + </property> + <property name="text"> + <string>Duplicate</string> + </property> + <property name="icon"> + <iconset> + <normaloff>../Icons/WF_objectCopy.svg</normaloff>../Icons/WF_objectCopy.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + </widget> + </item> + <item row="9" column="0"> <widget class="QPushButton" name="button_common"> <property name="toolTip"> <string>Compute the common parts between selected shapes. @@ -4788,7 +4838,7 @@ Original code from HighlightCommon.FCMacro </property> </widget> </item> - <item row="9" column="0"> + <item row="10" column="0"> <widget class="QPushButton" name="button_difference"> <property name="toolTip"> <string>Compute the difference parts between selected shapes. @@ -4814,7 +4864,7 @@ Original code from HighlightDifference.FCMacro </property> </widget> </item> - <item row="10" column="0"> + <item row="11" column="0"> <spacer name="verticalSpacer_28"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -6633,19 +6683,6 @@ ReClick with same selection, will reverse the direction.</string> </attribute> <layout class="QGridLayout" name="gridLayout_125"> <item row="9" column="0"> - <spacer name="verticalSpacer_34"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="8" column="0"> <widget class="QPushButton" name="button_isView"> <property name="toolTip"> <string>Detect the position of the camera. @@ -6667,6 +6704,19 @@ by the function getCameraOrientation().</string> </property> </widget> </item> + <item row="10" column="0"> + <spacer name="verticalSpacer_34"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> <item row="0" column="0"> <widget class="QPushButton" name="button_isParallel"> <property name="toolTip"> @@ -6747,30 +6797,6 @@ Click this button </property> </widget> </item> - <item row="1" column="0"> - <widget class="QPushButton" name="button_isPerpendicular"> - <property name="toolTip"> - <string>Check if two faces or two Edges are Perpendicular: -- Select the 2 faces/planes or 2 Edges/Lines and -Click this button - -NB: You can change the tolerance in "Ori. Pref." TAB</string> - </property> - <property name="text"> - <string>are Perpendicular ?</string> - </property> - <property name="icon"> - <iconset> - <normaloff>../Icons/WF_isPerpendicular.svg</normaloff>../Icons/WF_isPerpendicular.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - </widget> - </item> <item row="5" column="0"> <widget class="QPushButton" name="button_isDistance"> <property name="toolTip"> @@ -6795,29 +6821,6 @@ Click this button </property> </widget> </item> - <item row="7" column="0"> - <widget class="QPushButton" name="button_isArea"> - <property name="toolTip"> - <string>Check for surface Area: -Area measurement for a Plane or a set of Planes. -- Select One or several Planes and -Click this button</string> - </property> - <property name="text"> - <string>Area ?</string> - </property> - <property name="icon"> - <iconset> - <normaloff>../Icons/WF_isArea.svg</normaloff>../Icons/WF_isArea.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - </widget> - </item> <item row="2" column="0"> <widget class="QPushButton" name="button_isCoplanar"> <property name="toolTip"> @@ -6842,6 +6845,53 @@ NB: You can change the tolerance in "Ori. Pref." TAB</string> </property> </widget> </item> + <item row="7" column="0"> + <widget class="QPushButton" name="button_isArea"> + <property name="toolTip"> + <string>Check for surface Area: +Area measurement for a Plane or a set of Planes. +- Select One or several Planes and +- Then click this button</string> + </property> + <property name="text"> + <string>Area ?</string> + </property> + <property name="icon"> + <iconset> + <normaloff>../Icons/WF_isArea.svg</normaloff>../Icons/WF_isArea.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QPushButton" name="button_isPerpendicular"> + <property name="toolTip"> + <string>Check if two faces or two Edges are Perpendicular: +- Select the 2 faces/planes or 2 Edges/Lines and +Click this button + +NB: You can change the tolerance in "Ori. Pref." TAB</string> + </property> + <property name="text"> + <string>are Perpendicular ?</string> + </property> + <property name="icon"> + <iconset> + <normaloff>../Icons/WF_isPerpendicular.svg</normaloff>../Icons/WF_isPerpendicular.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + </widget> + </item> <item row="3" column="0"> <widget class="QPushButton" name="button_isClearance"> <property name="toolTip"> @@ -6865,6 +6915,29 @@ Click this button</string> </property> </widget> </item> + <item row="8" column="0"> + <widget class="QPushButton" name="button_isRadius"> + <property name="toolTip"> + <string>Check for Radius: +Radius measurement for a Circle or an Arc. +- Select One Circle or Arc +- Then click this button</string> + </property> + <property name="text"> + <string>Radius ?</string> + </property> + <property name="icon"> + <iconset> + <normaloff>../Icons/WF_isRadius.svg</normaloff>../Icons/WF_isRadius.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + </widget> + </item> </layout> </widget> </widget> diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py index 13fb09c..075986e 100644 --- a/WorkFeature/WFGui_2015.py +++ b/WorkFeature/WFGui_2015.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sat Nov 7 20:09:36 2015 -# by: PySide UI code generator 4.11.2 +# Created: Sun Dec 13 18:49:39 2015 +# by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -636,7 +636,7 @@ class Ui_Form(object): self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2")) self.scrollAreaWidgetContents_5 = QtGui.QWidget() - self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 259, 650)) + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 245, 648)) self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) @@ -1169,8 +1169,8 @@ class Ui_Form(object): self.tabWidget_7.addTab(self.tab_16, icon45, _fromUtf8("")) self.tab_17 = QtGui.QWidget() self.tab_17.setObjectName(_fromUtf8("tab_17")) - self.gridLayout_85 = QtGui.QGridLayout(self.tab_17) - self.gridLayout_85.setObjectName(_fromUtf8("gridLayout_85")) + self.gridLayout_6 = QtGui.QGridLayout(self.tab_17) + self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) self.frame_9 = QtGui.QFrame(self.tab_17) self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel) self.frame_9.setFrameShadow(QtGui.QFrame.Raised) @@ -1209,11 +1209,16 @@ class Ui_Form(object): self.button_sweep.setIconSize(QtCore.QSize(32, 32)) self.button_sweep.setObjectName(_fromUtf8("button_sweep")) self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1) - self.gridLayout_85.addWidget(self.frame_9, 0, 0, 1, 1) + self.gridLayout_6.addWidget(self.frame_9, 0, 0, 1, 1) spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_85.addItem(spacerItem11, 1, 0, 1, 1) + self.gridLayout_6.addItem(spacerItem11, 2, 0, 1, 1) + self.button_beam = QtGui.QPushButton(self.tab_17) icon47 = QtGui.QIcon() icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon47) + self.button_beam.setIconSize(QtCore.QSize(32, 32)) + self.button_beam.setObjectName(_fromUtf8("button_beam")) + self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1) self.tabWidget_7.addTab(self.tab_17, icon47, _fromUtf8("")) self.Plane_Tab1_3 = QtGui.QWidget() self.Plane_Tab1_3.setObjectName(_fromUtf8("Plane_Tab1_3")) @@ -1618,25 +1623,32 @@ class Ui_Form(object): self.angle_revolve.setObjectName(_fromUtf8("angle_revolve")) self.horizontalLayout_76.addWidget(self.angle_revolve) self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) - self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2) icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon67) + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon67) + self.button_copy_objects.setIconSize(QtCore.QSize(32, 32)) + self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects")) + self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1) + self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon68) self.button_common.setIconSize(QtCore.QSize(32, 32)) self.button_common.setObjectName(_fromUtf8("button_common")) - self.gridLayout_5.addWidget(self.button_common, 8, 0, 1, 1) + self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1) self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) - icon68 = QtGui.QIcon() - icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon68) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon69) self.button_difference.setIconSize(QtCore.QSize(32, 32)) self.button_difference.setObjectName(_fromUtf8("button_difference")) - self.gridLayout_5.addWidget(self.button_difference, 9, 0, 1, 1) + self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1) spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_5.addItem(spacerItem14, 10, 0, 1, 1) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Objects_Tab2_2, icon69, _fromUtf8("")) + self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon70, _fromUtf8("")) self.Modif_Tab_2 = QtGui.QWidget() self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2")) self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2) @@ -1654,9 +1666,9 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) self.button_alignface2view.setSizePolicy(sizePolicy) self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon70) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon71) self.button_alignface2view.setIconSize(QtCore.QSize(32, 32)) self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view")) self.gridLayout_95.addWidget(self.button_alignface2view, 0, 0, 1, 1) @@ -1664,9 +1676,9 @@ class Ui_Form(object): self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78")) self.button_align_faces = QtGui.QPushButton(self.align_tab_2) self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215)) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon71) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon72) self.button_align_faces.setIconSize(QtCore.QSize(32, 32)) self.button_align_faces.setObjectName(_fromUtf8("button_align_faces")) self.horizontalLayout_78.addWidget(self.button_align_faces) @@ -1685,9 +1697,9 @@ class Ui_Form(object): self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79")) self.button_align_edges = QtGui.QPushButton(self.align_tab_2) self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215)) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon72) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon73) self.button_align_edges.setIconSize(QtCore.QSize(32, 32)) self.button_align_edges.setObjectName(_fromUtf8("button_align_edges")) self.horizontalLayout_79.addWidget(self.button_align_edges) @@ -1705,16 +1717,16 @@ class Ui_Form(object): spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_95.addItem(spacerItem15, 5, 0, 1, 1) self.button_joint_points = QtGui.QPushButton(self.align_tab_2) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon73) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon74) self.button_joint_points.setIconSize(QtCore.QSize(32, 32)) self.button_joint_points.setObjectName(_fromUtf8("button_joint_points")) self.gridLayout_95.addWidget(self.button_joint_points, 3, 0, 1, 1) self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon74) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon75) self.button_joint_faces.setIconSize(QtCore.QSize(32, 32)) self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces")) self.gridLayout_95.addWidget(self.button_joint_faces, 4, 0, 1, 1) @@ -1884,9 +1896,9 @@ class Ui_Form(object): self.ObjRot_button_select_axis.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_axis.setObjectName(_fromUtf8("ObjRot_button_select_axis")) self.gridLayout_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_18, icon75, _fromUtf8("")) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon76, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -1913,9 +1925,9 @@ class Ui_Form(object): self.ObjRot_button_select_center.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_center.setObjectName(_fromUtf8("ObjRot_button_select_center")) self.gridLayout_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_19, icon76, _fromUtf8("")) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon77, _fromUtf8("")) self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1) self.groupBox_21 = QtGui.QGroupBox(self.frame_11) self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67)) @@ -1951,9 +1963,9 @@ class Ui_Form(object): self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle")) self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_11.addTab(self.tab_21, icon77, _fromUtf8("")) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon78, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -2102,9 +2114,9 @@ class Ui_Form(object): self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1) self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1) self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_22, icon78, _fromUtf8("")) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon79, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2179,9 +2191,9 @@ class Ui_Form(object): self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1) self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1) self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_23, icon79, _fromUtf8("")) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon80, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2215,65 +2227,58 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) self.button_alignview.setSizePolicy(sizePolicy) self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon80 = QtGui.QIcon() - icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon80) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon81) self.button_alignview.setIconSize(QtCore.QSize(32, 32)) self.button_alignview.setObjectName(_fromUtf8("button_alignview")) self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1) spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_124.addItem(spacerItem22, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon81 = QtGui.QIcon() - icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon81) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon82) self.button_trackcamera.setIconSize(QtCore.QSize(32, 32)) self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera")) self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.View_Tab_2, icon82, _fromUtf8("")) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon83, _fromUtf8("")) self.tab_24 = QtGui.QWidget() self.tab_24.setObjectName(_fromUtf8("tab_24")) self.gridLayout_125 = QtGui.QGridLayout(self.tab_24) self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125")) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem23, 9, 0, 1, 1) self.button_isView = QtGui.QPushButton(self.tab_24) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon83) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon84) self.button_isView.setIconSize(QtCore.QSize(32, 32)) self.button_isView.setObjectName(_fromUtf8("button_isView")) - self.gridLayout_125.addWidget(self.button_isView, 8, 0, 1, 1) + self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem23, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon84) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon85) self.button_isParallel.setIconSize(QtCore.QSize(32, 32)) self.button_isParallel.setObjectName(_fromUtf8("button_isParallel")) self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1) self.button_isAngle = QtGui.QPushButton(self.tab_24) - icon85 = QtGui.QIcon() - icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon85) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon86) self.button_isAngle.setIconSize(QtCore.QSize(32, 32)) self.button_isAngle.setObjectName(_fromUtf8("button_isAngle")) self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1) self.button_isLength = QtGui.QPushButton(self.tab_24) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon86) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon87) self.button_isLength.setIconSize(QtCore.QSize(32, 32)) self.button_isLength.setObjectName(_fromUtf8("button_isLength")) self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1) - self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon87) - self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) - self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) - self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) self.button_isDistance = QtGui.QPushButton(self.tab_24) icon88 = QtGui.QIcon() icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) @@ -2281,30 +2286,44 @@ class Ui_Form(object): self.button_isDistance.setIconSize(QtCore.QSize(32, 32)) self.button_isDistance.setObjectName(_fromUtf8("button_isDistance")) self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1) - self.button_isArea = QtGui.QPushButton(self.tab_24) - icon89 = QtGui.QIcon() - icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon89) - self.button_isArea.setIconSize(QtCore.QSize(32, 32)) - self.button_isArea.setObjectName(_fromUtf8("button_isArea")) - self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) self.button_isCoplanar = QtGui.QPushButton(self.tab_24) - icon90 = QtGui.QIcon() - icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon90) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon89) self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32)) self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar")) self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1) - self.button_isClearance = QtGui.QPushButton(self.tab_24) + self.button_isArea = QtGui.QPushButton(self.tab_24) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon90) + self.button_isArea.setIconSize(QtCore.QSize(32, 32)) + self.button_isArea.setObjectName(_fromUtf8("button_isArea")) + self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) + self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) icon91 = QtGui.QIcon() - icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon91) + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon91) + self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) + self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) + self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) + self.button_isClearance = QtGui.QPushButton(self.tab_24) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon92) self.button_isClearance.setIconSize(QtCore.QSize(32, 32)) self.button_isClearance.setObjectName(_fromUtf8("button_isClearance")) self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1) - icon92 = QtGui.QIcon() - icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.tab_24, icon92, _fromUtf8("")) + self.button_isRadius = QtGui.QPushButton(self.tab_24) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon93) + self.button_isRadius.setIconSize(QtCore.QSize(32, 32)) + self.button_isRadius.setObjectName(_fromUtf8("button_isRadius")) + self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon94, _fromUtf8("")) self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1) @@ -2321,7 +2340,7 @@ class Ui_Form(object): self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1) self.retranslateUi(Form) - self.tabWidget_7.setCurrentIndex(4) + self.tabWidget_7.setCurrentIndex(7) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) self.transition_comboBox.setCurrentIndex(2) @@ -2637,7 +2656,8 @@ class Ui_Form(object): "- Second push this button\n" "\n" "NB: \n" -" - The percentage of the extension can be defined first.", None)) +" - The percentage of the extension can be defined first.\n" +" - Negative percentage will shrink the Axis", None)) self.button_extension_axis.setText(_translate("Form", "Enlarge(Axis)", None)) self.extension_axis.setToolTip(_translate("Form", "Extension of the Line in percentage of original length of the Line.\n" "If the extension is 50% it means that each side is extended with 25% length.\n" @@ -2696,7 +2716,7 @@ class Ui_Form(object): self.ParCurve_button_store_2.setText(_translate("Form", "Store", None)) self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None)) self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None)) - self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "2D", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "Parametric 2D", None)) self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None)) self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" "save your custom curves.", None)) @@ -2734,7 +2754,7 @@ class Ui_Form(object): self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) - self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "3D", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) self.button_linecenter_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" "centered on the Point, perpendicular to the Axis \n" @@ -2807,6 +2827,14 @@ class Ui_Form(object): "# 0 (default), 1 (right corners) or 2 (rounded corners).)\n" "", None)) self.button_sweep.setText(_translate("Form", "Section Sweep", None)) + self.button_beam.setToolTip(_translate("Form", "Beam:\n" +"Will extrude a Section along a Linear Trajectory.\n" +"- Select first one Section wire (Closed wire will generate volumes by default)\n" +"(This Section can be a compound from sketch to realize \"tube\")\n" +"- Select one or several wire(s) as Trajectory(ies)\n" +"- Then push this button\n" +"", None)) + self.button_beam.setText(_translate("Form", "Beam", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweeping", None)) self.button_click_for_plane.setToolTip(_translate("Form", "Click:\n" "Create a rectangular Plane perpendicular to the view at location of one mouse click.\n" @@ -2994,6 +3022,11 @@ class Ui_Form(object): self.button_revolve.setText(_translate("Form", "Revolve", None)) self.angle_revolve.setToolTip(_translate("Form", "Angle of the revolution in degrees.", None)) self.angle_revolve.setText(_translate("Form", "360", None)) + self.button_copy_objects.setToolTip(_translate("Form", "Duplicate:\n" +"Make a copy of an object or a selected subObject part:\n" +"- Select one or several object(s) or subobject(s)\n" +"- Then push this button", None)) + self.button_copy_objects.setText(_translate("Form", "Duplicate", None)) self.button_common.setToolTip(_translate("Form", "Compute the common parts between selected shapes.\n" "- Select at least two objects and click.\n" "\n" @@ -3287,34 +3320,39 @@ class Ui_Form(object): "Click this button\n" " ", None)) self.button_isLength.setText(_translate("Form", "Length ?", None)) - self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" -"- Select the 2 faces/planes or 2 Edges/Lines and\n" -"Click this button\n" -"\n" -"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) - self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) self.button_isDistance.setToolTip(_translate("Form", "Check for two Points distance:\n" "Distances measurement and Delta values (on main Axes) between two Points\n" "- Select the 2 Points and\n" "Click this button\n" " ", None)) self.button_isDistance.setText(_translate("Form", "Distance ?", None)) - self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" -"Area measurement for a Plane or a set of Planes.\n" -"- Select One or several Planes and\n" -"Click this button", None)) - self.button_isArea.setText(_translate("Form", "Area ?", None)) self.button_isCoplanar.setToolTip(_translate("Form", "Check if two faces or two Edges are Coplanar:\n" "- Select the 2 faces/planes or 2 Edges/Lines and\n" "Click this button\n" "\n" "NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) self.button_isCoplanar.setText(_translate("Form", "are Coplanar ?", None)) + self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" +"Area measurement for a Plane or a set of Planes.\n" +"- Select One or several Planes and\n" +"- Then click this button", None)) + self.button_isArea.setText(_translate("Form", "Area ?", None)) + self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) self.button_isClearance.setToolTip(_translate("Form", "Check for two Objects Clearance distance:\n" "Quick measurements between parallel faces and similarly placed objects\n" "- Select the 2 Objects and\n" "Click this button", None)) self.button_isClearance.setText(_translate("Form", "Distance Clearance ?", None)) + self.button_isRadius.setToolTip(_translate("Form", "Check for Radius:\n" +"Radius measurement for a Circle or an Arc.\n" +"- Select One Circle or Arc\n" +"- Then click this button", None)) + self.button_isRadius.setText(_translate("Form", "Radius ?", None)) self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_24), _translate("Form", "Check", None)) self.button_WF_quit.setText(_translate("Form", "Close", None)) self.label_release.setText(_translate("Form", "2015", None)) diff --git a/WorkFeature/WF_2015.py b/WorkFeature/WF_2015.py index 1f9d8a1..3689398 100644 --- a/WorkFeature/WF_2015.py +++ b/WorkFeature/WF_2015.py @@ -14,6 +14,7 @@ * - Ulrich Brammer for Geodesic dome code * * - Wmayer Many Thanks for active help on testing and debbuging * * - Gaƫl Ecorchard for HighlightDifference Macro * +* - lorenz_l for Beam tool Macro * * Special thanks to Mario52 for diverse MACRO codes as FCCamera, * * cutCircle, cutWire, Delta xyz, bounding box ... * * and other diverse pieces of codes * @@ -54,7 +55,7 @@ # First two lines to be able to launch with python import sys from WorkFeature import WF_ObjParCurve_2015 -# change this by your own FreeCAD lib path import FreeCAD +# Change this by your own FreeCAD lib path to import FreeCAD if not sys.path.__contains__("/usr/lib/freecad/lib"): sys.path.append("/usr/lib/freecad/lib") @@ -64,7 +65,7 @@ from WF_Utils_2015 import * from WF_ObjParCurve_2015 import * global myRelease -myRelease = "2015_11_08" +myRelease = "2015_12_16" import os.path import time @@ -380,7 +381,7 @@ def get_typefromSelection(objectType="Edge", info=0): if info != 0: print("SubObject = " + str(SubObject)) print("SubObject.ShapeType = " + str(SubObject.ShapeType)) - if SubObject.ShapeType == "Edge": + if SubObject.ShapeType == objectType: m_found = True break if m_found: @@ -444,7 +445,6 @@ def get_InfoObjects(info=0, printError=True): ", m_objNames=" + str(m_objNames)) return m_num, m_selEx, m_objs, m_objNames - def reset_SelectedObjects(Selection, info=0): """ Reset the selection changed by Draft.rotate for example Selection is the original selection you want to reset. Must be saved before any @@ -515,7 +515,6 @@ def get_SelectedObjectsWithParent(info=0, printError=True): printError_msg("No active document !") return - def get_SelectedObjects(info=0, printError=True): """ Return selected objects as Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes, @@ -717,7 +716,6 @@ def getEdgeType(edge): except: return "Unknown" - def getShapeType(subObject): try: if isinstance(subObject,Part.Edge): @@ -733,9 +731,8 @@ def getShapeType(subObject): except: return "Unknown" - def definePropOfActiveObj(): - Gui.activeDocument().activeObject().LineColor = (red, green, blue) + Gui.activeDocument().activeObject().LineColor = (1.00,0.67,0.00) Gui.activeDocument().activeObject().ShapeColor = (0.33,1.00,1.00) Gui.activeDocument().activeObject().Transparency = (50) @@ -747,7 +744,6 @@ def addObjectToGrp(obj,grp,info=0): if info != 0: print_msg("Object " + str(m_obj) + " added to Group : " + str(m_grp)) - def addObjectToGrp2(obj,grp,info=0): m_obj = obj m_grp = grp @@ -911,6 +907,7 @@ def minMaxObjectsLimits(objs,info=0): return xmax, xmin, ymax, ymin, zmax, zmin + def baseObjectPoint(obj,info=0): """ Return the base point of selected Object. """ @@ -921,7 +918,6 @@ def baseObjectPoint(obj,info=0): print_point(base,"Base of object selected is :") return base - def meanVectorsPoint(vertx,info=0): """ Return the mean point of all selected Vectors. """ @@ -955,7 +951,6 @@ def meanVectorsPoint(vertx,info=0): print_point(mean,"Mean of all vectors selected is : ") return mean - def centerBBVectorsPoint(vertx,info=0): """ Return the center point of the bounding box of all selected Vectors. """ @@ -1037,7 +1032,6 @@ def distanceBetween(A, B): except Part.OCCError: return 0.0 - def angleBetween(e1, e2): """ Return the angle (in degrees) between 2 edges. """ @@ -1636,7 +1630,6 @@ def attachPoint(*argc): if msg != 0: print_msg("argc is " + str(*argc) + " and Attach point " + str(m_attach_point) + " selected !") - def intersecPlanePlane(Plane_Normal1, Plane_Point1, Plane_Normal2, Plane_Point2, info=0): """ Return the intersection Line between two Planes. """ @@ -2047,6 +2040,9 @@ def plot_sweep(traj, section, makeSolid=True, isFrenet=True, transition=2 , part def bounding_box(grp,ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,createVol=False,info=0): """ Create a bounding box. """ + global verbose + msg=verbose + m_grp = grp m_l_X = length_X m_l_Y = length_Y @@ -6672,10 +6668,10 @@ def plot_boundingBoxes(): m_grp=m_actDoc.getObject( str(m_dir) ) # Create a solid out of the shells of a shape try: - m_s = m_obj.Shape + m_s = m_obj.Shape except: - printError_msg( "This object has no attribute 'Shape' !\nSelect another one !\n") - break + printError_msg( "This object has no attribute 'Shape' !\nSelect another one !\n") + break # Get a boundBox A bounding box is an orthographic cube which is a way to describe outer boundaries m_boundBox = m_s.BoundBox if msg != 0: @@ -7727,7 +7723,7 @@ def plot_sectionSweep(): "INCORRECT Object(s) Selection :\n" +\ "First select the wire you want as section for Section Sweep (must be closed for solid creation!)\n" +\ "Then select the second wire for the trajectory of the Sweep !" - result_msg = " : Section Sweep created !" + result_msg = " : Section Sweep created into WorkFeatures/WorkObjects!" name = "SectionSweep" part = "Part::Feature" @@ -7909,7 +7905,54 @@ def plot_sectionSweep(): except: printError_msg(error_msg) + + +def plot_sectionBeam(): + """Section Beam: + """ + import WorkFeature.Beam.beam as BM + msg=verbose + msg=1 + createFolders('WorkObjects') + error_msg =\ + "INCORRECT Object(s) Selection :\n" +\ + "First select the wire you want as section for Section Beam \n" +\ + "Then select the second wire for the strait path trajectory of the Beam !" + result_msg = " : Section Beam created into WorkFeatures/WorkObjects!" + name = "Beam" + part = "Part::FeaturePython" + + m_actDoc=App.activeDocument() + if m_actDoc.Name: + m_sel = Gui.Selection.getSelection(m_actDoc.Name) + m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name) + else: + return + + try: + m_profile = m_sel[0] + if msg != 0: + print_msg("m_profile !" + str(m_profile)) + print_msg("m_selEx !" + str(m_selEx)) + for m_path_selected in m_selEx[1:]: + m_path = m_path_selected.Object + #m_path_name = m_path_selected.SubElementNames[0] + for m_path_name in m_path_selected.SubElementNames: + if msg != 0: + print_msg("m_path !" + str(m_path)) + print_msg("m_path_name !" + str(m_path_name)) + m_beam = App.ActiveDocument.addObject(part,name) + BM.Beam(m_beam, m_profile, m_path, m_path_name) + BM.ViewProviderBeam(m_beam.ViewObject) + App.ActiveDocument.getObject( 'WorkObjects' ).addObject(m_beam) + + App.ActiveDocument.recompute() + print_msg(m_beam.Label + str(result_msg)) + except: + printError_msg(error_msg) + + def plot_sectionSweep2(): """ Beam Sweep: @@ -9306,6 +9349,7 @@ def line_length(): msg=verbose error_msg = "INCORRECT Object(s) Selection :\n\nYou Must Select One Line !" + m_length = None Selection = get_SelectedObjects(info=msg, printError=False) try: @@ -9337,24 +9381,73 @@ def line_length(): if msg!=0: print_msg("Distance is : " + str(m_dist)) + if hasattr(edge, 'Length'): + m_length = edge.Length + msg=\ "Begin : X1 "+str(pos_X1)+" Y1: "+str(pos_Y1)+" Z1: "+str(pos_Z1)+"\n\n" +\ "End : X2 "+str(pos_X2)+" Y2: "+str(pos_Y2)+" Z2: "+str(pos_Z2)+"\n\n" +\ "Delta X : "+str(abs(pos_X1-pos_X2))+"\n" +\ "Delta Y : "+str(abs(pos_Y1-pos_Y2))+"\n" +\ "Delta Z : "+str(abs(pos_Z1-pos_Z2))+"\n\n" +\ - "Distance : " + str(m_dist) + "Distance : " + str(m_dist)+"\n\n" + + if m_length: + msg+="Length along edge/arc : " + str(m_length) + print_gui_msg(msg) except: printError_msg(error_msg) + +def object_radius(): + """ + Check for Radius: + + """ + msg=verbose + error_msg = "INCORRECT Object(s) Selection :\n\nYou Must Select One Arc!" + + Selection = Gui.Selection.getSelectionEx() + + try: + result = "Radius :" + m_found = False + for m_sel in Selection: + m_name = m_sel.ObjectName + if hasattr(m_sel, 'SubObjects'): + for m_sub,m_sub_name in zip(m_sel.SubObjects,m_sel.SubElementNames): + if hasattr(m_sub, 'Curve'): + r = m_sub.Curve + if hasattr(r, 'Radius'): + m_radius = r.Radius + result += "\nObject : " + str(m_name) + "." + str(m_sub_name) + result += "\nRadius is " + str(m_radius) + m_found = True + else: + if hasattr(m_sel, 'Curve'): + r = m_sel.Curve + if hasattr(r, 'Radius'): + m_radius = r.Radius + result += "\nObject : " + str(m_name) + result += "\nRadius is " + str(m_radius) + m_found = True + + if m_found: + print_gui_msg(result) + else : + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def plane_area(): """ Check for surface Area: Area measurement for a Plane or a set of Planes. - - Select One or several Planes and + - Select One or several Face(s) """ msg=verbose @@ -9745,6 +9838,82 @@ def angleAlignFaces(value): except ValueError: printError_msg("Angle must be valid number !") + +def object_copy(): + """ + Duplicate: + Make a copy of an object or a selected subObject part: + - Select one or several object(s) or subobject(s) + + Original code from Macro_ReproWire + Authors = 2015 Mario52 + """ + msg=verbose + msg=1 + + error_msg = "INCORRECT Object(s) Selection :\n\nYou Must Select at least one Object !" + + sel = Gui.Selection.getSelection() + s = Gui.Selection.getSelectionEx() + + try: + if len(sel) != 0: +# print "Object(s) : ", len(sel), " , SubObject(s) : ", len(s) + i2 = ii2 = -1 + for i in s: + i2 += 1 + ii2 = -1 + try: + FreeCADGui.Selection.getSelectionEx()[i2].SubObjects[ii2] + for ii in i.SubElementNames: +# print "SubObject" + ii2 += 1 + # create repro shape subObject + Part.show(FreeCADGui.Selection.getSelectionEx()[i2].SubObjects[ii2].copy()) + # display the info SubObject + print i2+1 ,"/", ii2+1 ,"/", len(s) ," ", i.ObjectName ," ", ii + + a = App.ActiveDocument.ActiveObject + # Label for the repro shape + # object Name / original object Name / SubObject Name + a.Label = a.Name + " " + i.ObjectName + " " + ii + try: + # give LineColor + FreeCADGui.activeDocument().activeObject().LineColor = (1.0,0.0,0.0) + # give PointColor + FreeCADGui.activeDocument().activeObject().PointColor = (1.0,0.0,0.0) + # give ShapeColor + FreeCADGui.activeDocument().activeObject().ShapeColor = (1.0,0.0,0.0) + + except Exception: + None + except Exception: +# print "Not SubObject" + # create repro shape object + Part.show(sel[i2].Shape) + # display the info SubObject + print i2+1 ,"/", ii2+1 ,"/", len(s) ," ", sel[i2].Name + + a = App.ActiveDocument.ActiveObject + # Label for the repro shape + # object Name / original object Name + a.Label =a.Name + " " + sel[i2].Name + + try: + # give LineColor + FreeCADGui.activeDocument().activeObject().LineColor = (1.0,0.0,0.0) + # give PointColor + FreeCADGui.activeDocument().activeObject().PointColor = (1.0,0.0,0.0) + # give ShapeColor + FreeCADGui.activeDocument().activeObject().ShapeColor = (1.0,0.0,0.0) + + except Exception: + None + else : + printError_msg(error_msg) + pass + except: + printError_msg(error_msg) def object_alignFaces(): """ @@ -10247,7 +10416,9 @@ class WorkFeatureTab(): "button_revolve" : "plot_revolution", "button_common" : "object_common", "button_difference" : "object_difference", + "button_copy_objects" : "object_copy", "button_sweep" : "plot_sectionSweep", + "button_beam" : "plot_sectionBeam", "button_alignview" : "view_align", "button_trackcamera" : "view_trackCamera", @@ -10265,6 +10436,7 @@ class WorkFeatureTab(): "button_isAngle" : "object_angle", "button_isDistance" : "points_distance", "button_isLength" : "line_length", + "button_isRadius" : "object_radius", "button_isArea" : "plane_area", "button_isView" : "camera_orientation", diff --git a/WorkFeature/WF_ObjParCurve_2015.py b/WorkFeature/WF_ObjParCurve_2015.py index f8a8e84..51592f5 100644 --- a/WorkFeature/WF_ObjParCurve_2015.py +++ b/WorkFeature/WF_ObjParCurve_2015.py @@ -94,7 +94,7 @@ class Parametric(): self.updateOptions() - def plot_matriz(self, matriz): + def plot_matriz_old(self, matriz): """ Plot the dataset with different options. """ if self.debug != 0: @@ -116,7 +116,44 @@ class Parametric(): Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) FreeCAD.ActiveDocument.recompute() - + def plot_matriz(self, matriz): + """ Plot the dataset with different options. + """ + if self.debug != 0: + print self.plot_matriz.__name__ + + doc = FreeCAD.ActiveDocument + if doc == None: + doc = FreeCAD.newDocument() + + if self.points == True: + for point in matriz: + a = Draft.makePoint(point) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_Point_"+str(self.name.text()) + else: + curva = Part.makePolygon(matriz) + if self.bspline == True: + a = Draft.makeBSpline(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_BSpline_"+str(self.name.text()) + if self.bezier == True: + a = Draft.makeBezCurve(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_BezCurve_"+str(self.name.text()) + if self.poly == True: + a = Draft.makeWire(curva,closed=self.close,face=False) + FreeCAD.ActiveDocument.ActiveObject.Label = str(a.Name)+"_Wire_"+str(self.name.text()) +# if self.arcs == True: +# s=Part.BSplineCurve() +# s.interpolate(matriz, True) +# s.buildFromPoles(matriz) +# #Part.show(s.toShape()) +# arcs=s.toBiArcs(0.1) +# wire=Part.Wire([Part.Edge(i) for i in arcs]) +# Part.show(wire) + if self.close == True and self.face == True: + Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) + FreeCAD.ActiveDocument.recompute() + FreeCADGui.ActiveDocument.ActiveView.fitAll() + def edit(self): """ Launch the edit panel curve. """ diff --git a/start_WF.FCMacro b/start_WF.FCMacro index 90f8607..d64f160 100644 --- a/start_WF.FCMacro +++ b/start_WF.FCMacro @@ -2,6 +2,10 @@ import sys import os.path +# Change this by your own FreeCAD lib path to import FreeCAD +if not sys.path.__contains__("/usr/lib/freecad/lib"): + sys.path.append("/usr/lib/freecad/lib") + try: # try import import WorkFeature.WF_2015 as WF