Reuse projection settings from an existing view when creating new draft views.
Select a draft object and a view on a drawing page, then the view created for the draft object will have the same projection settings as the selected view.
This commit is contained in:
parent
ef24aaa3ce
commit
1816f88575
|
@ -2154,7 +2154,7 @@ def getrgb(color,testbw=True):
|
||||||
col = "#000000"
|
col = "#000000"
|
||||||
return col
|
return col
|
||||||
|
|
||||||
def makeDrawingView(obj,page,lwmod=None,tmod=None):
|
def makeDrawingView(obj,page,lwmod=None,tmod=None,otherProjection=None):
|
||||||
'''
|
'''
|
||||||
makeDrawingView(object,page,[lwmod,tmod]) - adds a View of the given object to the
|
makeDrawingView(object,page,[lwmod,tmod]) - adds a View of the given object to the
|
||||||
given page. lwmod modifies lineweights (in percent), tmod modifies text heights
|
given page. lwmod modifies lineweights (in percent), tmod modifies text heights
|
||||||
|
@ -2174,12 +2174,27 @@ def makeDrawingView(obj,page,lwmod=None,tmod=None):
|
||||||
viewobj = FreeCAD.ActiveDocument.addObject("Drawing::FeatureViewPython","View"+obj.Name)
|
viewobj = FreeCAD.ActiveDocument.addObject("Drawing::FeatureViewPython","View"+obj.Name)
|
||||||
_DrawingView(viewobj)
|
_DrawingView(viewobj)
|
||||||
page.addObject(viewobj)
|
page.addObject(viewobj)
|
||||||
if hasattr(page.ViewObject,"HintScale"):
|
if (otherProjection):
|
||||||
viewobj.Scale = page.ViewObject.HintScale
|
FreeCAD.Console.PrintWarning("using otherProjection")
|
||||||
if hasattr(page.ViewObject,"HintOffsetX"):
|
if hasattr(otherProjection,"Scale"):
|
||||||
viewobj.X = page.ViewObject.HintOffsetX
|
FreeCAD.Console.PrintWarning(otherProjection.Scale)
|
||||||
if hasattr(page.ViewObject,"HintOffsetY"):
|
viewobj.Scale = otherProjection.Scale
|
||||||
viewobj.Y = page.ViewObject.HintOffsetY
|
if hasattr(otherProjection,"X"):
|
||||||
|
viewobj.X = otherProjection.X
|
||||||
|
if hasattr(otherProjection,"Y"):
|
||||||
|
viewobj.Y = otherProjection.Y
|
||||||
|
if hasattr(otherProjection,"Rotation"):
|
||||||
|
viewobj.Rotation = otherProjection.Rotation
|
||||||
|
if hasattr(otherProjection,"Direction"):
|
||||||
|
FreeCAD.Console.PrintWarning(otherProjection.Direction)
|
||||||
|
viewobj.Direction = otherProjection.Direction
|
||||||
|
else:
|
||||||
|
if hasattr(page.ViewObject,"HintScale"):
|
||||||
|
viewobj.Scale = page.ViewObject.HintScale
|
||||||
|
if hasattr(page.ViewObject,"HintOffsetX"):
|
||||||
|
viewobj.X = page.ViewObject.HintOffsetX
|
||||||
|
if hasattr(page.ViewObject,"HintOffsetY"):
|
||||||
|
viewobj.Y = page.ViewObject.HintOffsetY
|
||||||
viewobj.Source = obj
|
viewobj.Source = obj
|
||||||
if lwmod: viewobj.LineweightModifier = lwmod
|
if lwmod: viewobj.LineweightModifier = lwmod
|
||||||
if tmod: viewobj.TextModifier = tmod
|
if tmod: viewobj.TextModifier = tmod
|
||||||
|
|
|
@ -3150,6 +3150,12 @@ class Drawing(Modifier):
|
||||||
self.page = obj
|
self.page = obj
|
||||||
if not self.page:
|
if not self.page:
|
||||||
self.page = self.createDefaultPage()
|
self.page = self.createDefaultPage()
|
||||||
|
otherProjection = None
|
||||||
|
for obj in sel:
|
||||||
|
FreeCAD.Console.PrintWarning(obj)
|
||||||
|
if obj.isDerivedFrom("Drawing::FeatureView"):
|
||||||
|
otherProjection = obj
|
||||||
|
FreeCAD.Console.PrintWarning(otherProjection)
|
||||||
sel.reverse()
|
sel.reverse()
|
||||||
for obj in sel:
|
for obj in sel:
|
||||||
if obj.ViewObject.isVisible():
|
if obj.ViewObject.isVisible():
|
||||||
|
@ -3158,7 +3164,7 @@ class Drawing(Modifier):
|
||||||
#oldobj = self.page.getObject(name)
|
#oldobj = self.page.getObject(name)
|
||||||
#if oldobj:
|
#if oldobj:
|
||||||
# self.doc.removeObject(oldobj.Name)
|
# self.doc.removeObject(oldobj.Name)
|
||||||
Draft.makeDrawingView(obj,self.page)
|
Draft.makeDrawingView(obj,self.page,None,None,otherProjection)
|
||||||
self.doc.recompute()
|
self.doc.recompute()
|
||||||
|
|
||||||
def createDefaultPage(self):
|
def createDefaultPage(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user