void DlgRevolution::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); if (!activeDoc) return; Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); std::vector<App::DocumentObject*> objs = activeDoc->getObjectsOfType (Part::Feature::getClassTypeId()); for (std::vector<App::DocumentObject*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = static_cast<Part::Feature*>(*it)->Shape.getValue(); if (shape.IsNull()) continue; TopExp_Explorer xp; xp.Init(shape,TopAbs_SOLID); if (xp.More()) continue; // solids not allowed xp.Init(shape,TopAbs_COMPSOLID); if (xp.More()) continue; // compound solids not allowed // So allowed are: vertex, edge, wire, face, shell and compound QTreeWidgetItem* item = new QTreeWidgetItem(ui->treeWidget); item->setText(0, QString::fromUtf8((*it)->Label.getValue())); item->setData(0, Qt::UserRole, QString::fromAscii((*it)->getNameInDocument())); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) item->setIcon(0, vp->getIcon()); } }
void SweepWidget::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; d->document = activeDoc->getName(); std::vector<Part::Feature*> objs = activeDoc->getObjectsOfType<Part::Feature>(); for (std::vector<Part::Feature*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = (*it)->Shape.getValue(); if (shape.IsNull()) continue; if (shape.ShapeType() == TopAbs_FACE || shape.ShapeType() == TopAbs_WIRE || shape.ShapeType() == TopAbs_EDGE || shape.ShapeType() == TopAbs_VERTEX) { QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromAscii((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); d->ui.selector->availableTreeWidget()->addTopLevelItem(child); } } }
void Mirroring::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); if (!activeDoc) return; Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; this->document = QString::fromLatin1(activeDoc->getName()); std::vector<App::DocumentObject*> objs = activeDoc->getObjectsOfType (Part::Feature::getClassTypeId()); for (std::vector<App::DocumentObject*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = static_cast<Part::Feature*>(*it)->Shape.getValue(); if (!shape.IsNull()) { QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromLatin1((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); ui->shapes->addTopLevelItem(child); } } }
void Tessellation::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); if (!activeDoc) return; Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; this->document = QString::fromAscii(activeDoc->getName()); std::vector<Part::Feature*> objs = activeDoc->getObjectsOfType<Part::Feature>(); for (std::vector<Part::Feature*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = (*it)->Shape.getValue(); if (shape.IsNull()) continue; bool hasfaces = false; TopExp_Explorer xp(shape,TopAbs_FACE); while (xp.More()) { hasfaces = true; break; } if (hasfaces) { QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromAscii((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); ui->treeWidget->addTopLevelItem(child); } } }
/** * Constructs a VisualInspection as a child of 'parent', with the * name 'name' and widget flags set to 'f'. */ VisualInspection::VisualInspection(QWidget* parent, Qt::WFlags fl) : QDialog(parent, fl), ui(new Ui_VisualInspection) { ui->setupUi(this); connect(ui->treeWidgetActual, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(onActivateItem(QTreeWidgetItem*))); connect(ui->treeWidgetNominal, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(onActivateItem(QTreeWidgetItem*))); connect(ui->buttonBox, SIGNAL(helpRequested()), Gui::getMainWindow(), SLOT(whatsThis())); //FIXME: Not used yet ui->textLabel2->hide(); ui->prefFloatSpinBox2->hide(); ui->prefFloatSpinBox1->setDecimals(Base::UnitsApi::getDecimals()); ui->prefFloatSpinBox2->setDecimals(Base::UnitsApi::getDecimals()); App::Document* doc = App::GetApplication().getActiveDocument(); // disable Ok button and enable of at least one item in each view is on buttonOk = ui->buttonBox->button(QDialogButtonBox::Ok); buttonOk->setDisabled(true); if (!doc) { ui->treeWidgetActual->setDisabled(true); ui->treeWidgetNominal->setDisabled(true); return; } Gui::Document* gui = Gui::Application::Instance->getDocument(doc); std::vector<App::DocumentObject*> obj = doc->getObjects(); Base::Type point = Base::Type::fromName("Points::Feature"); Base::Type mesh = Base::Type::fromName("Mesh::Feature"); Base::Type shape = Base::Type::fromName("Part::Feature"); for (std::vector<App::DocumentObject*>::iterator it = obj.begin(); it != obj.end(); ++it) { if ((*it)->getTypeId().isDerivedFrom(point) || (*it)->getTypeId().isDerivedFrom(mesh) || (*it)->getTypeId().isDerivedFrom(shape)) { Gui::ViewProvider* view = gui->getViewProvider(*it); QIcon px = view->getIcon(); SingleSelectionItem* item1 = new SingleSelectionItem(ui->treeWidgetActual); item1->setText(0, QString::fromUtf8((*it)->Label.getValue())); item1->setData(0, Qt::UserRole, QString::fromAscii((*it)->getNameInDocument())); item1->setCheckState(0, Qt::Unchecked); item1->setIcon(0, px); SingleSelectionItem* item2 = new SingleSelectionItem(ui->treeWidgetNominal); item2->setText(0, QString::fromUtf8((*it)->Label.getValue())); item2->setData(0, Qt::UserRole, QString::fromAscii((*it)->getNameInDocument())); item2->setCheckState(0, Qt::Unchecked); item2->setIcon(0, px); item1->setCompetitiveItem(item2); item2->setCompetitiveItem(item1); } } loadSettings(); }
void Tessellation::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); if (!activeDoc) return; Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; this->document = QString::fromAscii(activeDoc->getName()); std::vector<Part::Feature*> objs = activeDoc->getObjectsOfType<Part::Feature>(); double edgeLen = 0; bool foundSelection = false; for (std::vector<Part::Feature*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = (*it)->Shape.getValue(); if (shape.IsNull()) continue; bool hasfaces = false; TopExp_Explorer xp(shape,TopAbs_FACE); while (xp.More()) { hasfaces = true; break; } if (hasfaces) { Base::BoundBox3d bbox = (*it)->Shape.getBoundingBox(); edgeLen = std::max<double>(edgeLen, bbox.LengthX()); edgeLen = std::max<double>(edgeLen, bbox.LengthY()); edgeLen = std::max<double>(edgeLen, bbox.LengthZ()); QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromAscii((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); ui->treeWidget->addTopLevelItem(child); if (Gui::Selection().isSelected(*it)) { child->setSelected(true); foundSelection = true; } } } ui->spinMaximumEdgeLength->setValue(edgeLen/10); if (foundSelection) ui->treeWidget->hide(); }
QIcon ViewProviderInspection::getIcon() const { // Get the icon of the view provider to the associated feature QIcon px = inherited::getIcon(); App::Property* pActual = pcObject->getPropertyByName("Actual"); if (pActual && pActual->getTypeId().isDerivedFrom( App::PropertyLink::getClassTypeId())) { App::DocumentObject* docobj = ((App::PropertyLink*)pActual)->getValue(); if (docobj) { Gui::Document* doc = Gui::Application::Instance->getDocument(docobj->getDocument()); Gui::ViewProvider* view = doc->getViewProvider(docobj); px = view->getIcon(); } } return px; }
void TaskLinkDim::loadToTree(const TechDraw::DrawViewDimension* dim, const bool selected, Gui::Document* guiDoc) { QString label = QString::fromUtf8(dim->Label.getValue()); QString name = QString::fromUtf8(dim->getNameInDocument()); QString tooltip = label + QString::fromUtf8(" / ") + name; QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, tooltip); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = guiDoc->getViewProvider(dim); if (vp) child->setIcon(0, vp->getIcon()); if (selected) { ui->selector->selectedTreeWidget()->addTopLevelItem(child); } else { ui->selector->availableTreeWidget()->addTopLevelItem(child); } }
void SweepWidget::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; d->document = activeDoc->getName(); std::vector<Part::Feature*> objs = activeDoc->getObjectsOfType<Part::Feature>(); for (std::vector<Part::Feature*>::iterator it = objs.begin(); it!=objs.end(); ++it) { TopoDS_Shape shape = (*it)->Shape.getValue(); if (shape.IsNull()) continue; // also allow compounds with a single face, wire, edge or vertex if (shape.ShapeType() == TopAbs_COMPOUND) { TopoDS_Iterator it(shape); int numChilds=0; TopoDS_Shape child; for (; it.More(); it.Next(), numChilds++) { if (!it.Value().IsNull()) child = it.Value(); } if (numChilds == 1) shape = child; } if (shape.ShapeType() == TopAbs_FACE || shape.ShapeType() == TopAbs_WIRE || shape.ShapeType() == TopAbs_EDGE || shape.ShapeType() == TopAbs_VERTEX) { QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromLatin1((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); d->ui.selector->availableTreeWidget()->addTopLevelItem(child); } } }
void DlgExtrusion::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); if (!activeDoc) return; Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); this->document = activeDoc->getName(); this->label = activeDoc->Label.getValue(); std::vector<App::DocumentObject*> objs = activeDoc->getObjectsOfType (Part::Feature::getClassTypeId()); for (std::vector<App::DocumentObject*>::iterator it = objs.begin(); it!=objs.end(); ++it) { const TopoDS_Shape& shape = static_cast<Part::Feature*>(*it)->Shape.getValue(); if (canExtrude(shape)) { QTreeWidgetItem* item = new QTreeWidgetItem(ui->treeWidget); item->setText(0, QString::fromUtf8((*it)->Label.getValue())); item->setData(0, Qt::UserRole, QString::fromLatin1((*it)->getNameInDocument())); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) item->setIcon(0, vp->getIcon()); } } }
void SweepWidget::findShapes() { App::Document* activeDoc = App::GetApplication().getActiveDocument(); Gui::Document* activeGui = Gui::Application::Instance->getDocument(activeDoc); if (!activeGui) return; d->document = activeDoc->getName(); std::vector<Part::Feature*> objs = activeDoc->getObjectsOfType<Part::Feature>(); for (std::vector<Part::Feature*>::iterator it = objs.begin(); it!=objs.end(); ++it) { TopoDS_Shape shape = (*it)->Shape.getValue(); if (shape.IsNull()) continue; // also allow compounds with a single face, wire or vertex or // if there are only edges building one wire if (shape.ShapeType() == TopAbs_COMPOUND) { Handle(TopTools_HSequenceOfShape) hEdges = new TopTools_HSequenceOfShape(); Handle(TopTools_HSequenceOfShape) hWires = new TopTools_HSequenceOfShape(); TopoDS_Iterator it(shape); int numChilds=0; TopoDS_Shape child; for (; it.More(); it.Next(), numChilds++) { if (!it.Value().IsNull()) { child = it.Value(); if (child.ShapeType() == TopAbs_EDGE) { hEdges->Append(child); } } } // a single child if (numChilds == 1) { shape = child; } // or all children are edges else if (hEdges->Length() == numChilds) { ShapeAnalysis_FreeBounds::ConnectEdgesToWires(hEdges, Precision::Confusion(), Standard_False, hWires); if (hWires->Length() == 1) shape = hWires->Value(1); } } if (shape.ShapeType() == TopAbs_FACE || shape.ShapeType() == TopAbs_WIRE || shape.ShapeType() == TopAbs_EDGE || shape.ShapeType() == TopAbs_VERTEX) { QString label = QString::fromUtf8((*it)->Label.getValue()); QString name = QString::fromLatin1((*it)->getNameInDocument()); QTreeWidgetItem* child = new QTreeWidgetItem(); child->setText(0, label); child->setToolTip(0, label); child->setData(0, Qt::UserRole, name); Gui::ViewProvider* vp = activeGui->getViewProvider(*it); if (vp) child->setIcon(0, vp->getIcon()); d->ui.selector->availableTreeWidget()->addTopLevelItem(child); } } }