FreeCAD-Doc/localwiki/Mesh_Scripting-ru.html
2018-07-19 18:47:02 -05:00

107 lines
10 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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&amp;oldid=143821">http://www.freecadweb.org/wiki/index.php?title=Mesh_Scripting/ru&amp;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>