107 lines
10 KiB
HTML
107 lines
10 KiB
HTML
<html><head><title>Mesh Scripting/ru</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Mesh Scripting/ru</h1></div>
|
||
|
||
<div id="mw-content-text" lang="ru" dir="ltr" class="mw-content-ltr"><hr/>
|
||
<div class="mw-parser-output"><div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
|
||
<ul>
|
||
<li class="toclevel-1 tocsection-1"><a href="#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5"><span class="tocnumber">1</span> <span class="toctext">Введение</span></a></li>
|
||
<li class="toclevel-1 tocsection-2"><a href="#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0"><span class="tocnumber">2</span> <span class="toctext">Создание и Загрузка</span></a></li>
|
||
<li class="toclevel-1 tocsection-3"><a href="#.D0.9C.D0.BE.D0.B4.D0.B5.D0.BB.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"><span class="tocnumber">3</span> <span class="toctext">Моделирование</span></a></li>
|
||
<li class="toclevel-1 tocsection-4"><a href="#.D0.98.D0.B7.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"><span class="tocnumber">4</span> <span class="toctext">Изучение и Тестирование</span></a></li>
|
||
<li class="toclevel-1 tocsection-5"><a href="#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D0.BE.D0.B1.D1.81.D1.82.D0.B2.D0.B5.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC.D0.B0"><span class="tocnumber">5</span> <span class="toctext">Создание собственного Алгоритма</span></a></li>
|
||
<li class="toclevel-1 tocsection-6"><a href="#.D0.AD.D0.BA.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"><span class="tocnumber">6</span> <span class="toctext">Экспортирование</span></a></li>
|
||
<li class="toclevel-1 tocsection-7"><a href="#.D0.92.D1.81.D0.B5_.D1.87.D1.82.D0.BE_.D1.81.D0.B2.D1.8F.D0.B7.D0.B0.D0.BD.D0.BE_.D1.81_Gui_.D1.80.D0.B5.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D0.B5.D0.B9"><span class="tocnumber">7</span> <span class="toctext">Все что связано с Gui реализацией</span></a></li>
|
||
<li class="toclevel-1 tocsection-8"><a href="#.D0.92.D1.81.D1.8F.D0.BA.D0.B0.D1.8F_.D0.B2.D1.81.D1.8F.D1.87.D0.B8.D0.BD.D0.B0"><span class="tocnumber">8</span> <span class="toctext">Всякая всячина</span></a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<h3><span class="mw-headline" id=".D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5">Введение</span></h3>
|
||
<p>Прежде всего вы должны импортировать Mesh модуль:
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>import Mesh</pre></div>
|
||
<p>После этого вы получаете доступ к Mesh модулю и классам Mesh которые сообщаются с с функциями FreeCAD C++ Mesh-Kernel.
|
||
</p>
|
||
<h3><span class="mw-headline" id=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0">Создание и Загрузка</span></h3>
|
||
<p>Чтобы создать простейший полигонный(сеточный) объект, просто используйте стандартный конструктор:
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>mesh = Mesh.Mesh()</pre></div>
|
||
<p>Вы также можете создать объект из файла
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>mesh = Mesh.Mesh('D:/temp/Something.stl')</pre></div>
|
||
<p>Какие файловые форматы вы можете использовать для создания полигиональных объектов написано <a href="/wiki/Feature_list#IO" title="Feature list">здесь</a>.
|
||
</p><p>Или создайте его из множества треугольников, задав их верщины:
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>planarMesh = [
|
||
# triangle 1
|
||
[-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[-0.5000,0.5000,0.0000],
|
||
#triangle 2
|
||
[-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],
|
||
]
|
||
planarMeshObject = Mesh.Mesh(planarMesh)
|
||
Mesh.show(planarMeshObject)</pre></div>
|
||
<p>Mesh-Ядро заботится о создании топологического правильной структуры данных сортируя
|
||
совпадающие точки и края вместе.
|
||
</p><p>Позже вы увидете как можно протестировать и изучить полигиональные(сеточные) данные.
|
||
</p>
|
||
<h3><span class="mw-headline" id=".D0.9C.D0.BE.D0.B4.D0.B5.D0.BB.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5">Моделирование</span></h3>
|
||
<p>Для создания обычной геометрии вы можете использовать Python сценарий BuildRegularGeoms.py.
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>import BuildRegularGeoms</pre></div>
|
||
<p>Этот сценарий предоставляет методы для определения простых тел вращения, таких как сферы, элипсоиды, цилиндры, тороиды и конусы. И он также обладает методом для создания простого куба.
|
||
Чтобы создать тороид, например, следующим образом:
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>t = BuildRegularGeoms.Toroid(8.0, 2.0, 50) # list with several thousands triangles
|
||
m = Mesh.Mesh(t)</pre></div>
|
||
<p>Первые два параметра определяют радиусы тороида а третий параметр фактор подвыборки , как много треугольников будет создано. Чем выше это значение тем сглаженней и наоброт чем ниже тем грубее тело.
|
||
Mesh классы предоставляют набор логических функций которые могут быть использовыны в целях моделирования. Они обеспечивают объединение, пересечение и вычитание двух полигиональных объектов.
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>m1, m2 # are the input mesh objects
|
||
m3 = Mesh.Mesh(m1) # create a copy of m1
|
||
m3.unite(m2) # union of m1 and m2, the result is stored in m3
|
||
m4 = Mesh.Mesh(m1)
|
||
m4.intersect(m2) # intersection of m1 and m2
|
||
m5 = Mesh.Mesh(m1)
|
||
m5.difference(m2) # the difference of m1 and m2
|
||
m6 = Mesh.Mesh(m2)
|
||
m6.difference(m1) # the difference of m2 and m1, usually the result is different to m5</pre></div>
|
||
<p>Наконец, полный пример, который вычисляет пересечение сферы и цилиндра, пересекающего сферу.
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>import Mesh, BuildRegularGeoms
|
||
sphere = Mesh.Mesh( BuildRegularGeoms.Sphere(5.0, 50) )
|
||
cylinder = Mesh.Mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) )
|
||
diff = sphere
|
||
diff = diff.difference(cylinder)
|
||
d = FreeCAD.newDocument()
|
||
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
|
||
d.recompute()</pre></div>
|
||
<h3><span class="mw-headline" id=".D0.98.D0.B7.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5">Изучение и Тестирование</span></h3>
|
||
<h3><span class="mw-headline" id=".D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D0.BE.D0.B1.D1.81.D1.82.D0.B2.D0.B5.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC.D0.B0">Создание собственного Алгоритма</span></h3>
|
||
<h3><span class="mw-headline" id=".D0.AD.D0.BA.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5">Экспортирование</span></h3>
|
||
<p>Вы также можете записать полигиональную модель как python модуль:
|
||
</p>
|
||
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre>m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py")
|
||
import SavedMesh
|
||
m2 = Mesh.Mesh(SavedMesh.faces)</pre></div>
|
||
<h3><span class="mw-headline" id=".D0.92.D1.81.D0.B5_.D1.87.D1.82.D0.BE_.D1.81.D0.B2.D1.8F.D0.B7.D0.B0.D0.BD.D0.BE_.D1.81_Gui_.D1.80.D0.B5.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D0.B5.D0.B9">Все что связано с Gui реализацией</span></h3>
|
||
<h3><span class="mw-headline" id=".D0.92.D1.81.D1.8F.D0.BA.D0.B0.D1.8F_.D0.B2.D1.81.D1.8F.D1.87.D0.B8.D0.BD.D0.B0">Всякая всячина</span></h3>
|
||
<p>Трудно, широко использовать источники полигиональной модели связанные с сценарием, все это тестирование написания сценариев для полигионального модудя
|
||
В этих тестах модуля буквально все методы вызываются и все свойства/атрибуты вымышлены.
|
||
Так что если вы достаточно смелы, взгляните на <a rel="nofollow" class="external text" href="http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Mesh/App/MeshTestsApp.py?view=markup">Unit Test module</a>.
|
||
</p><p>See also <a href="Mesh_API.html" title="Mesh API">Mesh API</a>
|
||
</p>
|
||
|
||
<div style="clear:both"></div>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
</div><div class="printfooter">
|
||
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Scripting/ru&oldid=143821">http://www.freecadweb.org/wiki/index.php?title=Mesh_Scripting/ru&oldid=143821</a>"</div>
|
||
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
|
||
</div>
|
||
</div>
|
||
<div id="mw-navigation">
|
||
<h2>Navigation menu</h2>
|
||
|
||
</body></html> |