def _viewer(self): if self.doc is None: gdoc = Gui.editDocument() else: gdoc = Gui.getDocument(self.doc.Name) v = gdoc.activeView() if not hasattr(v, 'toggleClippingPlane'): v = gdoc.mdiViewsOfType('Gui::View3DInventor')[0] return v
def onRollback(cls): doc = FreeCADGui.editDocument() if not doc: return vobj = doc.getInEdit() if vobj and isTypeOf(vobj, ViewProviderAssembly): movingPart = getattr(vobj.Proxy, '_movingPart', None) if movingPart: vobj.Object.recompute(True) movingPart.tracePoint = movingPart.TracePosition
def quickMove(): ret = logger.catch('exception when moving part', getMovingElementInfo) if not ret: return False doc = FreeCADGui.editDocument() if doc: doc.resetEdit() FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(ret.SelObj, ret.SelSubname) AsmDocumentObserver.quickMove(ret)
def movePart(useCenterballDragger=None): ret = logger.catch('exception when moving part', getMovingElementInfo) if not ret: return False info = ret.ElementInfo doc = FreeCADGui.editDocument() if doc: doc.resetEdit() vobj = resolveAssembly(info.Parent).Object.ViewObject doc = info.Parent.ViewObject.Document if useCenterballDragger is not None: vobj.UseCenterballDragger = useCenterballDragger vobj.Proxy._movingPart = AsmMovingPart(ret.Hierarchy, info) FreeCADGui.Selection.clearSelection() return doc.setEdit(vobj, 1)
def sketchClipPlane(self, sketch, enable=None): '''sketchClipPlane(sketch, enable = None): Clips all objects by plane of sketch. If enable argument is omitted, calling the routine repeatedly will toggle clipping plane.''' from .SceneDetails.ClipPlane import ClipPlane editDoc = Gui.editDocument() if editDoc is None: doc = sketch.Document pla = sketch.getGlobalPlacement() else: doc = editDoc.Document pla = App.Placement(editDoc.EditingTransform) toggle = {False: 0, True: 1, None: -1}[enable] self.modify(ClipPlane(doc, toggle, pla, 0.02))
def movePart(useCenterballDragger=None, moveInfo=None): if not moveInfo: moveInfo = logger.catch('exception when moving part', getMovingElementInfo) if not moveInfo: return False info = moveInfo.ElementInfo doc = FreeCADGui.editDocument() if doc: doc.resetEdit() vobj = resolveAssembly(info.Parent).Object.ViewObject vobj.Proxy._movingPart = AsmMovingPart(moveInfo.HierarchyList, info) if useCenterballDragger is not None: vobj.UseCenterballDragger = useCenterballDragger FreeCADGui.Selection.clearSelection() subname = moveInfo.SelSubname[:-len(info.SubnameRef)] topVObj = moveInfo.SelObj.ViewObject mode = 1 if info.Parent == vobj.Object else 0x8001 return topVObj.Document.setEdit(topVObj, mode, subname)
def sketchClipPlane(self, sketch, enable = None): """sketchClipPlane(sketch, enable = None): Clips all objects by plane of sketch. If enable argument is omitted, calling the routine repeatedly will toggle clipping plane.""" editDoc = self.clippingDoc if not editDoc: editDoc = Gui.editDocument() if editDoc: self.clippingDoc = editDoc toggle = 1 if enable else -1 if enable is None else 0 editDoc.ActiveView.toggleClippingPlane( toggle, pla=App.Placement(editDoc.EditingTransform)) return elif not sketch: return if enable is None: enable = not self.sketch_clipplane_on self.sketch_clipplane_on = enable self.clipPlane(self.allVisibleObjects(sketch), enable, sketch.getGlobalPlacement(), 0.02)
def TracePosition(self): pos = gui.AsmCmdTrace.getPosition() if pos: return pos mat = FreeCADGui.editDocument().EditingTransform return mat.multiply(self.draggerPlacement.Base)