Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'curve_tools/util.py')
-rw-r--r--curve_tools/util.py178
1 files changed, 178 insertions, 0 deletions
diff --git a/curve_tools/util.py b/curve_tools/util.py
new file mode 100644
index 00000000..30596697
--- /dev/null
+++ b/curve_tools/util.py
@@ -0,0 +1,178 @@
+import bpy
+from mathutils import *
+
+
+def GetSelectedCurves():
+ rvList = []
+
+ for obj in bpy.context.selected_objects:
+ try:
+ if obj.type == "CURVE": rvList.append(obj)
+ except:
+ pass
+
+ return rvList
+
+
+def GetSelectedMeshes():
+ rvList = []
+
+ for obj in bpy.context.selected_objects:
+ try:
+ if obj.type == "MESH": rvList.append(obj)
+ except:
+ pass
+
+ return rvList
+
+
+def Selected1Curve():
+ try:
+ if len(GetSelectedCurves()) == 1:
+ return (bpy.context.active_object.type == "CURVE")
+ except:
+ pass
+
+ return False
+
+
+def Selected1Mesh():
+ try:
+ if len(GetSelectedMeshes()) == 1:
+ return (bpy.context.active_object.type == "MESH")
+ except:
+ pass
+
+ return False
+
+
+def Selected1SingleSplineCurve():
+ try:
+ if Selected1Curve():
+ return (len(bpy.context.active_object.data.splines) == 1)
+ except:
+ pass
+
+ return False
+
+
+def Selected2Curves():
+ try:
+ if len(GetSelectedCurves()) == 2:
+ return (bpy.context.active_object.type == "CURVE")
+ except:
+ pass
+
+ return False
+
+
+def Selected3Curves():
+ try:
+ if len(GetSelectedCurves()) == 3:
+ return (bpy.context.active_object.type == "CURVE")
+ except:
+ pass
+
+ return False
+
+
+def Selected1OrMoreCurves():
+ try:
+ if len(GetSelectedCurves()) > 0:
+ return (bpy.context.active_object.type == "CURVE")
+ except:
+ pass
+
+ return False
+
+def Selected2OrMoreCurves():
+ try:
+ if len(GetSelectedCurves()) > 1:
+ return (bpy.context.active_object.type == "CURVE")
+ except:
+ pass
+
+ return False
+
+
+def Selected1OrMoreMesh():
+ try:
+ if len(GetSelectedMeshes()) > 0:
+ return (bpy.context.active_object.type == "MESH")
+ except:
+ pass
+
+ return False
+
+
+def GetToolsRegion():
+ for area in bpy.context.screen.areas:
+ if area.type == 'VIEW_3D':
+ for region in area.regions:
+ if region.type == 'TOOLS': return region
+
+ return None
+
+
+def GetFirstRegionView3D():
+ for area in bpy.context.screen.areas:
+ if area.type == 'VIEW_3D':
+ return area.spaces[0].region_3d
+
+ return None
+
+
+def LogFirstRegionView3D():
+ print("LogFirstRegionView3D()")
+ regionView3D = GetFirstRegionView3D()
+ if regionView3D is None:
+ print("--", "ERROR:", "regionView3D is None")
+ return
+
+ print("--", "view_matrix:")
+ print("--", "--", regionView3D.view_matrix)
+ print("--", "view_location:")
+ print("--", "--", regionView3D.view_location)
+
+
+class Intersection:
+ # listIP: list of BezierSplineIntersectionPoint
+ # return: list of splines
+ @staticmethod
+ def GetBezierSplines(listIP):
+ rvList = []
+
+ for ip in listIP:
+ if not (ip.spline in rvList): rvList.append(ip.spline)
+
+ return rvList
+
+
+ # listIP: list of BezierSplineIntersectionPoint
+ # return: list of segments
+ @staticmethod
+ def GetBezierSegments(listIP, spline):
+ rvList = []
+
+ for ip in listIP:
+ if not ip.spline is spline: continue
+
+ segIP = ip.bezierSegmentIntersectionPoint
+ if not (segIP.segment in rvList): rvList.append(segIP.segment)
+
+ return rvList
+
+
+ # listIP: list of BezierSplineIntersectionPoint
+ # return: list of floats (not necessarily ordered)
+ @staticmethod
+ def GetBezierSegmentParameters(listIP, segment):
+ rvList = []
+
+ for ip in listIP:
+ segIP = ip.bezierSegmentIntersectionPoint
+ if not segIP.segment is segment: continue
+
+ rvList.append(segIP.parameter)
+
+ return rvList