Small fixes in Draft tools to work with Arch objects

This commit is contained in:
Yorik van Havre 2012-01-25 15:35:43 -02:00
parent 4920f2adf9
commit cb30344b6e
4 changed files with 45 additions and 30 deletions

View File

@ -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"

View File

@ -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)

View File

@ -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"

View File

@ -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