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:
authorAlan Odom <clockmender@icloud.com>2020-05-12 00:33:59 +0300
committerRune Morling <ermo.blender.org@spammesenseless.net>2020-05-12 01:25:54 +0300
commit590710871b7b2e1f7f50bb622f1409b794ad38c2 (patch)
treea63d317e7a0d38db94218dd697ab3244c442b41b /precision_drawing_tools/__init__.py
parent1f161da140806c8ac441c7108973036307800d81 (diff)
PDT: Fix Library path issue, Add Trig Waves Functions
An issue occurred if you opened Blender with a new file where the Parts Library path pointed relative to the Blender App, not the working directory, so was not found. The Parts Library file is now moved to the Parts Library Menu, so must be set for new .blend files. Existing .blend files are not affected by this change. Error message altered to reflect the option of having this Parts Library live anywhere. New Feature: Add Trig Waves Functions Requires the user to select an existing object in the Trig menu.
Diffstat (limited to 'precision_drawing_tools/__init__.py')
-rw-r--r--precision_drawing_tools/__init__.py146
1 files changed, 91 insertions, 55 deletions
diff --git a/precision_drawing_tools/__init__.py b/precision_drawing_tools/__init__.py
index c2fbf647..62de72b6 100644
--- a/precision_drawing_tools/__init__.py
+++ b/precision_drawing_tools/__init__.py
@@ -29,8 +29,8 @@
bl_info = {
"name": "Precision Drawing Tools (PDT)",
"author": "Alan Odom (Clockmender), Rune Morling (ermo)",
- "version": (1, 3, 0),
- "blender": (2, 82, 0),
+ "version": (1, 4, 0),
+ "blender": (2, 83, 0),
"location": "View3D > UI > PDT",
"description": "Precision Drawing Tools for Acccurate Modelling",
"warning": "",
@@ -54,6 +54,7 @@ if "bpy" in locals():
importlib.reload(pdt_bix)
importlib.reload(pdt_etof)
importlib.reload(pdt_tangent)
+ importlib.reload(pdt_trig_waves)
else:
from . import pdt_design
from . import pdt_pivot_point
@@ -64,11 +65,17 @@ else:
from . import pdt_bix
from . import pdt_etof
from . import pdt_tangent
+ from . import pdt_trig_waves
import bpy
import os
from pathlib import Path
-from bpy.types import AddonPreferences, PropertyGroup, Scene, WindowManager
+from bpy.types import (
+ AddonPreferences,
+ PropertyGroup, Scene,
+ WindowManager,
+ Object,
+)
from bpy.props import (
BoolProperty,
CollectionProperty,
@@ -130,6 +137,39 @@ _pdt_col_items = []
_pdt_mat_items = []
+class PDTPreferences(AddonPreferences):
+ # This must match the addon name, use '__package__'
+ # when defining this in a submodule of a python package.
+
+ bl_idname = __name__
+
+ debug: BoolProperty(
+ name="Enable console debug output from PDT scripts",
+ default=False,
+ description="NOTE: Does not enable debugging globally in Blender (only in PDT scripts)",
+ )
+
+ pdt_ui_width: IntProperty(
+ name="UI Width Cut-off",
+ default=350,
+ description="Cutoff width for shrinking items per line in menus",
+ )
+
+ pdt_input_round: IntProperty(
+ name="Input Rounding", default=5, description="Rounding Factor for Inputs"
+ )
+
+ def draw(self, context):
+ layout = self.layout
+
+ box = layout.box()
+ row1 = box.row()
+ row2 = box.row()
+ row1.prop(self, "debug")
+ row2.prop(self, "pdt_ui_width")
+ row2.prop(self, "pdt_input_round")
+
+
def enumlist_objects(self, context):
"""Populate Objects List from Parts Library.
@@ -145,8 +185,8 @@ def enumlist_objects(self, context):
scene = context.scene
pg = scene.pdt_pg
- file_path = context.preferences.addons[__package__].preferences.pdt_library_path
- path = Path(file_path)
+ file_path = pg.pdt_library_path
+ path = Path(bpy.path.abspath(file_path))
_pdt_obj_items.clear()
if path.is_file() and ".blend" in str(path):
@@ -158,7 +198,7 @@ def enumlist_objects(self, context):
for object_name in object_names:
_pdt_obj_items.append((object_name, object_name, ""))
else:
- _pdt_obj_items.append(("MISSING", "Library is Missing", ""))
+ _pdt_obj_items.append(("MISSING", "Library Not Set", ""))
return _pdt_obj_items
@@ -177,8 +217,8 @@ def enumlist_collections(self, context):
scene = context.scene
pg = scene.pdt_pg
- file_path = context.preferences.addons[__package__].preferences.pdt_library_path
- path = Path(file_path)
+ file_path = pg.pdt_library_path
+ path = Path(bpy.path.abspath(file_path))
_pdt_col_items.clear()
if path.is_file() and ".blend" in str(path):
@@ -192,7 +232,7 @@ def enumlist_collections(self, context):
for object_name in object_names:
_pdt_col_items.append((object_name, object_name, ""))
else:
- _pdt_col_items.append(("MISSING", "Library is Missing", ""))
+ _pdt_col_items.append(("MISSING", "Library Not Set", ""))
return _pdt_col_items
@@ -211,8 +251,8 @@ def enumlist_materials(self, context):
scene = context.scene
pg = scene.pdt_pg
- file_path = context.preferences.addons[__package__].preferences.pdt_library_path
- path = Path(file_path)
+ file_path = pg.pdt_library_path
+ path = Path(bpy.path.abspath(file_path))
_pdt_mat_items.clear()
if path.is_file() and ".blend" in str(path):
@@ -226,13 +266,21 @@ def enumlist_materials(self, context):
for object_name in object_names:
_pdt_mat_items.append((object_name, object_name, ""))
else:
- _pdt_mat_items.append(("MISSING", "Library is Missing", ""))
+ _pdt_mat_items.append(("MISSING", "Library Not Set", ""))
return _pdt_mat_items
class PDTSceneProperties(PropertyGroup):
"""Contains all PDT related properties."""
+ pdt_library_path: StringProperty(
+ name="Library",
+ default="",
+ description="Parts Library File",
+ maxlen=1024,
+ subtype="FILE_PATH",
+ )
+
object_search_string: StringProperty(name="Search", default="", description=PDT_DES_LIBSER)
collection_search_string: StringProperty(name="Search", default="", description=PDT_DES_LIBSER)
material_search_string: StringProperty(name="Search", default="", description=PDT_DES_LIBSER)
@@ -429,48 +477,34 @@ class PDTSceneProperties(PropertyGroup):
description=PDT_DES_TANMODE,
)
-
-class PDTPreferences(AddonPreferences):
- # This must match the addon name, use '__package__'
- # when defining this in a submodule of a python package.
-
- bl_idname = __name__
-
- pdt_library_path: StringProperty(
- name="Parts Library",
- default="",
- description="Parts Library File",
- maxlen=1024,
- subtype="FILE_PATH",
- )
-
- debug: BoolProperty(
- name="Enable console debug output from PDT scripts",
- default=False,
- description="NOTE: Does not enable debugging globally in Blender (only in PDT scripts)",
- )
-
- pdt_ui_width: IntProperty(
- name="UI Width Cut-off",
- default=350,
- description="Cutoff width for shrinking items per line in menus",
- )
-
- pdt_input_round: IntProperty(
- name="Input Rounding", default=5, description="Rounding Factor for Inputs"
- )
-
- def draw(self, context):
- layout = self.layout
-
- box = layout.box()
- row1 = box.row()
- row2 = box.row()
- row3 = box.row()
- row1.prop(self, "debug")
- row2.prop(self, "pdt_ui_width")
- row2.prop(self, "pdt_input_round")
- row3.prop(self, "pdt_library_path")
+ # For Trig Waves
+ trig_type : EnumProperty(
+ items=(
+ ("sin", "Sine", "Sine Wave"),
+ ("cos", "Cosine", "Cosine Wave"),
+ ("tan", "Tangent", "Tangent Wave"),
+ ),
+ name="Wave Form",
+ default="sin",
+ description="Trig. Wave Form",
+ )
+ trig_cycles : IntProperty(name="Cycles #", default=1, min=1,
+ description="1 Cycle = 180 Degrees")
+ trig_amp : FloatProperty(name="Amplitude", default=1, min=0.01,
+ description="Maximum Height of 1 Cycle (forms Basis for Tangents)")
+ trig_len : FloatProperty(name="Cycle Length", default=2, min=0.02,
+ description="Length in Blender Units of 1 Cycle")
+ trig_obj : PointerProperty(name="Object", type=Object)
+ trig_del : BoolProperty(name="Empty Object", default=False,
+ description="Delete ALL Vertices in Object First")
+ trig_res : IntProperty(name="Resolution", default=18, min=4, max=72,
+ description="Number of Vertices per Cycle (180 Degrees)")
+ trig_tanmax : FloatProperty(name="Tangent Max", default=10, min=0.1,
+ description="Maximum Permitted Tangent Value")
+ trig_off : FloatVectorProperty(name="Start Loc", default=(0,0,0),
+ description="Location in World Space for Origin of Wave")
+ trig_abs : BoolProperty(name="Absolute", default=False,
+ description="Use Absolute Values Only")
# List of All Classes in the Add-on to register
@@ -479,8 +513,8 @@ class PDTPreferences(AddonPreferences):
# (and unloaded last)
#
classes = (
- PDTSceneProperties,
PDTPreferences,
+ PDTSceneProperties,
pdt_bix.PDT_OT_LineOnBisection,
pdt_command.PDT_OT_CommandReRun,
pdt_design.PDT_OT_PlacementAbs,
@@ -507,6 +541,7 @@ classes = (
pdt_menus.PDT_PT_PanelViewControl,
pdt_menus.PDT_PT_PanelPivotPoint,
pdt_menus.PDT_PT_PanelPartsLibrary,
+ pdt_menus.PDT_PT_PanelTrig,
pdt_pivot_point.PDT_OT_ModalDrawOperator,
pdt_pivot_point.PDT_OT_ViewPlaneRotate,
pdt_pivot_point.PDT_OT_ViewPlaneScale,
@@ -523,6 +558,7 @@ classes = (
pdt_tangent.PDT_OT_TangentSet3,
pdt_tangent.PDT_OT_TangentSet4,
pdt_tangent.PDT_OT_TangentExpandMenu,
+ pdt_trig_waves.PDT_OT_WaveGenerator,
pdt_view.PDT_OT_ViewRot,
pdt_view.PDT_OT_ViewRotL,
pdt_view.PDT_OT_ViewRotR,