[Part workbench] add Create points object from mesh command
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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>
|
||||
|
||||
99
src/Mod/Part/Gui/Resources/icons/Part_Points_from_Mesh.svg
Normal file
99
src/Mod/Part/Gui/Resources/icons/Part_Points_from_Mesh.svg
Normal 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 |
@@ -118,6 +118,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||
<< "Part_Builder"
|
||||
<< "Separator"
|
||||
<< "Part_ShapeFromMesh"
|
||||
<< "Part_PointsFromMesh"
|
||||
<< "Part_MakeSolid"
|
||||
<< "Part_ReverseShape"
|
||||
<< copy
|
||||
|
||||
Reference in New Issue
Block a user