Skip to content
...@@ -21,7 +21,7 @@ Overview ...@@ -21,7 +21,7 @@ Overview
What is Patro ? What is Patro ?
--------------- ---------------
Patro is a Python module which implements pattern drafting for fashion design. Patro is a Python library which implements pattern drafting for fashion design.
Where is the Documentation ? Where is the Documentation ?
---------------------------- ----------------------------
...@@ -31,7 +31,8 @@ The documentation is available on the |PatroHomePage|_. ...@@ -31,7 +31,8 @@ The documentation is available on the |PatroHomePage|_.
What are the main features ? What are the main features ?
---------------------------- ----------------------------
.. include:: features.txt ..
.. include:: features.txt
.. image:: https://raw.github.com/FabriceSalvaire/Patro/master/test/output/pattern-a0.png .. image:: https://raw.github.com/FabriceSalvaire/Patro/master/test/output/pattern-a0.png
:height: 600px :height: 600px
......
...@@ -4,9 +4,14 @@ options="--export-area-page --export-background=white --export-background-opacit ...@@ -4,9 +4,14 @@ options="--export-area-page --export-background=white --export-background-opacit
# --export-width= # --export-width=
height=400 # for i in 1 2; do
# inkscape --export-png=logo-v$i.png ${options} --export-height=${height} svg/logo-v$i.svg
# inkscape --export-png=logo-v$i.png ${options} --export-height=${height} svg/logo-v$i.svg
# done
for i in 1 2; do height=512
inkscape --export-png=logo-v$i.png ${options} --export-height=${height} svg/logo-v$i.svg inkscape --export-png=logo.png ${options} --export-height=${height} svg/logo.svg
inkscape --export-png=logo-v$i.png ${options} --export-height=${height} svg/logo-v$i.svg
for height in 32 64 96 128 256 512; do
inkscape --export-png=logo-${height}.png ${options} --export-height=${height} svg/logo.svg
done done
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="26.458334cm"
height="26.458334cm"
viewBox="0 0 264.58333 264.58334"
version="1.1"
id="svg845"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="logo.svg">
<title
id="title820">Patro logo</title>
<defs
id="defs839" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.78099998"
inkscape:cx="500.00001"
inkscape:cy="500.00001"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="cm"
inkscape:window-width="1920"
inkscape:window-height="1001"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid1392" />
</sodipodi:namedview>
<metadata
id="metadata842">
<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>Patro logo</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Fabrice Salvaire</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</dc:title>
</cc:Agent>
</dc:rights>
<dc:description>Logo of the Patro software</dc:description>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-32.41664)">
<rect
style="opacity:1;vector-effect:none;fill:#ecea83;fill-opacity:0.91385767;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill"
id="rect818"
width="243.41667"
height="243.41664"
x="10.583333"
y="42.999981"
ry="37.041664" />
<path
style="fill:#2d81b5;fill-opacity:0.99076209;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 63.5,93.270813 V 270.54164 H 201.08333 V 143.54165 c -29.10416,0 -38.36457,-48.947919 -33.07291,-75.406253 L 103.1875,58.87498 C 97.895834,74.74998 87.312501,93.270813 63.5,93.270813 Z"
id="path1390"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:#d55353;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 201.08333,270.54164 -26.45833,1e-5 26.45833,-89.95834 z"
id="path5097"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="opacity:1;vector-effect:none;fill:#d55353;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 63.499999,270.54164 10e-7,-92.60416 26.458334,92.60417 -26.458335,-1e-5"
id="path5099"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="opacity:1;vector-effect:none;fill:#d55353;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 111.125,270.54165 18.52083,-92.60417 18.52084,92.60417 z"
id="path5115"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="opacity:1;vector-effect:none;fill:#d55353;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 129.64583,62.843723 127,138.24998 157.42708,66.81248 Z"
id="path5126"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
</svg>
.. -*- Mode: rst -*- .. -*- Mode: rst -*-
.. |Python| replace:: Python .. |ezdxf| replace:: ezdxf
.. _Python: http://python.org .. _ezdxf: https://ezdxf.readthedocs.io/en/latest
.. |PyPI| replace:: PyPI .. |Inkscape| replace:: Inkscape
.. _PyPI: https://pypi.python.org/pypi .. _Inkscape: https://inkscape.org
.. |Matplotlib| replace:: Matplotlib
.. _Matplotlib: https://matplotlib.org
.. |Numpy| replace:: Numpy .. |Numpy| replace:: Numpy
.. _Numpy: http://www.numpy.org .. _Numpy: http://www.numpy.org
.. |PyPI| replace:: PyPI
.. _PyPI: https://pypi.python.org/pypi
.. |Python| replace:: Python
.. _Python: https://python.org
.. |Qt| replace:: Qt
.. _Qt: https://www.qt.io
.. |PyQt| replace:: PyQt
.. _PyQt: https://riverbankcomputing.com/software/pyqt/intro>
.. |Reportlab| replace:: Reportlab
.. _Reportlab: https://www.reportlab.com/opensource
.. |Sphinx| replace:: Sphinx .. |Sphinx| replace:: Sphinx
.. _Sphinx: http://sphinx-doc.org .. _Sphinx: http://sphinx-doc.org
.. |Sympy| replace:: Sympy
.. _Sympy: http://www.sympy.org
.. |Valentina| replace:: Valentina
.. _Valentina: https://bitbucket.org/dismine/valentina
...@@ -187,12 +187,12 @@ html_theme_path = ['themes'] ...@@ -187,12 +187,12 @@ html_theme_path = ['themes']
# The name of an image file (relative to this directory) to place at the top # The name of an image file (relative to this directory) to place at the top
# of the sidebar. # of the sidebar.
html_logo = None html_logo = '_static/logo-64.png'
# The name of an image file (within the static path) to use as favicon of the # The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large. # pixels large.
# html_favicon = None # html_favicon = '_static/logo-64.png'
# Add any paths that contain custom static files (such as style sheets) here, # Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files, # relative to this directory. They are copied after the builtin static files,
...@@ -264,7 +264,7 @@ latex_documents = [ ...@@ -264,7 +264,7 @@ latex_documents = [
# The name of an image file (relative to this directory) to place at the top of # The name of an image file (relative to this directory) to place at the top of
# the title page. # the title page.
latex_logo = None latex_logo = '_static/logo-64.png'
# For "manual" documents, if this is true, then toplevel headings are parts, # For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters. # not chapters.
......
.. include:: abbreviation.txt
.. _design-note-page: .. _design-note-page:
============== ==============
...@@ -26,22 +28,23 @@ Roman and `Seamly2D <https://github.com/FashionFreedom/Seamly2D>`_ looks like a ...@@ -26,22 +28,23 @@ Roman and `Seamly2D <https://github.com/FashionFreedom/Seamly2D>`_ looks like a
seems disconnected with the user community and Susan seems unable to do something excepted making seems disconnected with the user community and Susan seems unable to do something excepted making
noises and complaining about Roman (cf. Seamly2D forum and a lot of nearly empty web site etc.). In noises and complaining about Roman (cf. Seamly2D forum and a lot of nearly empty web site etc.). In
summary, it could be Roman is not the perfect developer boy, but it coded a lot of lines of code and summary, it could be Roman is not the perfect developer boy, but it coded a lot of lines of code and
released an free software parametric pattern making software. Concerning Susan, many things are released a free software parametric pattern making software. Concerning Susan, many things are
unclear on their past relations, what she did / doing, what is her vision, on is ability to unclear on their past relations, what she did / doing, what is her vision, on is ability to
communicate, manage and technical expertise. communicate, manage and technical expertise.
Valentina is coded in C++ and use the Qt framework. Qt is definitely the best choice for a GUI Valentina is coded in C++ and use the Qt framework. Qt is definitely the best choice for a GUI
actually. Notice Valentina uses Qt4 Widgets and Scene Graph, thus it could require a costly upgrade actually. Notice Valentina uses Qt4 Widgets and Scene Graph, thus it could require a costly upgrade
to Qt5 QML (which is a general upgrade issue in computer science). The GUI of Valentina represents to Qt5 QML (which is a common upgrade issue). The GUI of Valentina represents a huge cost, probably
a huge cost, probably the main part of Valentina. the main part of Valentina.
Actually Valentina has some design flaws, which is usual for a young project. Actually Valentina has some design flaws, which is usual for a young project developed with a few
budget.
For example, since Valentina is designed as a kind of WYSIWYG software, we cannot modify a pattern For example, since Valentina is designed as a kind of WYSIWYG software, we cannot modify a pattern
to a temporally inconsistent state. For example Valentina will not accept to have a line defined by to a temporally inconsistent state. For example Valentina will not accept to have a line defined by
point that don't exist anymore. For a computer program, your are free to save something which is point that don't exist anymore. For a computer program, your are free to save something which is
broken and fix things later. However for a GUI parametric modeller this flexibility is more broken and fix things later. However for a GUI parametric modeller this flexibility is more
challenging. challenging. Software like Fusion 360 implements a cache for dangling objects.
Can we implement such a tool as a plugin of another software ? Can we implement such a tool as a plugin of another software ?
-------------------------------------------------------------- --------------------------------------------------------------
...@@ -50,10 +53,10 @@ Can we implement such a tool as a plugin of another software ? ...@@ -50,10 +53,10 @@ Can we implement such a tool as a plugin of another software ?
scripting and plugin. However it is not designed for CAD purpose and not for professional use scripting and plugin. However it is not designed for CAD purpose and not for professional use
actually. This solution is thus flawed. actually. This solution is thus flawed.
`FreeCAD <http://freecadweb.org>` is a free software 3D parametric modeller designed for CAD which `FreeCAD <http://freecadweb.org>`_ is a free software 3D parametric modeller designed for CAD which
also support Python. This solution could be an option, in particular to implement 3D features. also support Python. This solution could be an option, in particular to implement 3D features.
However a 3D CAD software is very complex and challenging, moreover it is not competitive with However a 3D CAD software is very complex and challenging, moreover it is not competitive with
professional software which are available for "free" in some conditions, thus such solution is professional software which are available for "free" in some conditions, thus this solution is
risky. risky.
What is the requirements of a pattern drafting software ? What is the requirements of a pattern drafting software ?
...@@ -100,15 +103,15 @@ Python can be easily extended by C libraries using `CFFI <http://cffi.readthedoc ...@@ -100,15 +103,15 @@ Python can be easily extended by C libraries using `CFFI <http://cffi.readthedoc
and C++ libraries using `SWIG <http://www.swig.org>`_. and C++ libraries using `SWIG <http://www.swig.org>`_.
Python as other dynamic languages is able to evaluate code on the fly which provide an expression Python as other dynamic languages is able to evaluate code on the fly which provide an expression
evaluator for free. And this feature is even more pertinent in our case because of the canonical evaluator for free. This feature is even more pertinent in our case because of the canonical
nature of the syntax of Python which is natural to somebody initiated to a basic mathematical nature of the syntax of Python which is natural to somebody initiated to a basic mathematical
language level. language level.
Could we implement a full software using Python ? Could we implement a full software using Python ?
------------------------------------------------- -------------------------------------------------
The answer is *yes we can!* since `Qt <https://www.qt.io>`_ has as a nice binding so called The answer is *yes we can!* since |Qt|_ has as an official binding and another excellent one,
`PyQt <https://riverbankcomputing.com/software/pyqt/intro>`_. |PyQt|_.
.. (if we consider Qt is superior to GTK and WxWidgets) .. (if we consider Qt is superior to GTK and WxWidgets)
...@@ -144,10 +147,10 @@ Linux distribution or using the `TexLive <https://www.tug.org/texlive>`_ distrib ...@@ -144,10 +147,10 @@ Linux distribution or using the `TexLive <https://www.tug.org/texlive>`_ distrib
A more conventional solution requires a library that can generate PDF from standard graphical A more conventional solution requires a library that can generate PDF from standard graphical
operations. Some libraries featuring that are : operations. Some libraries featuring that are :
* |Reportlab|_ open-source PDF Toolkit (more commercial and less known)
* Qt using QPainter API, Valentina solution, see https://wiki.qt.io/Handling_PDF * Qt using QPainter API, Valentina solution, see https://wiki.qt.io/Handling_PDF
* `Cairo <https://www.cairographics.org/manual/cairo-PDF-Surfaces.html>`_ * `Cairo <https://www.cairographics.org/manual/cairo-PDF-Surfaces.html>`_
* `ReportLab <http://www.reportlab.com/opensource>`_ open-source PDF Toolkit (more commercial and less known) * |Matplotlib|_ (but more oriented to plot)
* `Matplotlib <http://matplotlib.org>`_ (but more oriented to plot)
* and ??? * and ???
What is the requirements of a geometric engine ? What is the requirements of a geometric engine ?
......
.. include:: abbreviation.txt
.. _examples-page:
==========
Examples
==========
The *examples* directory contains several Python scripts showing how to use Patro.
...@@ -12,19 +12,19 @@ How to get help or report an issue ? ...@@ -12,19 +12,19 @@ How to get help or report an issue ?
.. There is no mailing list or forum actually, so you can either contact me or fill an issue on Github. .. There is no mailing list or forum actually, so you can either contact me or fill an issue on Github.
If you want to **discuss or ask questions on Patro**, you can subscribe and post messages on the .. If you want to **discuss or ask questions on Patro**, you can subscribe and post messages on the
**Patro User** mailing list. .. **Patro User** mailing list.
..
There is actually three lists running on Google Groups (*): .. There is actually three lists running on Google Groups (*):
..
`User List <https://groups.google.com/forum/#!forum/Patro-user>`_ .. `User List <https://groups.google.com/forum/#!forum/Patro-user>`_
List for Patro users .. List for Patro users
`Announce List <https://groups.google.com/forum/#!forum/Patro-announce>`_ .. `Announce List <https://groups.google.com/forum/#!forum/Patro-announce>`_
List for announcements regarding Patro releases and development .. List for announcements regarding Patro releases and development
`Devel List <https://groups.google.com/forum/#!forum/Patro-devel>`_ .. `Devel List <https://groups.google.com/forum/#!forum/Patro-devel>`_
List for developers of Patro .. List for developers of Patro
..
**If you encounter an issue, please fill an issue** on the `Issue Tracker <https://github.com/FabriceSalvaire/Patro/issues>`_. .. **If you encounter an issue, please fill an issue** on the `Issue Tracker <https://github.com/FabriceSalvaire/Patro/issues>`_.
..
(*) Despite Google Groups has many drawbacks, I don't have actually enough resources to run GNU Mailman or .. (*) Despite Google Groups has many drawbacks, I don't have actually enough resources to run GNU Mailman or
Discourse on my own IT infrastructure. .. Discourse on my own IT infrastructure.
.. include:: abbreviation.txt
.. _features-page:
========== ==========
Features Features
========== ==========
h2. Geometry Engine Patro implements several components:
h3. Vector * a 2D Geometry Engine
* a Pattern Engine
* dimension: 2D * a Graphic Engine to export drawing to screen display, SVG, PDF and DXF file
* type: int, float * a submodule to read/write SVG file
* normalisation * import/export of the |Valentina|_ file format
* homogeneous coordinate (x, y, w) * import of SVG pattern (as well as PDF using a conversion tools like |Inkscape|_)
* math operations: + - * / * digitalisation of patterns acquired with a camera **ACTUALLY NOT RELEASED WITH OPEN SOURCE LICENCE**
* equality test: == !=
* magnitude .. note:: Patro is just a core engine actually. It doesn't implement a GUI similar to |Valentina|_.
* angle, tan, cos, sin
* rotation, normal, parity .. note:: Patro doesn't implement 3D feature actually, like automatic clothe fitting on avatar and tension map.
* dot, cross
* geometric tests: parallel, orthogonal Geometry Engine
* projection ===============
h3. Transformation The geometry engine implements:
* identity * 2D vector and usual transformations
* rotation, rotation at * usual 2D primitives:
* scale
* parity, x/y reflection * point, segment, line
* translation * triangle, rectangle, polygon
* composition * circle and conic
* quadratic and cubic Bézier curve
h3. Line
* perimeter and area
* dimension: 2D * primitive intersection
* interpolation * thanks to |Sympy|_, Patro could implement symbolic computations when it is feasible
* geometric tests: parallel, orthogonal
* shifted parallel line Pattern Engine
* orthogonal line ==============
* line intersection
* projection of a point * Measurements can be imported from Valentina *.vit* or a YAML file. We can merge several files to a measurement set.
* distance to line * Measurements are lazily evaluated using |Sympy|_ symbolic computation, which means we can compute
exact values and the order of definition doesn't matter.
h3. Segment
Graphic Engine
* dimension: 2D ==============
* length
* middle * show drawing on screen with : |Matplotlib|_
* interpolation * export drawing to : PDF, SVG, DXF, LaTeX Tikz
* segment intersection test * export tiled pattern on A4 sheets : PDF, LaTeX Tikz
* PDF export is implemented with the help of the |Reportlab|_ package
h3. Triangle * DXF export is implemented with the help of the |ezdxf|_ package of `Manfred Moitzi <https://github.com/mozman>`_
* triangle orientation defined by three points : CW, CCW, degenerated Pattern Format Support
======================
h3. Bezier Curve
* |Valentina|_ format: read/write *.val* and *.vit* file, but partially implemented, cf. supra for details
h4. Quadratic Bezier Curve (defined by 3 points) * import pattern from SVG
* **DXF is not yet supported**
* dimension: 2D
* bounding box .. note:: PDF and SVG format are convertible to each other without data loss
* length (font handling require more attention).
* interpolation
* split .. note:: The |Inkscape|_ free software is able to import a lot of file formats like PDF, DXF and to save it to SVG.
* tangent and normal at extremity
* tangent at t Pattern Format Compatibility
----------------------------
h4. Cubic Bezier Curve (defined by 4 points)
For more details on pattern format support, see :
* dimension: 2D
* bounding box .. toctree::
* length :maxdepth: 1
* interpolation
* split valentina-compatibility/index.rst
* tangent extremity
* tangent at t Digitalisation
==============
h3. Circle
* digitalise pattern acquired with a camera **ACTUALLY NOT RELEASED WITH OPEN SOURCE LICENCE**
* dimension: 2D
h3. Conic Curve
* dimension: 2D
* eccentricity
* matrix
h2. Pattern Engine
See in Valentina source code
* src/libs/ifc/schema/pattern/v0.6.2.xsd
* src/libs/ifc/xml/vpatternconverter.cpp
Notice XSD is not sufficient, there is no complete documentation of the Valentina format.
| point/alongLine | Y | Construct a point from two points defining a direction and a length |
| point/bisector | N |
| point/curveIntersectAxis | N |
| point/cutArc | N |
| point/cutSpline | N |
| point/cutSplinePath | N |
| point/endLine | Y | Construct a point from a base point and a vector defined by an angle and a length |
| point/height | N |
| point/lineIntersect | Y | Construct a point from the intersection of two segments defined by four points |
| point/lineIntersectAxis | N |
| point/normal | Y | Construct a point at a distance of the first point on the rotated normal of a line defined by two points |
| point/pointFromArcAndTangent | N |
| point/pointFromCircleAndTangent | N |
| point/pointOfContact | N |
| point/pointOfIntersection | Y | Construct a point from the x coordinate of a fist point and the y coordinate of a second point |
| point/pointOfIntersectionArcs | N |
| point/pointOfIntersectionCircles | N |
| point/pointOfIntersectionCurves | N |
| point/shoulder | N |
| point/single | Y | Construct a point from coordinate |
| point/triangle | N |
| point/trueDarts | N |
| | |
| line | Y | Construct a line defined by two points |
| | |
| spline/cubicBezier | N |
| spline/cubicBezierPath | N |
| spline/pathInteractive | N |
| spline/simpleInteractive | Y | Construct a quadratic Bezier curve from two extremity points and two control points |
| | |
| arc/arcWithLength | N |
| arc/simple | N |
| | |
| elArc/simple | N |
| | |
| operation/flippingByAxis | N |
| operation/flippingByLine | N |
| operation/moving | N |
| operation/rotation | N |
h2. Graphic Engine
h3. File Formats
...@@ -37,19 +37,19 @@ ...@@ -37,19 +37,19 @@
<div class="reduced-width"> <div class="reduced-width">
############################################################# ############################################################
Patro — a Python library to Make Patterns for Fashion Design Patro — Python library to Make Patterns for Fashion Design
############################################################# ############################################################
.. image:: /_static/logo.png .. image:: /_static/logo.png
:alt: Patro logo :alt: Patro logo
:width: 750 :width: 200
******** ********
Overview Overview
******** ********
Patro is a free and open source (*) Python module which implements pattern drafting for fashion design. Patro is a free and open source (*) Python library which implements pattern drafting for fashion design.
.. rst-class:: small-text .. rst-class:: small-text
...@@ -142,9 +142,11 @@ If you want to donate to the project or need a more professional support. ...@@ -142,9 +142,11 @@ If you want to donate to the project or need a more professional support.
:numbered: :numbered:
overview.rst overview.rst
features-all.rst
news.rst news.rst
roadmap.rst roadmap.rst
installation.rst installation.rst
examples.rst
faq.rst faq.rst
design-notes.rst design-notes.rst
reference-manual.rst reference-manual.rst
......
...@@ -92,11 +92,4 @@ Then to build and install Patro run these commands: ...@@ -92,11 +92,4 @@ Then to build and install Patro run these commands:
Dependencies Dependencies
------------ ------------
Patro requires the following dependencies: See *requirements.txt* file for normal installation and *requirements-dev.txt* to regenerate the package.
* |Python|_ 3
* |Numpy|_
To generate the documentation, you will need in addition:
* |Sphinx|_
...@@ -10,33 +10,35 @@ ...@@ -10,33 +10,35 @@
What is Patro ? What is Patro ?
--------------- ---------------
Patro is a Python module which implements pattern drafting for fashion design. Patro is a Python library which implements pattern drafting for fashion design.
What is the purpose of this library ? What is the purpose of this library ?
------------------------------------- -------------------------------------
This library could serve several purposes : This library could serve several purposes :
* generate a pattern from a Python script,
* modify a Valentina pattern with a Python script,
* help to experiment core features for pattern drafting, * help to experiment core features for pattern drafting,
* plug Valentina to software featuring a Python plugin mechanism like Blender, FreeCad etc. * plug Valentina to software featuring a Python plugin mechanism like Blender, FreeCad etc.
What are the Features of Patro ? What are the Features of Patro ?
-------------------------------- --------------------------------
.. include:: features.txt See :ref:`features-page` page.
How is Patro licensed ? How is Patro licensed ?
----------------------- -----------------------
Patro is licensed under the `GPLv3 <https://www.gnu.org/licenses/quick-guide-gplv3.en.html>`_. Patro is licensed under the `GPLv3 <https://www.gnu.org/licenses/quick-guide-gplv3.en.html>`_ license.
Going further with Patro Going further with Patro
------------------------ ------------------------
The best way to know what you can do with Patro, and to learn it, is to look at the examples: The best way to know what you can do with Patro, and to learn it, is to look at the examples:
* :ref:`Examples <examples-page>`
* :ref:`Patro Reference Manual <reference-manual-page>` * :ref:`Patro Reference Manual <reference-manual-page>`
* :ref:`Bibliography <bibliography-page>`
Which platforms are supported by Patro ? Which platforms are supported by Patro ?
---------------------------------------- ----------------------------------------
...@@ -51,5 +53,4 @@ The procedure to install Patro is described in the :ref:`Installation Manual <in ...@@ -51,5 +53,4 @@ The procedure to install Patro is described in the :ref:`Installation Manual <in
Which version of Python is required ? Which version of Python is required ?
------------------------------------- -------------------------------------
Patro requires Python 3 and the version 3.5 is recommended so as to benefit from the new *@* syntax Patro requires Python 3.
for units.
...@@ -7,4 +7,4 @@ ...@@ -7,4 +7,4 @@
Roadmap Roadmap
========= =========
`Roadmap @Github <https://github.com/FabriceSalvaire/Patro/milestones>`_ See `Roadmap @Github <https://github.com/FabriceSalvaire/Patro/milestones>`_