forked from youen/assembly_handbook
fixed rasterization issues, and added possibility to render Draft objects (dimensions, lines, etc.)
This commit is contained in:
parent
ff8b904dc4
commit
a8e10a2b99
@ -89,7 +89,7 @@ class RasterView:
|
|||||||
result.extend(self._flatten_objects_tree([obj.LinkedObject]))
|
result.extend(self._flatten_objects_tree([obj.LinkedObject]))
|
||||||
elif obj.TypeId in ['App::Part', 'App::DocumentObjectGroup']:
|
elif obj.TypeId in ['App::Part', 'App::DocumentObjectGroup']:
|
||||||
result.extend(self._flatten_objects_tree(obj.Group))
|
result.extend(self._flatten_objects_tree(obj.Group))
|
||||||
elif obj.TypeId in ['Part::Feature', 'Part::FeaturePython', 'PartDesign::Body', 'PartDesign::CoordinateSystem', 'PartDesign::Line', 'Part::Mirroring', 'Part::Cut', 'Part::Part2DObjectPython']:
|
elif self._should_render(obj) or self._should_render_as_is(obj) or obj.TypeId in ['PartDesign::CoordinateSystem', 'PartDesign::Line']:
|
||||||
result.append(obj)
|
result.append(obj)
|
||||||
if hasattr(obj, 'Group'):
|
if hasattr(obj, 'Group'):
|
||||||
result.extend(self._flatten_objects_tree(obj.Group))
|
result.extend(self._flatten_objects_tree(obj.Group))
|
||||||
@ -97,7 +97,10 @@ class RasterView:
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def _should_render(self, obj):
|
def _should_render(self, obj):
|
||||||
return obj.TypeId in ['Part::Feature', 'Part::FeaturePython', 'PartDesign::Body', 'Part::Mirroring', 'Part::Cut', 'Part::Part2DObjectPython']
|
return obj.TypeId in ['Part::Feature', 'Part::FeaturePython', 'PartDesign::Body', 'Part::Mirroring', 'Part::Cut', 'Part::Part2DObjectPython', 'Part::MultiFuse', 'Part::Loft', 'Part::Torus', 'Part::Cylinder']
|
||||||
|
|
||||||
|
def _should_render_as_is(self, obj):
|
||||||
|
return obj.TypeId in ['App::FeaturePython']
|
||||||
|
|
||||||
def render(self, fast_render = True):
|
def render(self, fast_render = True):
|
||||||
from pivy import coin
|
from pivy import coin
|
||||||
@ -128,7 +131,8 @@ class RasterView:
|
|||||||
sceneGroup = tmp_doc.addObject('App::DocumentObjectGroup', 'Scene')
|
sceneGroup = tmp_doc.addObject('App::DocumentObjectGroup', 'Scene')
|
||||||
prev_parts = []
|
prev_parts = []
|
||||||
new_parts = []
|
new_parts = []
|
||||||
for part in view.XSource:
|
all_parts = view.XSource + view.Source
|
||||||
|
for part in all_parts:
|
||||||
link = tmp_doc.addObject('App::Link', part.Name)
|
link = tmp_doc.addObject('App::Link', part.Name)
|
||||||
link.Label = part.Label
|
link.Label = part.Label
|
||||||
if part.TypeId == 'App::Link':
|
if part.TypeId == 'App::Link':
|
||||||
@ -139,10 +143,14 @@ class RasterView:
|
|||||||
link.Placement = part.Placement
|
link.Placement = part.Placement
|
||||||
else:
|
else:
|
||||||
link.LinkedObject = part
|
link.LinkedObject = part
|
||||||
|
if part.TypeId in ['Part::Part2DObjectPython']:
|
||||||
|
link.Placement = part.Placement
|
||||||
|
|
||||||
is_new_part = workbench.techDrawExtensions.isNewPartInView(view, part)
|
is_new_part = workbench.techDrawExtensions.isNewPartInView(view, part)
|
||||||
|
|
||||||
if not fast_render:
|
if not fast_render:
|
||||||
|
# check if another part with different render settings will conflict with ours
|
||||||
|
# a conflict occurs when two parts link to the same object (directly or indirectly), because render settings (such as color) are set at the object level
|
||||||
is_conflicting = False
|
is_conflicting = False
|
||||||
if link.LinkedObject in duplicated_parts.keys():
|
if link.LinkedObject in duplicated_parts.keys():
|
||||||
link.LinkedObject = duplicated_parts[link.LinkedObject]
|
link.LinkedObject = duplicated_parts[link.LinkedObject]
|
||||||
@ -189,6 +197,12 @@ class RasterView:
|
|||||||
obj.ViewObject.LineWidth,
|
obj.ViewObject.LineWidth,
|
||||||
obj.ViewObject.DisplayMode
|
obj.ViewObject.DisplayMode
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not obj.ViewObject.Visibility:
|
||||||
|
obj.ViewObject.ShapeMaterial.AmbientColor = (0, 0, 0)
|
||||||
|
obj.ViewObject.ShapeMaterial.DiffuseColor = (0, 0, 0)
|
||||||
|
obj.ViewObject.ShapeMaterial.SpecularColor = (0, 0, 0)
|
||||||
|
obj.ViewObject.ShapeMaterial.EmissiveColor = (0, 0, 0)
|
||||||
else:
|
else:
|
||||||
objects_to_reset[obj] = (
|
objects_to_reset[obj] = (
|
||||||
obj.ViewObject.Visibility,
|
obj.ViewObject.Visibility,
|
||||||
@ -267,6 +281,7 @@ class RasterView:
|
|||||||
composite_img = composite_img.quantize(colors=num_colors, dither=Image.Dither.NONE)
|
composite_img = composite_img.quantize(colors=num_colors, dither=Image.Dither.NONE)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
#raise Exception("test")
|
||||||
# restore properties on objects we have modified
|
# restore properties on objects we have modified
|
||||||
for obj, props in objects_to_reset.items():
|
for obj, props in objects_to_reset.items():
|
||||||
obj.ViewObject.Visibility = props[0]
|
obj.ViewObject.Visibility = props[0]
|
||||||
|
@ -94,6 +94,7 @@ class TechDrawExtensions:
|
|||||||
|
|
||||||
def _do_repaint(self):
|
def _do_repaint(self):
|
||||||
from ahb_raster_view import RasterView
|
from ahb_raster_view import RasterView
|
||||||
|
import Draft
|
||||||
|
|
||||||
workbench = Gui.getWorkbench("AssemblyHandbookWorkbench") #: :type workbench: AssemblyHandbookWorkbench
|
workbench = Gui.getWorkbench("AssemblyHandbookWorkbench") #: :type workbench: AssemblyHandbookWorkbench
|
||||||
|
|
||||||
@ -133,27 +134,10 @@ class TechDrawExtensions:
|
|||||||
|
|
||||||
overlay_frame_name = view.Label + "_frame"
|
overlay_frame_name = view.Label + "_frame"
|
||||||
overlay_frame = doc.getObject(overlay_frame_name)
|
overlay_frame = doc.getObject(overlay_frame_name)
|
||||||
|
if overlay_frame is not None:
|
||||||
if overlay_frame is None:
|
doc.removeObject(overlay_frame.Name)
|
||||||
import Draft
|
|
||||||
'''
|
|
||||||
points = [App.Vector(0.0, 0.0, 0.0), App.Vector(1.01, 0, 0)]
|
|
||||||
obj1 = Draft.makeWire(points, closed=False, face=False, support=None)
|
|
||||||
|
|
||||||
points = [App.Vector(200.0, 0.0, 0.0), App.Vector(201.01, 0, 0)]
|
|
||||||
obj2 = Draft.makeWire(points, closed=False, face=False, support=None)
|
|
||||||
|
|
||||||
#overlay_frame = Draft.upgrade([], delete=True)
|
|
||||||
#overlay_frame.Label = overlay_frame_name
|
|
||||||
overlay_frame = App.ActiveDocument.addObject("Part::Part2DObjectPython", overlay_frame_name)
|
|
||||||
Draft.Block(overlay_frame)
|
|
||||||
overlay_frame.Components = [obj1, obj2]
|
|
||||||
Draft.ViewProviderDraftPart(overlay_frame.ViewObject)
|
|
||||||
doc.removeObject(obj1.Name)
|
|
||||||
doc.removeObject(obj2.Name)'''
|
|
||||||
|
|
||||||
#overlay_frame = Draft.makeWire(points, closed=False, face=False, support=None)
|
#overlay_frame = Draft.makeWire(points, closed=False, face=False, support=None)
|
||||||
overlay_frame = App.ActiveDocument.addObject("Part::Part2DObjectPython", overlay_frame_name)
|
overlay_frame = doc.addObject("Part::Part2DObjectPython", overlay_frame_name)
|
||||||
Draft.Wire(overlay_frame)
|
Draft.Wire(overlay_frame)
|
||||||
pos = raster_view.projectImageViewPointTo3D(App.Vector(0,0,0))
|
pos = raster_view.projectImageViewPointTo3D(App.Vector(0,0,0))
|
||||||
pos2 = raster_view.projectImageViewPointTo3D(App.Vector(0.001,0.001,1))
|
pos2 = raster_view.projectImageViewPointTo3D(App.Vector(0.001,0.001,1))
|
||||||
@ -163,8 +147,9 @@ class TechDrawExtensions:
|
|||||||
|
|
||||||
overlay_frame2_name = view.Label + "_frame2"
|
overlay_frame2_name = view.Label + "_frame2"
|
||||||
overlay_frame2 = doc.getObject(overlay_frame2_name)
|
overlay_frame2 = doc.getObject(overlay_frame2_name)
|
||||||
if overlay_frame2 is None:
|
if overlay_frame2 is not None:
|
||||||
overlay_frame2 = App.ActiveDocument.addObject("Part::Part2DObjectPython", overlay_frame2_name)
|
doc.removeObject(overlay_frame2.Name)
|
||||||
|
overlay_frame2 = doc.addObject("Part::Part2DObjectPython", overlay_frame2_name)
|
||||||
Draft.Wire(overlay_frame2)
|
Draft.Wire(overlay_frame2)
|
||||||
pos = raster_view.projectImageViewPointTo3D(App.Vector(1,1,0))
|
pos = raster_view.projectImageViewPointTo3D(App.Vector(1,1,0))
|
||||||
pos2 = raster_view.projectImageViewPointTo3D(App.Vector(1.001,1.001,1))
|
pos2 = raster_view.projectImageViewPointTo3D(App.Vector(1.001,1.001,1))
|
||||||
|
Loading…
Reference in New Issue
Block a user