implement user interface for creating a Analyses and add a part
This commit is contained in:
parent
9d05dcc85c
commit
d5ec1da95b
|
@ -29,6 +29,7 @@
|
|||
#include "FemAnalysis.h"
|
||||
#include <App/DocumentObjectPy.h>
|
||||
#include <Base/Placement.h>
|
||||
#include <Base/Uuid.h>
|
||||
|
||||
using namespace Fem;
|
||||
using namespace App;
|
||||
|
@ -38,7 +39,9 @@ PROPERTY_SOURCE(Fem::FemAnalysis, App::DocumentObject)
|
|||
|
||||
FemAnalysis::FemAnalysis()
|
||||
{
|
||||
Base::Uuid id;
|
||||
ADD_PROPERTY_TYPE(Member,(0), "Analysis member",Prop_None,"All objects belonging to the Analysis");
|
||||
ADD_PROPERTY_TYPE(Uid,(id),0,App::Prop_None,"UUID of the Analysis");
|
||||
}
|
||||
|
||||
FemAnalysis::~FemAnalysis()
|
||||
|
|
|
@ -51,7 +51,11 @@ public:
|
|||
virtual short mustExecute(void) const;
|
||||
virtual PyObject *getPyObject(void);
|
||||
|
||||
/// Member objects of the Analysis
|
||||
App::PropertyLinkList Member;
|
||||
/// unique identifier of the Analysis
|
||||
App::PropertyUUID Uid;
|
||||
|
||||
|
||||
protected:
|
||||
/// get called by the container when a property has changed
|
||||
|
|
|
@ -112,8 +112,8 @@ class MachiningDistortionWorkbench ( Workbench ):
|
|||
" NlllllOP",
|
||||
" QRPSTUVW"};
|
||||
"""
|
||||
MenuText = "Machining Distortion"
|
||||
ToolTip = "MachiningDistortion workbench"
|
||||
MenuText = "Part Distortion"
|
||||
ToolTip = "PartDistortion workbench"
|
||||
|
||||
def setWatchers(self):
|
||||
class WatcherStart:
|
||||
|
@ -121,7 +121,8 @@ class MachiningDistortionWorkbench ( Workbench ):
|
|||
self.commands = ["MachDist_Analysis"]
|
||||
self.title = "Start"
|
||||
def shouldShow(self):
|
||||
return True
|
||||
import FemGui
|
||||
return FemGui.getActiveAnalysis() == None
|
||||
|
||||
class WatcherFill:
|
||||
def __init__(self):
|
||||
|
@ -129,10 +130,7 @@ class MachiningDistortionWorkbench ( Workbench ):
|
|||
self.title = "Modify objects"
|
||||
def shouldShow(self):
|
||||
import FemGui
|
||||
if FemGui.getActiveAnalysis():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
return FemGui.getActiveAnalysis() != None
|
||||
|
||||
#class DraftTrayWatcher:
|
||||
# def __init__(self,traywidget):
|
||||
|
@ -165,8 +163,9 @@ class MachiningDistortionWorkbench ( Workbench ):
|
|||
CmdList = ["MachiningDistortion_StartGUI","MachiningDistortion_StartPostprocess"]
|
||||
self.appendToolbar("MachiningDistortionTools",CmdList)
|
||||
self.appendMenu("Machining Distortion",CmdList)
|
||||
self.appendToolbar("MachiningDistortionTools2",["MachDist_Analysis","MachDist_Mesh","MachDist_Alignment","MachDist_Material","MachDist_Isostatic"])
|
||||
self.appendMenu("Machining Distortion2",["MachDist_Analysis","MachDist_Mesh","MachDist_Alignment","MachDist_Material","MachDist_Isostatic"])
|
||||
CmdList2 = ["MachDist_Analysis","Separator","MachDist_Mesh","MachDist_Alignment","MachDist_Material","MachDist_Isostatic"]
|
||||
self.appendToolbar("MachiningDistortionTools2",CmdList2)
|
||||
self.appendMenu("Machining Distortion2",CmdList2)
|
||||
|
||||
self.setWatchers()
|
||||
|
||||
|
|
|
@ -45,16 +45,27 @@ class _CommandAnalysis:
|
|||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Analysis")
|
||||
FreeCADGui.addModule("FemGui")
|
||||
FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemAnalysis','MachineDistortion')")
|
||||
FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemAnalysis','PartDistortion')")
|
||||
FreeCADGui.doCommand("FemGui.setActiveAnalysis(App.activeDocument().ActiveObject)")
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if (len(sel) == 1):
|
||||
if(sel[0].isDerivedFrom("Fem::FemMeshObject")):
|
||||
FreeCADGui.doCommand("App.activeDocument().ActiveObject.Member = App.activeDocument().ActiveObject.Member + [App.activeDocument()."+sel[0].Name+"]")
|
||||
if(sel[0].isDerivedFrom("Part::Feature")):
|
||||
FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','"+sel[0].Name +"_Mesh')")
|
||||
FreeCADGui.doCommand("App.activeDocument().ActiveObject.Shape = App.activeDocument()."+sel[0].Name)
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().hide('"+sel[0].Name+"')")
|
||||
#FreeCADGui.doCommand("App.activeDocument().ActiveObject.touch()")
|
||||
#FreeCADGui.doCommand("App.activeDocument().recompute()")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)")
|
||||
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.ActiveDocument:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
import FemGui
|
||||
return FreeCADGui.ActiveDocument != None and FemGui.getActiveAnalysis() == None
|
||||
|
||||
|
||||
FreeCADGui.addCommand('MachDist_Analysis',_CommandAnalysis())
|
||||
|
|
|
@ -38,20 +38,54 @@ class _CommandMesh:
|
|||
"the MachDist Mesh command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'MachDist_AddFemMesh',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("MachDist_Mesh","Add Mesh"),
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("MachDist_Mesh","Add Part"),
|
||||
'Accel': "M",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("MachDist_Mesh","Creates or edit the material definition.")}
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("MachDist_Mesh","Add a Part to the Analysis.")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Mesh")
|
||||
FreeCADGui.doCommand("import MachDist")
|
||||
FreeCADGui.doCommand("axe = MachDist.makeMesh()")
|
||||
FreeCADGui.doCommand("MachDist.makeStructuralSystem(" + MachDistCommands.getStringList(st) + ",[axe])")
|
||||
FreeCADGui.doCommand("MachDist.makeMesh()")
|
||||
FreeCAD.ActiveDocument.openTransaction("Add part")
|
||||
FreeCADGui.addModule("FemGui")
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if (len(sel) == 1):
|
||||
if(sel[0].isDerivedFrom("Fem::FemMeshObject")):
|
||||
FreeCADGui.doCommand("App.activeDocument().ActiveObject.Member = App.activeDocument().ActiveObject.Member + [App.activeDocument()."+sel[0].Name+"]")
|
||||
if(sel[0].isDerivedFrom("Part::Feature")):
|
||||
FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','"+sel[0].Name +"_Mesh')")
|
||||
FreeCADGui.doCommand("App.activeDocument().ActiveObject.Shape = App.activeDocument()."+sel[0].Name)
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().hide('"+sel[0].Name+"')")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)")
|
||||
else:
|
||||
import os
|
||||
filename = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open part file..',os.getcwd(),'Mesh or Part files (*.bdf *.stp *.igs);;All files(*)')
|
||||
if filename.right(3) in (u'bdf'):
|
||||
FreeCADGui.addModule("Fem")
|
||||
FreeCADGui.doCommand("Fem.insert('" + str(filename) +"','"+FreeCAD.ActiveDocument.Name+ "')")
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.SendMsgToActiveView('ViewFit')")
|
||||
if filename.right(3) in (u'stp',u'igs'):
|
||||
FreeCADGui.addModule("Part")
|
||||
FreeCADGui.doCommand("Part.insert('" + str(filename) +"','"+FreeCAD.ActiveDocument.Name+ "')")
|
||||
FreeCADGui.doCommand("Gui.SendMsgToActiveView('ViewFit')")
|
||||
name = FreeCAD.activeDocument().ActiveObject.Name
|
||||
FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','"+name +"_Mesh')")
|
||||
FreeCADGui.doCommand("App.activeDocument().ActiveObject.Shape = App.activeDocument()."+name)
|
||||
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().hide('"+name+"')")
|
||||
FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)")
|
||||
|
||||
|
||||
|
||||
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
def IsActive(self):
|
||||
if FemGui.getActiveAnalysis():
|
||||
import FemGui
|
||||
# check if a active analysis is present and no Mesh in it
|
||||
if FemGui.getActiveAnalysis() != None:
|
||||
for i in FemGui.getActiveAnalysis().Member:
|
||||
if i.isDerivedFrom("Fem::FemMeshObject"):
|
||||
return False
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
|
Loading…
Reference in New Issue
Block a user