| Описание |
|---|
| Находит граничные ломанные кривые в выбранных объектах сетки. Граничные ломанные формируются из всех найденных в сетке рёбер, которые разделяет только одна грань, то есть это "граничные" рёбра. Найденные ломанные добавляются в документ (по одному соединению (compound) на объект сетки), а сама сетка скрывается. Макрос версии : 1 Дата последней модификации : 2016-12-17 FreeCAD версия : Все версии Скачать : Иконка панели инструментов автор : Yorik |
| Автор |
| Yorik |
| Скачать |
| Иконка панели инструментов |
| Ссылки |
| Макросы рецепты Как установить макросы Как настроить панели инструментов |
| Версия |
| 1 |
| Дата последней модификации |
| 2016-12-17 |
| Версии FreeCAD |
| Все версии |
| Сочетание клавиш |
| None |
| Смотрите также |
| None |
Находит граничные ломанные в выбранных объектах сетки. Граничные ломанные формируются из всех найденных в сетке рёбер, которые разделяет только одна грань, то есть это "граничные" рёбра. Найденные ломанные добавляются в документ (по одному соединению на объект сетки), а сама сетка скрывается.
Macro_Extract_Wires_from_Mesh.FCMacro
#!/usr/bin/python
# This macro will extract wires from selected meshes
# The result is a new Part Compound containing wires, one per original mesh object
# The selected meshes will be hidden but still selected after the operation.
# Warning, it takes a bit of time...
import FreeCAD,FreeCADGui,Part,Draft,DraftGeomUtils,Mesh
for obj in FreeCADGui.Selection.getSelection():
if obj.isDerivedFrom("Mesh::Feature"):
shape = Part.Shape()
shape.makeShapeFromMesh(obj.Mesh.Topology,0.1)
edges = []
lut = {}
for f in shape.Faces:
for e in f.Edges:
lut.setdefault(e.hashCode(),[]).append(e)
for k,v in lut.items():
if len(v) == 1:
edges.extend(v)
if edges:
wires = DraftGeomUtils.findWires(edges)
if wires:
Part.show(Part.makeCompound(wires))
obj.ViewObject.hide()