Small fixes in Draft tools to work with Arch objects
This commit is contained in:
parent
4920f2adf9
commit
cb30344b6e
|
@ -516,38 +516,52 @@ def makeText(stringslist,point=Vector(0,0,0),screen=False):
|
||||||
|
|
||||||
def makeCopy(obj):
|
def makeCopy(obj):
|
||||||
'''makeCopy(object): returns an exact copy of an object'''
|
'''makeCopy(object): returns an exact copy of an object'''
|
||||||
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
|
||||||
if getType(obj) == "Rectangle":
|
if getType(obj) == "Rectangle":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_Rectangle(newobj)
|
_Rectangle(newobj)
|
||||||
_ViewProviderRectangle(newobj.ViewObject)
|
_ViewProviderRectangle(newobj.ViewObject)
|
||||||
elif getType(obj) == "Wire":
|
elif getType(obj) == "Wire":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_Wire(newobj)
|
_Wire(newobj)
|
||||||
_ViewProviderWire(newobj.ViewObject)
|
_ViewProviderWire(newobj.ViewObject)
|
||||||
elif getType(obj) == "Circle":
|
elif getType(obj) == "Circle":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_Circle(newobj)
|
_Circle(newobj)
|
||||||
_ViewProviderCircle(newobj.ViewObject)
|
_ViewProviderCircle(newobj.ViewObject)
|
||||||
elif getType(obj) == "Polygon":
|
elif getType(obj) == "Polygon":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_Polygon(newobj)
|
_Polygon(newobj)
|
||||||
_ViewProviderPolygon(newobj.ViewObject)
|
_ViewProviderPolygon(newobj.ViewObject)
|
||||||
elif getType(obj) == "BSpline":
|
elif getType(obj) == "BSpline":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_BSpline(newobj)
|
_BSpline(newobj)
|
||||||
_ViewProviderBSpline(newobj.ViewObject)
|
_ViewProviderBSpline(newobj.ViewObject)
|
||||||
elif getType(obj) == "Block":
|
elif getType(obj) == "Block":
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
_Block(newobj)
|
_Block(newobj)
|
||||||
_ViewProviderDraftPart(newobj.ViewObject)
|
_ViewProviderDraftPart(newobj.ViewObject)
|
||||||
elif getType(obj) == "Structure":
|
elif getType(obj) == "Structure":
|
||||||
import Arch
|
import ArchStructure
|
||||||
Arch._Structure(newobj)
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
Arch._ViewProviderStructure(newobj.ViewObject)
|
ArchStructure._Structure(newobj)
|
||||||
|
ArchStructure._ViewProviderStructure(newobj.ViewObject)
|
||||||
elif getType(obj) == "Wall":
|
elif getType(obj) == "Wall":
|
||||||
import Arch
|
import ArchWall
|
||||||
Arch._Wall(newobj)
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
Arch._ViewProviderWall(newobj.ViewObject)
|
ArchWall._Wall(newobj)
|
||||||
|
ArchWall._ViewProviderWall(newobj.ViewObject)
|
||||||
elif getType(obj) == "Window":
|
elif getType(obj) == "Window":
|
||||||
import Arch
|
import ArchWindow
|
||||||
Arch._Window(newobj)
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
Arch._ViewProviderWindow(newobj.ViewObject)
|
ArchWindow._Window(newobj)
|
||||||
|
Archwindow._ViewProviderWindow(newobj.ViewObject)
|
||||||
|
elif getType(obj) == "Cell":
|
||||||
|
import ArchCell
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject(obj.Type,getRealName(obj.Name))
|
||||||
|
ArchCell._Cell(newobj)
|
||||||
|
ArchCell._ViewProviderCell(newobj.ViewObject)
|
||||||
elif obj.isDerivedFrom("Part::Feature"):
|
elif obj.isDerivedFrom("Part::Feature"):
|
||||||
|
newobj = FreeCAD.ActiveDocument.addObject("Part::Feature",getRealName(obj.Name))
|
||||||
newobj.Shape = obj.Shape
|
newobj.Shape = obj.Shape
|
||||||
else:
|
else:
|
||||||
print "Error: Object type cannot be copied"
|
print "Error: Object type cannot be copied"
|
||||||
|
|
|
@ -658,16 +658,17 @@ class Snapper:
|
||||||
|
|
||||||
def click(event_cb):
|
def click(event_cb):
|
||||||
event = event_cb.getEvent()
|
event = event_cb.getEvent()
|
||||||
if event.getState() == coin.SoMouseButtonEvent.DOWN:
|
if event.getButton() == 1:
|
||||||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
if event.getState() == coin.SoMouseButtonEvent.DOWN:
|
||||||
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||||
FreeCADGui.Snapper.off()
|
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
||||||
self.ui.offUi()
|
FreeCADGui.Snapper.off()
|
||||||
if self.trackLine:
|
self.ui.offUi()
|
||||||
self.trackLine.off()
|
if self.trackLine:
|
||||||
if callback:
|
self.trackLine.off()
|
||||||
callback(self.pt)
|
if callback:
|
||||||
self.pt = None
|
callback(self.pt)
|
||||||
|
self.pt = None
|
||||||
|
|
||||||
def cancel():
|
def cancel():
|
||||||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||||
|
|
|
@ -486,15 +486,12 @@ class Line(Creator):
|
||||||
def wipe(self):
|
def wipe(self):
|
||||||
"removes all previous segments and starts from last point"
|
"removes all previous segments and starts from last point"
|
||||||
if len(self.node) > 1:
|
if len(self.node) > 1:
|
||||||
print "nullifying"
|
|
||||||
# self.obj.Shape.nullify() - for some reason this fails
|
# self.obj.Shape.nullify() - for some reason this fails
|
||||||
self.obj.ViewObject.Visibility = False
|
self.obj.ViewObject.Visibility = False
|
||||||
self.node = [self.node[-1]]
|
self.node = [self.node[-1]]
|
||||||
print "setting trackers"
|
|
||||||
self.linetrack.p1(self.node[0])
|
self.linetrack.p1(self.node[0])
|
||||||
self.planetrack.set(self.node[0])
|
self.planetrack.set(self.node[0])
|
||||||
msg(translate("draft", "Pick next point:\n"))
|
msg(translate("draft", "Pick next point:\n"))
|
||||||
print "done"
|
|
||||||
|
|
||||||
def numericInput(self,numx,numy,numz):
|
def numericInput(self,numx,numy,numz):
|
||||||
"this function gets called by the toolbar when valid x, y, and z have been entered there"
|
"this function gets called by the toolbar when valid x, y, and z have been entered there"
|
||||||
|
|
|
@ -232,13 +232,16 @@ class plane:
|
||||||
def getPlacementFromPoints(points):
|
def getPlacementFromPoints(points):
|
||||||
"returns a placement from a list of 3 or 4 vectors"
|
"returns a placement from a list of 3 or 4 vectors"
|
||||||
pl = plane()
|
pl = plane()
|
||||||
pl.position = points[0]
|
try:
|
||||||
pl.u = (points[1].sub(points[0]).normalize())
|
pl.position = points[0]
|
||||||
pl.v = (points[2].sub(points[0]).normalize())
|
pl.u = (points[1].sub(points[0]).normalize())
|
||||||
if len(points) == 4:
|
pl.v = (points[2].sub(points[0]).normalize())
|
||||||
pl.axis = (points[3].sub(points[0]).normalize())
|
if len(points) == 4:
|
||||||
else:
|
pl.axis = (points[3].sub(points[0]).normalize())
|
||||||
pl.axis = ((pl.u).cross(pl.v)).normalize()
|
else:
|
||||||
|
pl.axis = ((pl.u).cross(pl.v)).normalize()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
p = pl.getPlacement()
|
p = pl.getPlacement()
|
||||||
del pl
|
del pl
|
||||||
return p
|
return p
|
||||||
|
|
Loading…
Reference in New Issue
Block a user