Show draft objects as an x-ray view, and edit bases if they exist.

This commit is contained in:
Dion Moult
2019-02-24 12:20:33 +11:00
committed by Yorik van Havre
parent 6315a8f5db
commit a7b0b4f601

View File

@@ -4306,22 +4306,34 @@ class EditImproved(Modifier):
for object in FreeCADGui.Selection.getSelection():
if object.isDerivedFrom("Part::Part2DObject"):
self.editable_objects.append(object)
elif hasattr(object, "Base") and object.Base.isDerivedFrom("Part::Part2DObject"):
self.editable_objects.append(object.Base)
def highlight_editable_objects(self):
for object in self.editable_objects:
self.original_view_settings[object.Name] = {
'Visibility': object.ViewObject.Visibility,
'PointSize': object.ViewObject.PointSize,
'PointColor': object.ViewObject.PointColor,
'LineColor': object.ViewObject.LineColor
}
object.ViewObject.Visibility = True
object.ViewObject.PointSize = 10
object.ViewObject.PointColor = (1., 0., 0.)
object.ViewObject.LineColor = (1., 0., 0.)
xray = coin.SoAnnotation()
xray.addChild(object.ViewObject.RootNode.getChild(2).getChild(0))
xray.setName("xray")
object.ViewObject.RootNode.addChild(xray)
def restore_editable_objects_graphics(self):
for object in self.editable_objects:
if not object.Name:
continue
for attribute, value in self.original_view_settings[object.Name].items():
setattr(object.ViewObject, attribute, value)
view_object = object.ViewObject
setattr(view_object, attribute, value)
view_object.RootNode.removeChild(view_object.RootNode.getByName("xray"))
class Edit(Modifier):
"The Draft_Edit FreeCAD command definition"