BIM+Draft: fix Placement task panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy (#27101)
* BIM+Draft: fix Placement Task Panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy * BIM+Draft: fix Placement Task Panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy
This commit is contained in:
@@ -43,6 +43,7 @@ import Draft
|
||||
import DraftVecUtils
|
||||
|
||||
from FreeCAD import Vector
|
||||
from draftutils import gui_utils
|
||||
from draftutils import params
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
@@ -1216,6 +1217,7 @@ class _ViewProviderSectionPlane:
|
||||
|
||||
self.Object = vobj.Object
|
||||
self.clip = None
|
||||
self.main_transform = gui_utils.find_coin_node(vobj.RootNode, coin.SoTransform)
|
||||
self.mat1 = coin.SoMaterial()
|
||||
self.mat2 = coin.SoMaterial()
|
||||
self.fcoords = coin.SoCoordinate3()
|
||||
@@ -1336,8 +1338,6 @@ class _ViewProviderSectionPlane:
|
||||
def updateData(self, obj, prop):
|
||||
vobj = obj.ViewObject
|
||||
if prop in ["Placement"]:
|
||||
# for some reason the text doesn't rotate with the host placement??
|
||||
self.txtcoords.rotation.setValue(obj.Placement.Rotation.Q)
|
||||
self.onChanged(vobj, "DisplayLength")
|
||||
|
||||
# Defer the clipping plane update until after the current event
|
||||
@@ -1387,34 +1387,32 @@ class _ViewProviderSectionPlane:
|
||||
else:
|
||||
ld = 1
|
||||
hd = 1
|
||||
verts = []
|
||||
fverts = []
|
||||
pl = FreeCAD.Placement(vobj.Object.Placement)
|
||||
if hasattr(vobj, "ArrowSize"):
|
||||
l1 = vobj.ArrowSize.Value if vobj.ArrowSize.Value > 0 else 0.1
|
||||
else:
|
||||
l1 = 0.1
|
||||
l2 = l1 / 3
|
||||
pl = vobj.Object.Placement
|
||||
self.main_transform.translation.setValue(pl.Base)
|
||||
self.main_transform.rotation = coin.SbRotation(pl.Rotation.Q)
|
||||
verts = []
|
||||
fverts = []
|
||||
for v in [[-ld, -hd], [ld, -hd], [ld, hd], [-ld, hd]]:
|
||||
p1 = pl.multVec(Vector(v[0], v[1], 0))
|
||||
p2 = pl.multVec(Vector(v[0], v[1], -l1))
|
||||
p3 = pl.multVec(Vector(v[0] - l2, v[1], -l1 + l2))
|
||||
p4 = pl.multVec(Vector(v[0] + l2, v[1], -l1 + l2))
|
||||
p5 = pl.multVec(Vector(v[0], v[1] - l2, -l1 + l2))
|
||||
p6 = pl.multVec(Vector(v[0], v[1] + l2, -l1 + l2))
|
||||
verts.extend([[p1.x, p1.y, p1.z], [p2.x, p2.y, p2.z]])
|
||||
fverts.append([p1.x, p1.y, p1.z])
|
||||
verts.extend(
|
||||
[[p2.x, p2.y, p2.z], [p3.x, p3.y, p3.z], [p4.x, p4.y, p4.z], [p2.x, p2.y, p2.z]]
|
||||
)
|
||||
verts.extend(
|
||||
[[p2.x, p2.y, p2.z], [p5.x, p5.y, p5.z], [p6.x, p6.y, p6.z], [p2.x, p2.y, p2.z]]
|
||||
)
|
||||
p7 = pl.multVec(Vector(-ld + l2, -hd + l2, 0)) # text pos
|
||||
p1 = Vector(v[0], v[1], 0)
|
||||
p2 = Vector(v[0], v[1], -l1)
|
||||
p3 = Vector(v[0] - l2, v[1], -l1 + l2)
|
||||
p4 = Vector(v[0] + l2, v[1], -l1 + l2)
|
||||
p5 = Vector(v[0], v[1] - l2, -l1 + l2)
|
||||
p6 = Vector(v[0], v[1] + l2, -l1 + l2)
|
||||
fverts.append(p1)
|
||||
verts.extend([p1, p2])
|
||||
verts.extend([p2, p3, p4, p2])
|
||||
verts.extend([p2, p5, p6, p2])
|
||||
verts.extend(fverts + [fverts[0]])
|
||||
p7 = Vector(-ld + l2, -hd + l2, 0) # text pos
|
||||
self.lcoords.point.setValues(verts)
|
||||
self.fcoords.point.setValues(fverts)
|
||||
self.txtcoords.translation.setValue([p7.x, p7.y, p7.z])
|
||||
self.txtcoords.translation.setValue(p7)
|
||||
# self.txtfont.size = l1
|
||||
elif prop == "LineWidth":
|
||||
self.drawstyle.lineWidth = vobj.LineWidth
|
||||
|
||||
@@ -36,6 +36,7 @@ from PySide.QtCore import QT_TRANSLATE_NOOP
|
||||
|
||||
import FreeCAD as App
|
||||
import FreeCADGui as Gui
|
||||
from draftutils import gui_utils
|
||||
from draftutils import params
|
||||
|
||||
|
||||
@@ -129,6 +130,7 @@ class ViewProviderWorkingPlaneProxy:
|
||||
|
||||
def attach(self, vobj):
|
||||
self.clip = None
|
||||
self.main_transform = gui_utils.find_coin_node(vobj.RootNode, coin.SoTransform)
|
||||
self.mat1 = coin.SoMaterial()
|
||||
self.mat2 = coin.SoMaterial()
|
||||
self.fcoords = coin.SoCoordinate3()
|
||||
@@ -202,42 +204,47 @@ class ViewProviderWorkingPlaneProxy:
|
||||
l = vobj.DisplaySize.Value / 2
|
||||
else:
|
||||
l = 1
|
||||
verts = []
|
||||
fverts = []
|
||||
l1 = 0.1
|
||||
if hasattr(vobj, "ArrowSize"):
|
||||
l1 = vobj.ArrowSize.Value if vobj.ArrowSize.Value > 0 else 0.1
|
||||
else:
|
||||
l1 = 0.1
|
||||
l2 = l1 / 3
|
||||
pl = App.Placement(vobj.Object.Placement)
|
||||
fverts.append(pl.multVec(App.Vector(-l, -l, 0)))
|
||||
fverts.append(pl.multVec(App.Vector(l, -l, 0)))
|
||||
fverts.append(pl.multVec(App.Vector(l, l, 0)))
|
||||
fverts.append(pl.multVec(App.Vector(-l, l, 0)))
|
||||
|
||||
verts.append(pl.multVec(App.Vector(0, 0, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l - l1, 0, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l - l1, l2, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l, 0, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l - l1, -l2, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l - l1, l2, 0)))
|
||||
pl = vobj.Object.Placement
|
||||
self.main_transform.translation.setValue(pl.Base)
|
||||
self.main_transform.rotation = coin.SbRotation(pl.Rotation.Q)
|
||||
verts = []
|
||||
fverts = []
|
||||
|
||||
verts.append(pl.multVec(App.Vector(0, 0, 0)))
|
||||
verts.append(pl.multVec(App.Vector(0, l - l1, 0)))
|
||||
verts.append(pl.multVec(App.Vector(-l2, l - l1, 0)))
|
||||
verts.append(pl.multVec(App.Vector(0, l, 0)))
|
||||
verts.append(pl.multVec(App.Vector(l2, l - l1, 0)))
|
||||
verts.append(pl.multVec(App.Vector(-l2, l - l1, 0)))
|
||||
fverts.append(App.Vector(-l, -l, 0))
|
||||
fverts.append(App.Vector(l, -l, 0))
|
||||
fverts.append(App.Vector(l, l, 0))
|
||||
fverts.append(App.Vector(-l, l, 0))
|
||||
|
||||
verts.append(pl.multVec(App.Vector(0, 0, 0)))
|
||||
verts.append(pl.multVec(App.Vector(0, 0, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(-l2, 0, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(0, 0, l)))
|
||||
verts.append(pl.multVec(App.Vector(l2, 0, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(-l2, 0, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(0, -l2, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(0, 0, l)))
|
||||
verts.append(pl.multVec(App.Vector(0, l2, l - l1)))
|
||||
verts.append(pl.multVec(App.Vector(0, -l2, l - l1)))
|
||||
verts.append(App.Vector(0, 0, 0))
|
||||
verts.append(App.Vector(l - l1, 0, 0))
|
||||
verts.append(App.Vector(l - l1, l2, 0))
|
||||
verts.append(App.Vector(l, 0, 0))
|
||||
verts.append(App.Vector(l - l1, -l2, 0))
|
||||
verts.append(App.Vector(l - l1, l2, 0))
|
||||
|
||||
verts.append(App.Vector(0, 0, 0))
|
||||
verts.append(App.Vector(0, l - l1, 0))
|
||||
verts.append(App.Vector(-l2, l - l1, 0))
|
||||
verts.append(App.Vector(0, l, 0))
|
||||
verts.append(App.Vector(l2, l - l1, 0))
|
||||
verts.append(App.Vector(-l2, l - l1, 0))
|
||||
|
||||
verts.append(App.Vector(0, 0, 0))
|
||||
verts.append(App.Vector(0, 0, l - l1))
|
||||
verts.append(App.Vector(-l2, 0, l - l1))
|
||||
verts.append(App.Vector(0, 0, l))
|
||||
verts.append(App.Vector(l2, 0, l - l1))
|
||||
verts.append(App.Vector(-l2, 0, l - l1))
|
||||
verts.append(App.Vector(0, -l2, l - l1))
|
||||
verts.append(App.Vector(0, 0, l))
|
||||
verts.append(App.Vector(0, l2, l - l1))
|
||||
verts.append(App.Vector(0, -l2, l - l1))
|
||||
|
||||
self.lcoords.point.setValues(verts)
|
||||
self.fcoords.point.setValues(fverts)
|
||||
|
||||
Reference in New Issue
Block a user