[Part workbench] add Create points object from mesh command

This commit is contained in:
mwganson
2019-08-23 22:32:59 -05:00
committed by wmayer
parent 8928f863fe
commit 6be089b006
4 changed files with 156 additions and 3 deletions

View File

@@ -168,6 +168,57 @@ bool CmdPartShapeFromMesh::isActive(void)
Base::Type meshid = Base::Type::fromName("Mesh::Feature");
return Gui::Selection().countObjectsOfType(meshid) > 0;
}
//===========================================================================
// Part_PointsFromMesh
//===========================================================================
DEF_STD_CMD_A(CmdPartPointsFromMesh);
CmdPartPointsFromMesh::CmdPartPointsFromMesh()
:Command("Part_PointsFromMesh")
{
sAppModule = "Part";
sGroup = QT_TR_NOOP("Part");
sMenuText = QT_TR_NOOP("Create points object from mesh");
sToolTipText = QT_TR_NOOP("Create selectable points object from selected mesh object");
sWhatsThis = "Part_PointsFromMesh";
sStatusTip = sToolTipText;
sPixmap = "Part_Points_from_Mesh";
}
void CmdPartPointsFromMesh::activated(int iMsg)
{
Q_UNUSED(iMsg);
Base::Type meshid = Base::Type::fromName("Mesh::Feature");
std::vector<App::DocumentObject*> meshes;
meshes = Gui::Selection().getObjectsOfType(meshid);
Gui::WaitCursor wc;
std::vector<App::DocumentObject*>::iterator it;
openCommand("Points from mesh");
for (it = meshes.begin(); it != meshes.end(); ++it) {
App::Document* doc = (*it)->getDocument();
std::string mesh = (*it)->getNameInDocument();
if (!(*it)->isDerivedFrom(Base::Type::fromName("Mesh::Feature")))
continue;
doCommand(Doc,"import Part");
doCommand(Doc,"mesh_pts = FreeCAD.getDocument(\"%s\").getObject(\"%s\").Mesh.Points\n",
doc->getName(),
mesh.c_str());
doCommand(Doc,"Part.show(Part.makeCompound([Part.Point(m.Vector).toShape() for m in mesh_pts]),\"%s\")\n",
(mesh+"_pts").c_str());
doCommand(Doc,"del mesh_pts\n");
}
commitCommand();
}
bool CmdPartPointsFromMesh::isActive(void)
{
Base::Type meshid = Base::Type::fromName("Mesh::Feature");
return Gui::Selection().countObjectsOfType(meshid) > 0;
}
//===========================================================================
// Part_SimpleCopy
@@ -420,6 +471,7 @@ void CreateSimplePartCommands(void)
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
rcCmdMgr.addCommand(new CmdPartSimpleCylinder());
rcCmdMgr.addCommand(new CmdPartShapeFromMesh());
rcCmdMgr.addCommand(new CmdPartPointsFromMesh());
rcCmdMgr.addCommand(new CmdPartSimpleCopy());
rcCmdMgr.addCommand(new CmdPartElementCopy());
rcCmdMgr.addCommand(new CmdPartTransformedCopy());