目录
一、缘起
主要还是项目功能需求,方便用户操作使用,
同时主要就是记录一下,谨防遗忘。
前期准备工作及相关环境可参考以下:
基于QT CC 点云二开及魔改记录_cc点云显示-优快云博客
至此,CC相关的应用功能基本上探索的差不多了,后期就是核心库中的东西或者是其他点云核心库及算法方面的探索了。
二、功能准备
1.2D标签功能,通过之前的一些列操作,已经对CC的界面层相关应用功能已经了有了不少深入的了解所以对于CC原本就具有的2D标签功能移植已经不是什么问题剩余就是标签内容的修改定制问题。
2.ROI选定问题,CC是不具备这功能的,但是CC有对3D点云模型的 剖面截取、裁剪盒这些功能,正好可以拿来作用一番。
三、裁剪盒的基本分析
void MainWindow::activateClippingBoxMode(){
ccClippingBoxTool *m_clipTool;
m_clipTool->linkWith(win);
if (m_clipTool->addAssociatedEntity(entity))
if (m_clipTool->getNumberOfAssociatedEntity() == 0)//{return m_clipBox ? m_clipBox->getContainer().getChildrenNumber() : 0;}
{
m_clipTool->close();
return;
}
if (m_clipTool->start())
}
//ccClippingBoxTool.cpp
class ccClippingBoxTool{
exportButton//剖面切片导出按钮
exportMultButton//多层剖面切片导出按钮
editBoxToolButton//边界盒编辑信息按钮
ccClipBox* m_clipBox;
connect(exportButton,&QToolButton::clicked,this, &ccClippingBoxTool::exportSlice);
connect(editBoxToolButton,&QToolButton::clicked,this, &ccClippingBoxTool::editBox);
void ccClippingBoxTool::editBox(){
ccBBox box;
ccGLMatrix transformation;
m_clipBox->get(box, transformation);
ccBoundingBoxEditorDlg bbeDlg(this);
bbeDlg.setBaseBBox(box, false);
bbeDlg.showInclusionWarning(false);
bbeDlg.showBoxAxes(true);
bbeDlg.setBoxAxes( transformation.getColumnAsVec3D(0),
transformation.getColumnAsVec3D(1),
transformation.getColumnAsVec3D(2) );
if (!bbeDlg.exec())
return;
box = bbeDlg.getBox();
}
}
//ccBoundingBoxEditorDlg=》ccBoundingBoxEditorDlg.cpp{
class ccBoundingBoxEditorDlg{
pointTypeComboBox widthComboBox
/*坐标信息
X: xDoubleSpinBox dxDoubleSpinBox
Y: