<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ( algorithm ) Tension  3DMESH in ObjectARX Forum</title>
    <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10792223#M2979</link>
    <description>&lt;P&gt;Hello tbrammer!&lt;/P&gt;&lt;P&gt;Can a closed boundary form a surface,&lt;/P&gt;&lt;P&gt;The plane mesh is obtained by projection, and the height of Z is calculated.&lt;/P&gt;&lt;P&gt;Reshape surface&lt;/P&gt;</description>
    <pubDate>Wed, 01 Dec 2021 00:44:43 GMT</pubDate>
    <dc:creator>463017170</dc:creator>
    <dc:date>2021-12-01T00:44:43Z</dc:date>
    <item>
      <title>( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10770546#M2968</link>
      <description>&lt;P&gt;According to the magnitude of the force in the X and Y directions,&lt;/P&gt;&lt;P&gt;What generates 3demesh&lt;/P&gt;&lt;P&gt;thank！&lt;/P&gt;</description>
      <pubDate>Sat, 20 Nov 2021 13:33:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10770546#M2968</guid>
      <dc:creator>1127204185</dc:creator>
      <dc:date>2021-11-20T13:33:05Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780457#M2969</link>
      <description>&lt;P&gt;Here is a function I wrote same time ago that calculates the minimal mesh inside of four arbitrary curves in space.&lt;/P&gt;
&lt;P&gt;You have to select the left (red), right (green), front (blue) and back (yellow) curve. The code will create a NxM mesh. &lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MeshSample.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/993545iEB4350ACD00C816E/image-size/large?v=v2&amp;amp;px=999" role="button" title="MeshSample.png" alt="MeshSample.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;To use it for your case you just have to generate the bounding curves from your data i.e. as &lt;FONT face="courier new,courier"&gt;AcDb3dPolyline&lt;/FONT&gt; or &lt;FONT face="courier new,courier"&gt;AcDbSpline&lt;/FONT&gt;.&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;void cmdMinSurf()
{
	ads_name ename;
	ads_point pickpoint;
	int stat;
	LPCWSTR name[2][2] = { { L"left", L"right"}, { L"front", L"back"} };
	TCHAR msg[256];
	AcDbObjectId idCurve[2][2];
	Acad::ErrorStatus es;
	int i, j, count;

	static int N = 40, M = 50; // Grid size. Made static for quick experiments.
	// I'm using AcGeVector3d instead of AcGePoint3d because so I can simply add and multiply.
	// p[0][M-1] - p[1][M-1] - ... p[N-2][M-1] - p[N-1][M-1]
	//           +-----------------------------+
	// p[0][M-2] | p[1][M-2] - ... p[N-2][M-2] | p[N-1][M-2]
	// ...       .    ...      ...             .
	// ...       .    ...      ...             .
	// p[0][1]   | p[1][1]   - ... p[N-2][1]   | p[N-1][1]
	//           +-----------------------------+
	// p[0][0]   - p[1][0]   - ... p[N-2][0]   - p[N-1][0]
	//
	// p[0][j] and p[N-1][j] are the fixed points on the given curves in X-directions
	// p[i][0] and p[i][M-1] are the fixed points on the given curves in Y-directions
	// p[1..N-2][1..M-2] are the points inside of the grid

	std::vector&amp;lt; std::vector&amp;lt;AcGeVector3d &amp;gt; &amp;gt; p; // works like AcGeVector3d p[N][M] - but dynamic size
	p.resize(N);
	for (auto&amp;amp; arr : p)
		arr.resize(M);	

	AcGePoint3d pt;
	AcGePoint3d startpoints[2][2], endpoints[2][2];

	for (i=0; i&amp;lt;2; ++i) // 0: left/right    1:front/back
	{
		for (j = 0; j &amp;lt; 2; ++j) // 0: left/front    1:right/back
		{
			swprintf_s(msg, L"\nSelect %s border curve: ", name[i][j]);
			stat = acedEntSel(msg, ename, pickpoint);
			if (stat != RTNORM)
				return;
			es = acdbGetObjectId(idCurve[i][j], ename);
			if (!es)
			{
				AcDbCurve *curve;
				if ((es = acdbOpenObject(curve, idCurve[i][j], AcDb::kForRead)) == Acad::eOk)
				{
					curve-&amp;gt;getStartPoint(startpoints[i][j]);
					curve-&amp;gt;getEndPoint(endpoints[i][j]);
					curve-&amp;gt;close();
				}
			}
		}
	}

	std::vector&amp;lt;double&amp;gt; distances;
	distances.resize(4);

	bool reverse[2][2];
	//startpoints[2][2], endpoints[2][2];
	// The "normal" case is: curves run from left to right and from front to back
	// we must make sure that the l/r curves and the f/b curves don't run in opposite directions
	distances[0] = startpoints[0][0].distanceTo(startpoints[1][0]); // should be 0 (or minimal)
	distances[1] = startpoints[0][0].distanceTo(endpoints[1][0]);
	distances[2] = endpoints[0][0].distanceTo(startpoints[1][0]);
	distances[3] = endpoints[0][0].distanceTo(endpoints[1][0]);
	auto itMin = std::min_element(distances.begin(), distances.end());
	size_t ixLF = itMin - distances.begin();
	reverse[1][0] = !!(ixLF &amp;amp; 1);
	reverse[0][0] = !!(ixLF &amp;amp; 2);

	distances[0] = endpoints[1][1].distanceTo(endpoints[0][1]);
	distances[1] = endpoints[1][1].distanceTo(startpoints[0][1]);
	distances[2] = startpoints[1][1].distanceTo(endpoints[0][1]);
	distances[3] = startpoints[1][1].distanceTo(startpoints[0][1]); // should be 0 (or minimal)
	itMin = std::min_element(distances.begin(), distances.end());
	size_t ixRB = itMin - distances.begin();
	reverse[0][1] = !!(ixRB &amp;amp; 1);
	reverse[1][1] = !!(ixRB &amp;amp; 2);

	for (i = 0; i &amp;lt; 2; ++i) // 0: left/right    1:front/back
	{
		for (j = 0; j &amp;lt; 2; ++j) // 0: left/front    1:right/back
		{
			AcDbCurve* curve;
			if ((es = acdbOpenObject(curve, idCurve[i][j], AcDb::kForRead)) == Acad::eOk)
			{
				bool r = reverse[i][j];
				double par, parStart, parEnd, dPar;
				es = curve-&amp;gt;getStartParam(parStart);
				es = curve-&amp;gt;getEndParam(parEnd);

				count = i ? M : N;
				dPar = (parEnd - parStart) / (count - 1);
				for (int k = 0; k &amp;lt; count; ++k)
				{
					par = parStart + k * dPar;
					es = curve-&amp;gt;getPointAtParam(par, pt);
					int kr = r ? count-k-1 : k; // reverse or not?
					if (i)
						p[j ? N - 1 : 0][kr] = pt.asVector();
					else
						p[kr][j ? M - 1 : 0] = pt.asVector();
				}
				curve-&amp;gt;close();
			}
		}
	}


	// Roughly initialize grid	
	double _N = 1.0 / N, _M = 1.0 / M;
	for (i = 1; i &amp;lt; N - 1; ++i)
	{
		for (j = 1; j &amp;lt; M - 1; ++j)
		{
			double fn = i * _N;
			double fm = j * _M;
			p[i][j] = (
			  	  (fm * p[i][0] + (1.0 - fm) * p[i][M-1])
				+ (fn * p[0][j] + (1.0 - fn) * p[N-1][j])
				) / 2.0;				
		}
	}

	// Vary grid points until there is no more relevant change
	double deltaMax = 0.1;
	double delta;
	int innerGridCount = (N - 2) * (M - 2);
	AcGeVector3d pNew;
	do {
		delta = 0.0;
		for (i = 1; i &amp;lt; N - 1; ++i)
			for (j = 1; j &amp;lt; M - 1; ++j)
			{
				// Calculate a new point p[i][j] by the "average" from p[i-1][j], p[i+1][j], p[i][j-1] and p[i][j+1].
				// This simulates p[i][j] being "dragged" to the point with the smallest distance to these neighbour points.
				pNew = (p[i - 1][j] + p[i + 1][j] + p[i][j - 1] + p[i][j + 1]) / 4;
				delta += (p[i][j] - pNew).lengthSqrd();
				p[i][j] = pNew;
			}
		delta = delta / innerGridCount;
	} while (delta &amp;gt; deltaMax);

	//AcDbPolyFaceMesh,	AcDbSubDMesh
	AcGePoint3dArray totalArray(N*M);
	for (i = 0; i &amp;lt; N; ++i)
		for (j = 0; j &amp;lt; M; ++j)
			totalArray.append(asPnt3d(asDblArray(p[i][j])));

	AcDbDatabase* pDB = acdbHostApplicationServices()-&amp;gt;workingDatabase();
	AcDbPolygonMesh* mesh = new AcDbPolygonMesh(AcDb::kSimpleMesh, N, M, totalArray, false, false);
	mesh-&amp;gt;setDatabaseDefaults(pDB);
	AcDbObjectId meshId;
	postToDb(pDB, mesh, meshId);
}

Acad::ErrorStatus postToDb(AcDbDatabase *db, AcDbEntity* ent, AcDbObjectId&amp;amp; objId)
{
	Acad::ErrorStatus      es;
	AcDbBlockTable* pBlockTable;
	AcDbBlockTableRecord* pSpaceRecord;
	if ((es = db-&amp;gt;getSymbolTable(pBlockTable, AcDb::kForRead)) != Acad::eOk)
		return es;
	if ((es = pBlockTable-&amp;gt;getAt(ACDB_MODEL_SPACE, pSpaceRecord, AcDb::kForWrite)) != Acad::eOk)
		return es;
	pBlockTable-&amp;gt;close();
	es = pSpaceRecord-&amp;gt;appendAcDbEntity(objId, ent);
	pSpaceRecord-&amp;gt;close();
	ent-&amp;gt;close();
	return es;
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 00:32:03 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780457#M2969</guid>
      <dc:creator>tbrammer</dc:creator>
      <dc:date>2021-11-25T00:32:03Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780463#M2970</link>
      <description>Thank you very much！&lt;BR /&gt;The number of grids does not change static int N = 40, M = 50;&lt;BR /&gt;Can you modify that parameter,&lt;BR /&gt;Acdbpolyfacemesh surface variation</description>
      <pubDate>Thu, 25 Nov 2021 00:36:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780463#M2970</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-11-25T00:36:54Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780723#M2971</link>
      <description>&lt;P&gt;&lt;BR /&gt;&lt;A href="https://github.com/amandaghassaei/ShellFormFinding" target="_blank" rel="noopener"&gt;https://github.com/amandaghassaei/ShellFormFinding&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://reader.elsevier.com/reader/sd/pii/S002076831200337X?token=BB26CDE3E7DB1C081478280C8B4F464BC663B35C436FB8A8D117226AAEAF4A52736D3C9F076ED7A4C79434125467E3D5&amp;amp;originRegion=us-east-1&amp;amp;originCreation=20211125075931" target="_blank"&gt;https://reader.elsevier.com/reader/sd/pii/S002076831200337X?token=BB26CDE3E7DB1C081478280C8B4F464BC663B35C436FB8A8D117226AAEAF4A52736D3C9F076ED7A4C79434125467E3D5&amp;amp;originRegion=us-east-1&amp;amp;originCreation=20211125075931&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 08:01:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10780723#M2971</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-11-25T08:01:18Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781494#M2972</link>
      <description>&lt;P&gt;You can change the values of N and M without problems. I made them static to be able to "play around" with them easily while debugging.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I realized that you don't need to create curves to use the code.&lt;/P&gt;
&lt;P&gt;You can skip the selection of curves and the following calculations that initialize the "grid border points".&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;FONT face="courier new,courier"&gt;p[0][M-1] ... p[N-1][M-1]&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ...&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;p[0][0]&amp;nbsp;&amp;nbsp; ... p[N-1][0]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Just initialize them yourself with your mesh border points.&lt;/P&gt;
&lt;P&gt;Than you can start with the code after comment&amp;nbsp; &lt;FONT face="courier new,courier"&gt;// Roughly initialize grid&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 12:17:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781494#M2972</guid>
      <dc:creator>tbrammer</dc:creator>
      <dc:date>2021-11-25T12:17:49Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781743#M2973</link>
      <description>&lt;P&gt;Thank you very much for your help?&lt;/P&gt;&lt;P&gt;Can you make this equilateral length?&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 14:24:47 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781743#M2973</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-11-25T14:24:47Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781777#M2974</link>
      <description>&lt;P&gt;I don't know what you mean by "equilateral length". Which lenghts shall be equal?&lt;/P&gt;
&lt;P&gt;My code generated the white mesh on the left from the arcs and the lines in test.dwg as the "minimum tension surface":&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tbrammer_0-1637851078293.png" style="width: 836px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/993763i7059573785CE4E88/image-dimensions/836x209?v=v2" width="836" height="209" role="button" title="tbrammer_0-1637851078293.png" alt="tbrammer_0-1637851078293.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 14:42:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781777#M2974</guid>
      <dc:creator>tbrammer</dc:creator>
      <dc:date>2021-11-25T14:42:37Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781861#M2975</link>
      <description>&lt;P&gt;N and M remain unchanged, and there is no parameter that can the shape of the surface. For example X=1 Y=1 X=1 Y=2 X=1 Y=3&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 15:31:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781861#M2975</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-11-25T15:31:30Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781889#M2976</link>
      <description>&lt;P&gt;An adjustable surface，Not &lt;SPAN&gt;minimum tension surface&lt;/SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20211125234929.png" style="width: 952px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/993785iF00F22410632817A/image-size/large?v=v2&amp;amp;px=999" role="button" title="20211125234929.png" alt="20211125234929.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 15:52:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10781889#M2976</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-11-25T15:52:49Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10782096#M2977</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/4674566"&gt;@1127204185&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;N and M remain unchanged, and there is no parameter that can the shape of the surface. For example X=1 Y=1 X=1 Y=2 X=1 Y=3&lt;BR /&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The final shape of the surface is determined by the "border frame points" of the mesh. The mesh points at the borders are fixed at their positions but all other points are allowed to move in 3D to a place with lower "tension".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I added a buildable sample with functions that allow to change M and N. It implements two commands:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MyCommand / MC&lt;/STRONG&gt; = My version that lets you select four curves. The code is modified, so that it is possible to adjust M and N:&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;// Command MyCommand / MC
void cmdMinSurf()
{
	AcDbObjectIdArray curves;
	if (!SelectBorderCurveArray(curves))
		return;

	bool reverse[4];
	if (!BuildCurveLoop(curves, reverse))
		return;

	std::vector&amp;lt; std::vector&amp;lt;AcGeVector3d &amp;gt; &amp;gt; p;
	int M = 40, N = 50;
	if (!initializeGridFrame(p, M, N, curves, reverse))
		return;

	double deltaMax = 0.1;
	if (!MinimizeSurf(p, deltaMax))
		return;

	AcDbObjectId meshId;
	ShowMesh(p, meshId);
}&lt;/LI-CODE&gt;
&lt;P&gt;Note than M and N are basically the array dimensions of &lt;FONT face="courier new,courier"&gt;p&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;Much of my code deals with initializing the "border frame" of&amp;nbsp;&lt;FONT face="courier new,courier"&gt;p&lt;/FONT&gt; from the selected curves. But you don't have to deal with this. To make things more clear I added another command:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;YourCommand / YC&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;// Command YourCommand / YC
void cmdYourMinSurf()
{
	std::vector&amp;lt; std::vector&amp;lt;AcGeVector3d &amp;gt; &amp;gt; p;
	int M = 40, N = 50;
	double deltaMax = 0.1;

	YourGeometryData data;
	if (!YourInitializeGridFrame(p, M, N, data))
		return;

	if (!MinimizeSurf(p, deltaMax))
		return;

	AcDbObjectId meshId;
	ShowMesh(p, meshId);
}&lt;/LI-CODE&gt;
&lt;P&gt;Now it is &lt;U&gt;your&lt;/U&gt; task to implement the function &lt;FONT face="courier new,courier"&gt;YourInitializeGridFrame(p, M, N, data)&lt;/FONT&gt; using your own geometry data to shape the surface. I can't do this for you. The project contains a sample implementation that should show you what to do.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Nov 2021 17:49:41 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10782096#M2977</guid>
      <dc:creator>tbrammer</dc:creator>
      <dc:date>2021-11-25T17:49:41Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10782596#M2978</link>
      <description>Thank you very much！</description>
      <pubDate>Fri, 26 Nov 2021 00:05:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10782596#M2978</guid>
      <dc:creator>1127204185</dc:creator>
      <dc:date>2021-11-26T00:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: ( algorithm ) Tension  3DMESH</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10792223#M2979</link>
      <description>&lt;P&gt;Hello tbrammer!&lt;/P&gt;&lt;P&gt;Can a closed boundary form a surface,&lt;/P&gt;&lt;P&gt;The plane mesh is obtained by projection, and the height of Z is calculated.&lt;/P&gt;&lt;P&gt;Reshape surface&lt;/P&gt;</description>
      <pubDate>Wed, 01 Dec 2021 00:44:43 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/algorithm-tension-3dmesh/m-p/10792223#M2979</guid>
      <dc:creator>463017170</dc:creator>
      <dc:date>2021-12-01T00:44:43Z</dc:date>
    </item>
  </channel>
</rss>

