1 # ##### BEGIN GPL LICENSE BLOCK #####
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # ##### END GPL LICENSE BLOCK #####
21 # ----------------------------------------------------------
22 # Author: Antonio Vazquez (antonioya)
23 # ----------------------------------------------------------
25 # ----------------------------------------------
27 # ----------------------------------------------
30 "author": "Antonio Vazquez (antonioya)",
31 "location": "View3D > Tools Panel /Properties panel",
34 "description": "Tools for measuring objects.",
35 "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/"
36 "Py/Scripts/3D_interaction/Measureit",
41 # ----------------------------------------------
43 # ----------------------------------------------
47 importlib
.reload(measureit_main
)
48 # print("measureit: Reloaded multifiles")
50 from . import measureit_main
51 # print("measureit: Imported multifiles")
53 # noinspection PyUnresolvedReferences
55 from bpy
.types
import (
60 from bpy
.props
import (
69 # --------------------------------------------------------------
70 # Register all operators and panels
71 # --------------------------------------------------------------
73 # Add-ons Preferences Update Panel
75 # Define Panel classes for updating
77 measureit_main
.MeasureitEditPanel
,
78 measureit_main
.MeasureitMainPanel
,
79 measureit_main
.MeasureitConfPanel
,
80 measureit_main
.MeasureitRenderPanel
,
84 def update_panel(self
, context
):
85 message
= "MeasureIt: Updating Panel locations has failed"
88 if "bl_rna" in panel
.__dict
__:
89 bpy
.utils
.unregister_class(panel
)
92 panel
.bl_category
= context
.user_preferences
.addons
[__name__
].preferences
.category
93 bpy
.utils
.register_class(panel
)
95 except Exception as e
:
96 print("\n[{}]\n{}\n\nError:\n{}".format(__name__
, message
, e
))
100 class Measure_Pref(AddonPreferences
):
101 # this must match the addon name, use '__package__'
102 # when defining this in a submodule of a python package.
105 category
= StringProperty(
107 description
="Choose a name for the category of the panel",
112 def draw(self
, context
):
117 col
.label(text
="Tab Category:")
118 col
.prop(self
, "category", text
="")
122 # noinspection PyUnusedLocal
124 bpy
.utils
.register_class(measureit_main
.RunHintDisplayButton
)
125 bpy
.utils
.register_class(measureit_main
.AddSegmentButton
)
126 bpy
.utils
.register_class(measureit_main
.AddAreaButton
)
127 bpy
.utils
.register_class(measureit_main
.AddSegmentOrtoButton
)
128 bpy
.utils
.register_class(measureit_main
.AddAngleButton
)
129 bpy
.utils
.register_class(measureit_main
.AddArcButton
)
130 bpy
.utils
.register_class(measureit_main
.AddLabelButton
)
131 bpy
.utils
.register_class(measureit_main
.AddNoteButton
)
132 bpy
.utils
.register_class(measureit_main
.AddLinkButton
)
133 bpy
.utils
.register_class(measureit_main
.AddOriginButton
)
134 bpy
.utils
.register_class(measureit_main
.DeleteSegmentButton
)
135 bpy
.utils
.register_class(measureit_main
.DeleteAllSegmentButton
)
136 bpy
.utils
.register_class(measureit_main
.DeleteAllSumButton
)
137 bpy
.utils
.register_class(measureit_main
.MeasureitEditPanel
)
138 bpy
.utils
.register_class(measureit_main
.MeasureitMainPanel
)
139 bpy
.utils
.register_class(measureit_main
.MeasureitConfPanel
)
140 bpy
.utils
.register_class(measureit_main
.MeasureitRenderPanel
)
141 bpy
.utils
.register_class(measureit_main
.RenderSegmentButton
)
142 bpy
.utils
.register_class(measureit_main
.ExpandAllSegmentButton
)
143 bpy
.utils
.register_class(measureit_main
.CollapseAllSegmentButton
)
144 bpy
.utils
.register_class(Measure_Pref
)
145 update_panel(None, bpy
.context
)
147 Scene
.measureit_default_color
= FloatVectorProperty(
148 name
="Default color",
149 description
="Default Color",
150 default
=(0.173, 0.545, 1.0, 1.0),
155 Scene
.measureit_font_size
= IntProperty(name
="Text Size",
156 description
="Default text size",
157 default
=14, min=10, max=150)
158 Scene
.measureit_hint_space
= FloatProperty(name
='Separation', min=0, max=100, default
=0.1,
160 description
="Default distance to display measure")
161 Scene
.measureit_gl_ghost
= BoolProperty(name
="All",
162 description
="Display measures for all objects,"
163 " not only selected",
165 Scene
.measureit_gl_txt
= StringProperty(name
="Text", maxlen
=256,
166 description
="Short description (use | for line break)")
168 Scene
.measureit_gl_precision
= IntProperty(name
='Precision', min=0, max=5, default
=2,
169 description
="Number of decimal precision")
170 Scene
.measureit_gl_show_d
= BoolProperty(name
="ShowDist",
171 description
="Display distances",
173 Scene
.measureit_gl_show_n
= BoolProperty(name
="ShowName",
174 description
="Display texts",
176 Scene
.measureit_scale
= BoolProperty(name
="Scale",
177 description
="Use scale factor",
179 Scene
.measureit_scale_factor
= FloatProperty(name
='Factor', min=0.001, max=9999999,
182 description
="Scale factor 1:x")
183 Scene
.measureit_scale_color
= FloatVectorProperty(name
="Scale color",
184 description
="Scale Color",
185 default
=(1, 1, 0, 1.0),
190 Scene
.measureit_scale_font
= IntProperty(name
="Font",
191 description
="Text size",
192 default
=14, min=10, max=150)
193 Scene
.measureit_scale_pos_x
= IntProperty(name
="X Position",
194 description
="Margin on the X axis",
198 Scene
.measureit_scale_pos_y
= IntProperty(name
="Y Position",
199 description
="Margin on the Y axis",
203 Scene
.measureit_gl_scaletxt
= StringProperty(name
="ScaleText", maxlen
=48,
204 description
="Scale title",
206 Scene
.measureit_scale_precision
= IntProperty(name
='Precision', min=0, max=5, default
=0,
207 description
="Number of decimal precision")
208 Scene
.measureit_ovr
= BoolProperty(name
="Override",
209 description
="Override colors and fonts",
211 Scene
.measureit_ovr_font
= IntProperty(name
="Font",
212 description
="Override text size",
213 default
=14, min=10, max=150)
214 Scene
.measureit_ovr_color
= FloatVectorProperty(name
="Override color",
215 description
="Override Color",
216 default
=(1, 0, 0, 1.0),
221 Scene
.measureit_ovr_width
= IntProperty(name
='Override width', min=1, max=10, default
=1,
222 description
='override line width')
224 Scene
.measureit_ovr_font_rotation
= IntProperty(name
='Rotate', min=0, max=360, default
=0,
225 description
="Text rotation in degrees")
226 Scene
.measureit_ovr_font_align
= EnumProperty(items
=(('L', "Left Align", "Use current render"),
227 ('C', "Center Align", ""),
228 ('R', "Right Align", "")),
230 description
="Set Font Alignment")
231 Scene
.measureit_units
= EnumProperty(items
=(('1', "Automatic", "Use scene units"),
233 ('3', "Centimeters", ""),
234 ('4', "Milimiters", ""),
236 ('6', "Inches", "")),
240 Scene
.measureit_hide_units
= BoolProperty(name
="hide_units",
241 description
="Do not display unit of measurement on viewport",
243 Scene
.measureit_render
= BoolProperty(name
="Render",
244 description
="Save an image with measures over"
247 Scene
.measureit_render_type
= EnumProperty(items
=(('1', "*Current", "Use current render"),
249 ('3', "Animation OpenGL", ""),
251 ('5', "Animation", "")),
253 description
="Type of render image")
254 Scene
.measureit_sum
= EnumProperty(items
=(('99', "-", "Select a group for sum"),
282 description
="Add segment length in selected group")
284 Scene
.measureit_rf
= BoolProperty(name
="render_frame",
285 description
="Add a frame in render output",
287 Scene
.measureit_rf_color
= FloatVectorProperty(name
="Fcolor",
288 description
="Frame Color",
289 default
=(0.9, 0.9, 0.9, 1.0),
294 Scene
.measureit_rf_border
= IntProperty(name
='fborder ', min=1, max=1000, default
=10,
295 description
='Frame space from border')
296 Scene
.measureit_rf_line
= IntProperty(name
='fline', min=1, max=10, default
=1,
297 description
='Line width for border')
299 Scene
.measureit_glarrow_a
= EnumProperty(items
=(('99', "--", "No arrow"),
301 "The point of the arrow are lines"),
303 "The point of the arrow is triangle"),
305 "The point of the arrow is a T")),
307 description
="Add arrows to point A")
308 Scene
.measureit_glarrow_b
= EnumProperty(items
=(('99', "--", "No arrow"),
310 "The point of the arrow are lines"),
312 "The point of the arrow is triangle"),
314 "The point of the arrow is a T")),
316 description
="Add arrows to point B")
317 Scene
.measureit_glarrow_s
= IntProperty(name
="Size",
318 description
="Arrow size",
319 default
=15, min=6, max=500)
321 Scene
.measureit_debug
= BoolProperty(name
="Debug",
322 description
="Display information for debuging"
323 " (expand/collapse for enabling or disabling)"
324 " this information is only renderered for "
327 Scene
.measureit_debug_select
= BoolProperty(name
="Selected",
328 description
="Display information "
329 "only for selected items",
331 Scene
.measureit_debug_vertices
= BoolProperty(name
="Vertices",
332 description
="Display vertex index number",
334 Scene
.measureit_debug_objects
= BoolProperty(name
="Objects",
335 description
="Display object scene index number",
337 Scene
.measureit_debug_vert_loc
= BoolProperty(name
="Location",
338 description
="Display vertex location",
340 Scene
.measureit_debug_object_loc
= BoolProperty(name
="Location",
341 description
="Display object location",
343 Scene
.measureit_debug_edges
= BoolProperty(name
="Edges",
344 description
="Display edge index number",
346 Scene
.measureit_debug_faces
= BoolProperty(name
="Faces",
347 description
="Display face index number",
349 Scene
.measureit_debug_normals
= BoolProperty(name
="Normals",
350 description
="Display face normal "
351 "vector and creation order",
353 Scene
.measureit_debug_normal_details
= BoolProperty(name
="Details",
354 description
="Display face normal details",
356 Scene
.measureit_debug_font
= IntProperty(name
="Font",
357 description
="Debug text size",
358 default
=14, min=10, max=150)
359 Scene
.measureit_debug_vert_color
= FloatVectorProperty(name
="Debug color",
360 description
="Debug Color",
361 default
=(1, 0, 0, 1.0),
366 Scene
.measureit_debug_face_color
= FloatVectorProperty(name
="Debug face color",
367 description
="Debug face Color",
368 default
=(0, 1, 0, 1.0),
373 Scene
.measureit_debug_norm_color
= FloatVectorProperty(name
="Debug vector color",
374 description
="Debug vector Color",
375 default
=(1.0, 1.0, 0.1, 1.0),
380 Scene
.measureit_debug_edge_color
= FloatVectorProperty(name
="Debug vector color",
381 description
="Debug vector Color",
382 default
=(0.1, 1.0, 1.0, 1.0),
387 Scene
.measureit_debug_obj_color
= FloatVectorProperty(name
="Debug vector color",
388 description
="Debug vector Color",
389 default
=(1.0, 1.0, 1.0, 1.0),
394 Scene
.measureit_debug_normal_size
= FloatProperty(name
='Len', min=0.001, max=9,
397 description
="Normal arrow size")
398 Scene
.measureit_debug_width
= IntProperty(name
='Debug width', min=1, max=10, default
=2,
399 description
='Vector line thickness')
400 Scene
.measureit_debug_precision
= IntProperty(name
='Precision', min=0, max=5, default
=1,
401 description
="Number of decimal precision")
402 Scene
.measureit_debug_vert_loc_toggle
= EnumProperty(items
=(('1', "Local",
403 "Uses local coordinates"),
405 "Uses global coordinates")),
407 description
="Choose coordinate system")
408 Scene
.measureit_font_rotation
= IntProperty(name
='Rotate', min=0, max=360, default
=0,
409 description
="Default text rotation in degrees")
410 Scene
.measureit_font_align
= EnumProperty(items
=(('L', "Left Align", "Use current render"),
411 ('C', "Center Align", ""),
412 ('R', "Right Align", "")),
414 description
="Set Font Alignment")
418 # register internal property
419 wm
.measureit_run_opengl
= BoolProperty(default
=False)
423 bpy
.utils
.unregister_class(measureit_main
.RunHintDisplayButton
)
424 bpy
.utils
.unregister_class(measureit_main
.AddSegmentButton
)
425 bpy
.utils
.unregister_class(measureit_main
.AddAreaButton
)
426 bpy
.utils
.unregister_class(measureit_main
.AddSegmentOrtoButton
)
427 bpy
.utils
.unregister_class(measureit_main
.AddAngleButton
)
428 bpy
.utils
.unregister_class(measureit_main
.AddArcButton
)
429 bpy
.utils
.unregister_class(measureit_main
.AddLabelButton
)
430 bpy
.utils
.unregister_class(measureit_main
.AddNoteButton
)
431 bpy
.utils
.unregister_class(measureit_main
.AddLinkButton
)
432 bpy
.utils
.unregister_class(measureit_main
.AddOriginButton
)
433 bpy
.utils
.unregister_class(measureit_main
.DeleteSegmentButton
)
434 bpy
.utils
.unregister_class(measureit_main
.DeleteAllSegmentButton
)
435 bpy
.utils
.unregister_class(measureit_main
.DeleteAllSumButton
)
436 bpy
.utils
.unregister_class(measureit_main
.MeasureitEditPanel
)
437 bpy
.utils
.unregister_class(measureit_main
.MeasureitMainPanel
)
438 bpy
.utils
.unregister_class(measureit_main
.MeasureitConfPanel
)
439 bpy
.utils
.unregister_class(measureit_main
.MeasureitRenderPanel
)
440 bpy
.utils
.unregister_class(measureit_main
.RenderSegmentButton
)
441 bpy
.utils
.unregister_class(measureit_main
.ExpandAllSegmentButton
)
442 bpy
.utils
.unregister_class(measureit_main
.CollapseAllSegmentButton
)
443 bpy
.utils
.unregister_class(Measure_Pref
)
446 del Scene
.measureit_default_color
447 del Scene
.measureit_font_size
448 del Scene
.measureit_hint_space
449 del Scene
.measureit_gl_ghost
450 del Scene
.measureit_gl_txt
451 del Scene
.measureit_gl_precision
452 del Scene
.measureit_gl_show_d
453 del Scene
.measureit_gl_show_n
454 del Scene
.measureit_scale
455 del Scene
.measureit_scale_factor
456 del Scene
.measureit_scale_color
457 del Scene
.measureit_scale_font
458 del Scene
.measureit_scale_pos_x
459 del Scene
.measureit_scale_pos_y
460 del Scene
.measureit_gl_scaletxt
461 del Scene
.measureit_scale_precision
462 del Scene
.measureit_ovr
463 del Scene
.measureit_ovr_font
464 del Scene
.measureit_ovr_color
465 del Scene
.measureit_ovr_width
466 del Scene
.measureit_ovr_font_rotation
467 del Scene
.measureit_ovr_font_align
468 del Scene
.measureit_units
469 del Scene
.measureit_hide_units
470 del Scene
.measureit_render
471 del Scene
.measureit_render_type
472 del Scene
.measureit_sum
473 del Scene
.measureit_rf
474 del Scene
.measureit_rf_color
475 del Scene
.measureit_rf_border
476 del Scene
.measureit_rf_line
477 del Scene
.measureit_glarrow_a
478 del Scene
.measureit_glarrow_b
479 del Scene
.measureit_glarrow_s
480 del Scene
.measureit_debug
481 del Scene
.measureit_debug_select
482 del Scene
.measureit_debug_vertices
483 del Scene
.measureit_debug_objects
484 del Scene
.measureit_debug_edges
485 del Scene
.measureit_debug_faces
486 del Scene
.measureit_debug_normals
487 del Scene
.measureit_debug_normal_details
488 del Scene
.measureit_debug_font
489 del Scene
.measureit_debug_vert_color
490 del Scene
.measureit_debug_face_color
491 del Scene
.measureit_debug_norm_color
492 del Scene
.measureit_debug_edge_color
493 del Scene
.measureit_debug_obj_color
494 del Scene
.measureit_debug_normal_size
495 del Scene
.measureit_debug_width
496 del Scene
.measureit_debug_precision
497 del Scene
.measureit_debug_vert_loc
498 del Scene
.measureit_debug_object_loc
499 del Scene
.measureit_debug_vert_loc_toggle
500 del Scene
.measureit_font_rotation
501 del Scene
.measureit_font_align
504 measureit_main
.RunHintDisplayButton
.handle_remove(measureit_main
.RunHintDisplayButton
, bpy
.context
)
505 wm
= bpy
.context
.window_manager
506 p
= 'measureit_run_opengl'
511 if __name__
== '__main__':