[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 57ef3dfdf4
commit ea7812656a
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());

View File

@@ -1,5 +1,5 @@
<RCC>
<qresource>
<qresource prefix="/">
<file>icons/PartFeature.svg</file>
<file>icons/PartFeature.xpm</file>
<file>icons/PartFeatureImport.xpm</file>
@@ -22,7 +22,7 @@
<file>icons/Part_Fuse.svg</file>
<file>icons/Part_Import.svg</file>
<file>icons/Part_Export.svg</file>
<file>icons/Part_BoxSelection.svg</file>
<file>icons/Part_BoxSelection.svg</file>
<file>icons/Part_Loft.svg</file>
<file>icons/Part_Mirror.svg</file>
<file>icons/Part_MirrorPNG.png</file>
@@ -73,6 +73,7 @@
<file>icons/Tree_Part_Prism.svg</file>
<file>icons/Tree_Part_Wedge.svg</file>
<file>icons/Part_Shape_from_Mesh.svg</file>
<file>icons/Part_Points_from_Mesh.svg</file>
<file>icons/Part_JoinBypass.svg</file>
<file>icons/Part_JoinConnect.svg</file>
<file>icons/Part_JoinCutout.svg</file>
@@ -117,4 +118,4 @@
<file>translations/Part_ar.qm</file>
<file>translations/Part_vi.qm</file>
</qresource>
</RCC>
</RCC>

View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg815"
width="64"
height="64"
viewBox="0 0 64 64"
sodipodi:docname="Part_Points_from_Mesh.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs819" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1001"
id="namedview817"
showgrid="false"
inkscape:zoom="12.625"
inkscape:cx="32"
inkscape:cy="32"
inkscape:window-x="1791"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="svg815" />
<image
width="64"
height="64"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
"
id="image823"
x="0"
y="0" />
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -118,6 +118,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
<< "Part_Builder"
<< "Separator"
<< "Part_ShapeFromMesh"
<< "Part_PointsFromMesh"
<< "Part_MakeSolid"
<< "Part_ReverseShape"
<< copy