# recorded in the version control history of the file, available from # its original location https://github.com/nortikin/sverchok/commit/master # # SPDX-License-Identifier: GPL3 # License-Filename: LICENSE import bpy from bpy.props import BoolProperty, FloatProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, map_recursive from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvSolidCenterOfMassNode', 'Center of Mass', 'FreeCAD') else: import Part class SvSolidCenterOfMassNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Center of Mass Tooltip: Calculate center of mass (barycenter) of a Solid object """ bl_idname = 'SvSolidCenterOfMassNode' bl_label = 'Center of Mass' bl_icon = 'OUTLINER_OB_EMPTY' solid_catergory = "Operators" def sv_init(self, context):
import json import bpy from bpy.props import EnumProperty, StringProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode from sverchok.utils.curve.nurbs import SvNurbsCurve, SvGeomdlCurve from sverchok.utils.surface.nurbs import SvNurbsSurface, SvGeomdlSurface from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import geomdl if geomdl is None: add_dummy('SvExNurbsToJsonNode', "NURBS to JSON", 'geomdl') else: # FIXME: Ugly temporary hack... Has to be replaced after # https://github.com/orbingol/NURBS-Python/issues/76 is fixed. from geomdl import _exchange from geomdl import multi class SvExNurbsToJsonOp(bpy.types.Operator): "NURBS to JSON" bl_idname = "node.sv_ex_nurbs_to_json" bl_label = "NURBS to JSON" bl_options = {'REGISTER', 'INTERNAL'} nodename: StringProperty(name='nodename') treename: StringProperty(name='treename') def execute(self, context):
# # SPDX-License-Identifier: GPL3 # License-Filename: LICENSE import bpy from bpy.props import FloatProperty, StringProperty, BoolProperty, EnumProperty, IntProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, ensure_nesting_level, zip_long_repeat, throttle_and_update_node, get_data_nesting_level from sverchok.utils.field.scalar import SvScalarField from sverchok.utils.voronoi3d import Bounds, lloyd3d_bounded from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy if scipy is None: add_dummy('SvLloyd3dNode', "Lloyd 3D", 'scipy') class SvLloyd3dNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Lloyd Mesh Tooltip: Redistribute 3D points within bounding box or sphere uniformly by use of Lloyd's algorithm """ bl_idname = 'SvLloyd3dNode' bl_label = 'Lloyd 3D' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_VORONOI' iterations: IntProperty(name="Iterations", description="Number of Lloyd algorithm iterations", min=0,
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvToursSolidNode', 'Torus (Solid)', 'FreeCAD') else: import bpy from bpy.props import FloatProperty, FloatVectorProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, match_long_repeat as mlr import Part from FreeCAD import Base class SvToursSolidNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Torus Cylinder Tooltip: Create Solid Torus """ bl_idname = 'SvToursSolidNode' bl_label = 'Torus (Solid)' bl_icon = 'MESH_TORUS' solid_catergory = "Inputs" cylinder_radius: FloatProperty(name="Radius R", default=1, precision=4, update=updateNode) cylinder_radius_top: FloatProperty(name="Radius r", default=0.25,
import numpy as np import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty, StringProperty from mathutils import Vector, Matrix from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import updateNode, zip_long_repeat, match_long_repeat, ensure_nesting_level from sverchok.utils.logging import info, exception from sverchok.utils.field.scalar import SvScalarField from sverchok.dependencies import skimage from sverchok.utils.dummy_nodes import add_dummy from sverchok.utils.marching_squares import make_contours if skimage is None: add_dummy('SvExMarchingSquaresNode', "Marching Squares", 'skimage') else: from skimage import measure class SvExMarchingSquaresNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Marching Squares Tooltip: Marching Squares """ bl_idname = 'SvExMarchingSquaresNode' bl_label = 'Marching Squares' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_EX_MSQUARES' iso_value: FloatProperty(name="Value", default=1.0, update=updateNode)
import numpy as np import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, get_data_nesting_level, ensure_nesting_level from sverchok.utils.sv_bmesh_utils import bmesh_from_pydata from sverchok.utils.field.rbf import mesh_field from sverchok.dependencies import scipy from sverchok.utils.dummy_nodes import add_dummy from sverchok.utils.math import rbf_functions if scipy is None: add_dummy('SvMeshSurfaceFieldNode', "Mesh Smoothed Surface Field", 'scipy') class SvMeshSurfaceFieldNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Mesh Surface Field Tooltip: Generate scalar field, defining a smoothed surface of the mesh """ bl_idname = 'SvMeshSurfaceFieldNode' bl_label = 'Mesh Smoothed Surface Field' bl_icon = 'OUTLINER_OB_EMPTY' function: EnumProperty(name="Function", items=rbf_functions, default='multiquadric', update=updateNode)
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvSolidEdgesNode', 'Solid Edges', 'FreeCAD') else: import numpy as np import bpy from bpy.props import BoolProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode from sverchok.utils.curve.freecad import SvSolidEdgeCurve class SvSolidEdgesNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Solid Edges Tooltip: Get Edges from Solid """ bl_idname = 'SvSolidEdgesNode' bl_label = 'Solid Edges (Curves)' bl_icon = 'EDGESEL' solid_catergory = "Outputs" flat_output: BoolProperty(name="Flat Output", default=False, update=updateNode) nurbs_output: BoolProperty( name="NURBS Output", description="Output curves in NURBS representation", default=False,
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator if FreeCAD is None: add_dummy('SvFCStdSpreadsheetNode', 'SvFCStdSpreadsheetNode', 'FreeCAD') else: F = FreeCAD import bpy from bpy.props import StringProperty, IntProperty, BoolProperty, EnumProperty, FloatProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode from sverchok.utils.logging import info class SvFCStdSpreadsheetOperator(bpy.types.Operator, SvGenericNodeLocator): bl_idname = "node.sv_fcstd_spreadsheet_operator" bl_label = "read/write freecad spreadsheet" bl_options = {'INTERNAL', 'REGISTER'} def execute(self, context): node = self.get_node(context) if not node: return {'CANCELLED'} node.edit_spreadsheet(node) updateNode(node,context) return {'FINISHED'}
import copy import numpy as np import bpy from bpy.props import FloatProperty, BoolVectorProperty, BoolProperty, IntProperty from mathutils import Matrix from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, numpy_full_list, has_element from sverchok.utils.nodes_mixins.recursive_nodes import SvRecursiveNode from sverchok.utils.dummy_nodes import add_dummy from sverchok_open3d.dependencies import open3d as o3d from sverchok_open3d.utils.triangle_mesh import triangle_mesh_viewer_map, calc_normals, calc_tris_areas if o3d is None: add_dummy('SvO3TriangleMeshPokeNode', 'O3D Triangle Mesh Poke', 'open3d') else: vec_3f = o3d.utility.Vector3dVector vec_2f = o3d.utility.Vector2dVector vec_3i = o3d.utility.Vector3iVector vec_1i = o3d.utility.IntVector def get_normals(triangle_mesh, np_verts, np_faces, mask): if triangle_mesh.has_triangle_normals(): normals = np.asarray(triangle_mesh.triangle_normals)[mask] else: normals = calc_normals([np_verts, np_faces[mask]], v_normals=False, output_numpy=True, as_array=True) return normals def spread_vertex_attrib(triangle_mesh, np_faces_masked, attribute):
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvSolidToMeshNode', 'Solid to Mesh', 'FreeCAD') else: import math import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, match_long_repeat as mlr import MeshPart class SvSolidToMeshNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Solid to Mesh Tooltip: Generate mesh from solid """ bl_idname = 'SvSolidToMeshNode' bl_label = 'Solid to Mesh' bl_icon = 'MESH_CUBE' sv_icon = 'SV_SOLID_TO_MESH' solid_catergory = "Outputs" replacement_nodes = [('SvSolidToMeshNodeMk2', None, None)] modes = [ ('Basic', 'Basic', '', 0), ('Standard', 'Standard', '', 1),
import numpy as np import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty from mathutils import Matrix from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import (updateNode, zip_long_repeat, ensure_nesting_level, get_data_nesting_level) from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy from sverchok.utils.surface.rbf import SvRbfSurface if scipy is None: add_dummy('SvExMinimalSurfaceNode', "Minimal Surface", 'scipy') else: from scipy.interpolate import Rbf class SvExMinimalSurfaceNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Minimal Surface Tooltip: Minimal Surface """ bl_idname = 'SvExMinimalSurfaceNode' bl_label = 'Minimal Surface' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_EX_MINSURFACE' def update_sockets(self, context): self.inputs['Matrix'].hide_safe = self.coord_mode == 'UV'
import numpy as np import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty import sverchok from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, ensure_nesting_level, get_data_nesting_level from sverchok.utils.logging import info, exception from sverchok.utils.curve import SvCurve from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy from sverchok.utils.manifolds import ortho_project_curve if scipy is None: add_dummy('SvExOrthoProjectCurveNode', "Ortho Project on Curve", 'scipy') else: class SvExOrthoProjectCurveNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Ortho Project Curve Tooltip: Find the orthogonal projection of the point onto the curve """ bl_idname = 'SvExOrthoProjectCurveNode' bl_label = 'Ortho Project on Curve' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_ORTHO_CURVE' samples: IntProperty(name="Init Resolution", default=5, min=3,
import numpy as np import bpy from bpy.props import BoolProperty from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import zip_long_repeat, ensure_nesting_level, get_data_nesting_level, updateNode from sverchok.utils.curve.core import SvCurve from sverchok.utils.surface.freecad import curves_to_face from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import FreeCAD if FreeCAD is None: add_dummy('SvSolidWireFaceNode', 'Face from Curves (Solid)', 'FreeCAD') else: import Part from FreeCAD import Base class SvSolidWireFaceNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Solid Face Wire Curve Tooltip: Make a Face of a Solid from it's boundary edges (wire) defined by one or several Curves """ bl_idname = 'SvSolidWireFaceNode' bl_label = "Face from Curves (Solid)" bl_icon = 'EDGESEL' sv_icon = 'SV_CURVES_FACE' solid_catergory = "Inputs"
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator if FreeCAD is None: add_dummy('SvWriteFCStdNode', 'SvWriteFCStdNode', 'FreeCAD') else: F = FreeCAD import bpy from bpy.props import StringProperty, BoolProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode # OLD throttled from sverchok.data_structure import updateNode, match_long_repeat # NEW throttle_and_update_node from sverchok.utils.logging import info class SvWriteFCStdOperator(bpy.types.Operator, SvGenericNodeLocator): bl_idname = "node.sv_write_fcstd_operator" bl_label = "write freecad file" bl_options = {'INTERNAL', 'REGISTER'} def execute(self, context): node = self.get_node(context) if not node: return {'CANCELLED'} node.write_FCStd(node) updateNode(node, context) return {'FINISHED'}
import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty import bmesh from mathutils import Matrix import sverchok from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, ensure_nesting_level, get_data_nesting_level from sverchok.utils.sv_mesh_utils import polygons_to_edges, mesh_join from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh, bmesh_from_pydata from sverchok.utils.logging import info, exception from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy if scipy is None: add_dummy('SvExDelaunay3DNode', "Delaunay 3D", 'scipy') else: from scipy.spatial import Delaunay class SvExDelaunay3DNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Delaunay 3D Tooltip: Generate 3D Delaunay Triangulation """ bl_idname = 'SvExDelaunay3DNode' bl_label = 'Delaunay 3D' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_VORONOI' join: BoolProperty(name="Join", default=False, update=updateNode)
import copy import numpy as np import bpy from bpy.props import BoolProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode from sverchok.utils.nodes_mixins.recursive_nodes import SvRecursiveNode from sverchok.utils.dummy_nodes import add_dummy from sverchok_open3d.dependencies import open3d as o3d from sverchok_open3d.utils.triangle_mesh import clean_doubled_faces, triangle_mesh_viewer_map if o3d is None: add_dummy('SvO3TriangleMeshCleanNode', 'Triangle Mesh Clean', 'open3d') else: class SvO3TriangleMeshCleanNode(bpy.types.Node, SverchCustomTreeNode, SvRecursiveNode): """ Triggers: Triangle Mesh Clean Tooltip: Open3d Triangle Mesh Clean """ bl_idname = 'SvO3TriangleMeshCleanNode' bl_label = 'Triangle Mesh Clean' bl_icon = 'MESH_DATA' viewer_map = triangle_mesh_viewer_map normalize_normals: BoolProperty(
from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from mathutils import Matrix from mathutils.bvhtree import BVHTree import sverchok from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import (updateNode, zip_long_repeat, ensure_nesting_level, throttle_and_update_node, repeat_last_for_length) from sverchok.utils.logging import info, exception from sverchok.utils.surface import SvSurface from sverchok.utils.manifolds import raycast_surface from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy if scipy is None: add_dummy('SvExRaycastSurfaceNode', "Raycast on Surface", 'scipy') else: class SvExRaycastSurfaceNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Raycast on Surface Tooltip: Raycast on Surface """ bl_idname = 'SvExRaycastSurfaceNode' bl_label = 'Raycast on Surface' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_SURFACE_RAYCAST' samples : IntProperty( name = "Init Resolution", default = 10,
import numpy as np import bpy from bpy.props import BoolProperty, EnumProperty, FloatVectorProperty, FloatProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import zip_long_repeat, ensure_nesting_level, updateNode from sverchok.utils.surface.core import SvSurface from sverchok.utils.surface.freecad import surface_to_freecad, is_solid_face_surface from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import FreeCAD if FreeCAD is None: add_dummy('SvSolidFaceSolidifyNode', 'Solidify Face (Solid)', 'FreeCAD') else: import Part from FreeCAD import Base class SvSolidFaceSolidifyNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Soldify Solid Face Offset Thickness Tooltip: Make a Solid by offsetting (adding thickness, solidifying) a Face of a Solid """ bl_idname = 'SvSolidFaceSolidifyNode' bl_label = 'Solidify Face (Solid)' bl_icon = 'EDGESEL' sv_icon = 'SV_SOLIDIFY_FACE' solid_catergory = "Operators"
import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from mathutils import Vector from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import updateNode, zip_long_repeat, fullList, ensure_nesting_level from sverchok.utils.logging import info, exception from sverchok.utils.sv_mesh_utils import polygons_to_edges from sverchok.utils.sv_bmesh_utils import bmesh_from_pydata, edge_data_from_bmesh_edges from sverchok.utils.geom import PlaneEquation, center from sverchok.utils.surface.nurbs import SvGeomdlSurface from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import geomdl if geomdl is None: add_dummy('SvExQuadsToNurbsNode', "Quads to NURBS", 'geomdl') else: from geomdl import NURBS, BSpline, knotvector class SvExQuadsToNurbsNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Quad to NURBS Tooltip: Make a smooth NURBS surface patch from each quad face """ bl_idname = 'SvExQuadsToNurbsNode' bl_label = 'Quads to NURBS' bl_icon = 'SURFACE_NSURFACE' degree_u: IntProperty(name="Degree U", min=2, max=4,
import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty, BoolVectorProperty from mathutils import Matrix import sverchok from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, fullList, match_long_repeat from sverchok.utils.nodes_mixins.recursive_nodes import SvRecursiveNode from sverchok.utils.dummy_nodes import add_dummy from sverchok_open3d.dependencies import open3d as o3d from sverchok_open3d.utils.triangle_mesh import triangle_mesh_viewer_map if o3d is None: add_dummy('SvO3TriangleMeshFromPointCloudNode', 'Triangle Mesh from Point Cloud', 'open3d') else: class SvO3TriangleMeshFromPointCloudNode(bpy.types.Node, SverchCustomTreeNode, SvRecursiveNode): """ Triggers: Mesh from Point Cloud Tooltip: Mesh from Point Cloud """ bl_idname = 'SvO3TriangleMeshFromPointCloudNode' bl_label = 'Triangle Mesh from Point Cloud' bl_icon = 'MESH_DATA' sv_icon = 'SV_RANDOM_NUM_GEN' viewer_map = triangle_mesh_viewer_map methods = [ ('ALPHA', "Alpha Shape", "Alpha Shape", 0), ('BALL_PIVOTING', "Ball Pivoting", "Ball Pivoting algorithm (Slow)", 1), ('POISSON', "Poisson", "Poisson Reconstruction (Fast)", 2),
import bpy from bpy.props import StringProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import flatten_data, map_recursive, zip_long_repeat, ensure_nesting_level, get_data_nesting_level from sverchok.utils.curve.core import SvCurve from sverchok.utils.surface.core import SvSurface from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvCompoundSolidNode', 'Compound Solid', 'FreeCAD') else: from FreeCAD import Part try: import Part as PartModule except ImportError: PartModule = Part from sverchok.utils.solid import to_solid class SvCompoundSolidNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Compound Solid Tooltip: Make Compound Solid object out of Solids, Curves and Surfaces """ bl_idname = 'SvCompoundSolidNode' bl_label = 'Compound Solid' bl_icon = 'STICKY_UVS_LOC' solid_catergory = "Outputs"
from math import pi import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from mathutils import Vector, Matrix from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import updateNode, zip_long_repeat, ensure_nesting_level from sverchok.utils.curve import SvCircle from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import circlify if circlify is None: add_dummy('SvExCirclifyNode', "Circlify", 'circlify') else: class SvExCirclifyNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Circlify Tooltip: Generate circles packed into a larger circle """ bl_idname = 'SvExCirclifyNode' bl_label = 'Circlify' bl_icon = 'MESH_CIRCLE' sv_icon = 'SV_CIRCLIFY' major_radius : FloatProperty( name = "Major Radius", default = 1.0, update = updateNode)
import numpy as np import bpy from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, ensure_nesting_level from sverchok.utils.curve import SvBezierCurve from sverchok.utils.geom import linear_approximation, Spline from sverchok.dependencies import scipy from sverchok.utils.dummy_nodes import add_dummy if scipy is None: add_dummy('SvExBezierCurveFitNode', "Approximate Bezier Curve", 'scipy') else: from scipy.optimize import curve_fit def init_guess(verts, npoints): approx = linear_approximation(verts) line = approx.most_similar_line() projections = line.projection_of_points(verts) m = projections.min(axis=0) M = projections.max(axis=0) return np.linspace(m, M, num=npoints) def goal(ts, *xs): n3 = len(xs) n = n3 // 3 control_points = np.array(xs).reshape((n,3)) curve = SvBezierCurve(control_points)
import bpy from bpy.props import BoolProperty, IntProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, zip_long_repeat, get_data_nesting_level, ensure_nesting_level from sverchok.utils.curve.nurbs import SvGeomdlCurve from sverchok.dependencies import geomdl from sverchok.utils.dummy_nodes import add_dummy if geomdl is None: add_dummy('SvExApproxNurbsCurveNode', "Approximate NURBS Curve", 'geomdl') else: from geomdl import fitting class SvExApproxNurbsCurveNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: NURBS Curve Tooltip: Approximate NURBS Curve """ bl_idname = 'SvExApproxNurbsCurveNode' bl_label = 'Approximate NURBS Curve' bl_icon = 'CURVE_NCURVE' replacement_nodes = [('SvApproxNurbsCurveMk2Node', None, None)] degree: IntProperty(name="Degree", min=2, max=6, default=3, update=updateNode)
import numpy as np import bpy from bpy.props import BoolProperty, EnumProperty, FloatVectorProperty, FloatProperty from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import zip_long_repeat, ensure_nesting_level, updateNode, repeat_last_for_length, get_data_nesting_level from sverchok.utils.surface.core import SvSurface from sverchok.utils.surface.freecad import SvSolidFaceSurface, surface_to_freecad, is_solid_face_surface from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import FreeCAD if FreeCAD is None: add_dummy('SvHollowSolidNode', 'Hollow Solid', 'FreeCAD') else: import Part from FreeCAD import Base class SvHollowSolidNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Hollow Solid Tooltip: Make a hollow solid shell out a solid body """ bl_idname = 'SvHollowSolidNode' bl_label = 'Hollow Solid' bl_icon = 'MOD_THICKNESS' sv_icon = 'SV_HOLLOW_SOLID' solid_catergory = "Operators"
from sverchok.utils.logging import info, exception from sverchok.utils.dummy_nodes import add_dummy from sverchok.dependencies import scipy def to_radius(r, v, c): x, y, z = v x0, y0, z0 = c v = x - x0, y - y0, z - z0 rho, phi, theta = to_spherical(v, "radians") x, y, z = from_spherical(r, phi, theta, "radians") return x + x0, y + y0, z + z0 if scipy is None: add_dummy('SvExVoronoiSphereNode', "Voronoi Sphere", 'scipy') else: from scipy.spatial import SphericalVoronoi class SvExVoronoiSphereNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Voronoi Sphere Tooltip: Generate Voronoi diagram on the surface of the sphere """ bl_idname = 'SvExVoronoiSphereNode' bl_label = 'Voronoi Sphere' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_VORONOI' radius: FloatProperty(name="Radius", default=1.0,
import bpy from bpy.props import StringProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import flatten_data, map_recursive from sverchok.utils.curve.core import SvCurve from sverchok.utils.surface.core import SvSurface from sverchok.utils.logging import debug from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvExportSolidNode', 'Export Solid', 'FreeCAD') else: from FreeCAD import Part from sverchok.utils.solid import to_solid class SvExportSolidOperator(bpy.types.Operator): bl_idname = "node.sv_export_solid_mk2" bl_label = "Export Solid" bl_options = {'INTERNAL', 'REGISTER'} idtree: StringProperty(default='') idname: StringProperty(default='') def execute(self, context): tree = bpy.data.node_groups[self.idtree]
import bpy from bpy.props import FloatProperty, BoolProperty, EnumProperty, IntProperty from sverchok.core.sv_custom_exceptions import SvNoDataError from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode, ensure_nesting_level, zip_long_repeat, repeat_last_for_length from sverchok.utils.field.scalar import SvScalarField from sverchok.utils.field.probe import field_random_probe from sverchok.utils.surface.populate import populate_surface from sverchok.utils.surface.freecad import SvSolidFaceSurface from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvPopulateSolidNode', 'Populate Solid', 'FreeCAD') else: from FreeCAD import Base import Part class SvPopulateSolidNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Populate Solid Tooltip: Generate random points within solid body """ bl_idname = 'SvPopulateSolidNode' bl_label = 'Populate Solid' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_POPULATE_SOLID'
# recorded in the version control history of the file, available from # its original location https://github.com/nortikin/sverchok/commit/master # # SPDX-License-Identifier: GPL3 # License-Filename: LICENSE import bpy from bpy.props import BoolProperty, FloatProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode, throttled from sverchok.data_structure import updateNode, zip_long_repeat, map_recursive from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy if FreeCAD is None: add_dummy('SvSolidAreaNode', 'Solid Area', 'FreeCAD') else: import Part class SvSolidAreaNode(bpy.types.Node, SverchCustomTreeNode): """ Triggers: Area Solid Tooltip: Calculate total area of all faces of a Solid object """ bl_idname = 'SvSolidAreaNode' bl_label = 'Solid Area' bl_icon = 'OUTLINER_OB_EMPTY' sv_icon = 'SV_AREA' solid_catergory = "Operators"
from sverchok.dependencies import FreeCAD from sverchok.utils.dummy_nodes import add_dummy from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator if FreeCAD is None: add_dummy('SvReadFCStdNode', 'SvReadFCStdNode', 'FreeCAD') else: F = FreeCAD import bpy from bpy.props import StringProperty, BoolProperty, EnumProperty from sverchok.node_tree import SverchCustomTreeNode from sverchok.data_structure import updateNode from sverchok.utils.logging import info class SvReadFCStdOperator(bpy.types.Operator, SvGenericNodeLocator): bl_idname = "node.sv_read_fcstd_operator" bl_label = "read freecad file" bl_options = {'INTERNAL', 'REGISTER'} def execute(self, context): node = self.get_node(context) if not node: return {'CANCELLED'} if not any(socket.is_linked for socket in node.outputs): return {'CANCELLED'} if not node.inputs['File Path'].is_linked: return {'CANCELLED'}