<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="NL" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Dear developers,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks for the great efforts put into QGIS— the versatile and clear layout API and bindings to python help us greatly in the design of our custom (/academic) (structural) geologic field acquisition tool, DigiFract.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">On behalf of Martijn, our c++ developer who currently seeks to implement some 3D geometry (/CAD) functionality, we have a few questions.</span><span lang="EN-US"><br>
<br>
We want to extend QGIS with geometries that support two important features. The geometries should:<br>
(a) 'live' in three dimensions and function both as a QgsGeometry and CAD object. For the CAD functionality we use OpenCascade (</span><a href="http://www.opencascade.org/"><span lang="EN-GB">http://www.opencascade.org/</span></a><span lang="EN-GB">).<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">(b) support the possibility to 'share' vertices. Notice that by 'sharing' we do not mean based on proximity by sharing vertices between different geometries.
<br>
<br>
We had the following design in mind:<br>
<br>
We create a VertexSet that stores vertices in 2 or 3 dimensions. we want to create a XGeometry class that is derived from qgsGeometry. The XGeometry class has a reference to a VertexSet object. The geometries stored in a XGeometry object are actually indices
of vertices that are stored in the VertexSet. So a line geometry is represented in the XGeometry object by: [1, 2, 3], indicating the indices of the vertices that span the line. Because the VertexSet can be shared by many geometries, vertices can easily be
shared.<br>
<br>
This would seem like an ok design (in my view), however, the qgisGeometry class is not designed as a base class. Unlike some other classes in the QGIS API, it contains no virtual functions for example. If it did, I would (re-) implement a few virtual functions
(such as the ones that are used to read and write a geometry object to file for example) and it would almost seamlessly integrate into QGIS without too much effort (ok, this is extremely naive of course).<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Our questions are:<br>
(1) Since qgisGeometry is not designed with virtual function. Does anybody have any suggestions how we could tackle this problem in a nice and elegant way?<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">(2) QGIS build-and-install seem not to have an automake with configure. Is the most straightforward way for compiling our custom (QGIS derived) library by placing it in a QGIS_source and adjusting
CMakeLists files? Is there a better way?<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">(3) QGIS shows well equipped to support our custom class and academic software design for structural geologic purpose, aiming at better integration of some GIS and 3D CAD functionality. We
are interested to learn from and contribute to those in QGIS community with similar aim. We notice how some 1.8-2.0 QGIS design aiming at, for instance, refined topology handling, but true 3D CAD is most probably not in the scope of QGIS development. Anyway,
interested to learn who might have a similar development goal.<br>
<br>
Kind regards,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-GB">Nico Hardebol, on behalf of Martijn Stroeven<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">----------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">TU Delft<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Civil Engineering and Geosciences<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Dept. Applied Geology<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Room 3.17<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2628 CN Delft, NL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Tel +31 15 27 82707<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Fax +31 15 27 81189<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="mailto:N.J.Hardebol@tudelft.nl">N.J.Hardebol@tudelft.nl</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</body>
</html>