Część: Utwórz kształt z siatki

From FreeCAD Documentation
Revision as of 19:25, 5 July 2023 by Kaktus (talk | contribs) (Created page with "Operacja odwrotna to {{Button|16px Siatka z kształtu}} ze środowiska pracy 24px Siatki.")

Część: Utwórz kształt z siatki

Lokalizacja w menu
Part → Utwórz kształt z siatki ...
Środowisko pracy
Część
Domyślny skrót
brak
Wprowadzono w wersji
-
Zobacz także
Utwórz bryłę, Udoskonal kształt, Utwórz obiekt punktów z siatki

Wprowadzenie

Polecenie Utwórz kształt z siatki tworzy kształt z obiektu siatkowego. Obiekty siatkowe mają ograniczone możliwości edycji w FreeCAD, konwersja ich do kształtu pozwoli na ich użycie z wieloma innymi narzędziami logicznymi i modyfikującymi.

Operacja odwrotna to Siatka z kształtu ze środowiska pracy Siatki.

Usage

  1. Select the mesh object in the tree view.
  2. Go to the menu, Part → Create shape from mesh.
  3. A popup-menu will ask for the tolerance for sewing shape; the default value is 0.1.
  4. A shape from the mesh object is created as a separate new object.

Analyzing and repairing of the mesh, if needed, should be done manually before launching ShapeFromMesh. Appropriate tools for this task are available in the Mesh Workbench.

After creation of a Shape, it may be useful to use Convert to solid (necessary for boolean operations) and Refine shape.

Links

Scripting

Creating a Shape from a Mesh can be done by using the makeShapeFromMesh method from a Part TopoShape; you need to specify the source mesh and tolerance, and assign the result to a new Part Feature object.

Notice that the mesh must be recalculated before it is converted to a Shape, otherwise there won't be topology information, and the conversion won't be successful.

import FreeCAD as App
import Part

doc = App.newDocument()
mesh = doc.addObject("Mesh::Cube", "Mesh")
mesh.recompute()

solid = doc.addObject("Part::Feature", "Shape")
shape = Part.Shape()
shape.makeShapeFromMesh(mesh.Mesh.Topology, 0.1)

solid.Shape = shape
solid.Placement.Base = App.Vector(15, 0, 0)
solid.purgeTouched()
doc.recompute()