HALCON如何读取DXF文件

合集下载

HALCON运算符及功能-中文

HALCON运算符及功能-中文

HALCON运算符及功能Chapter1:Classification1.1Gaussian-Mixture-Models1.add_sample_class_gmm功能:把一个训练样本添加到一个高斯混合模型的训练数据上。

2.classify_class_gmm功能:通过一个高斯混合模型来计算一个特征向量的类。

3.clear_all_class_gmm功能:清除所有高斯混合模型。

4.clear_class_gmm功能:清除一个高斯混合模型。

5.clear_samples_class_gmm功能:清除一个高斯混合模型的训练数据。

6.create_class_gmm功能:为分类创建一个高斯混合模型。

7.evaluate_class_gmm功能:通过一个高斯混合模型评价一个特征向量。

8.get_params_class_gmm功能:返回一个高斯混合模型的参数。

9.get_prep_info_class_gmm功能:计算一个高斯混合模型的预处理特征向量的信息内容。

10.get_sample_class_gmm功能:从一个高斯混合模型的训练数据返回训练样本。

11.get_sample_num_class_gmm功能:返回存储在一个高斯混合模型的训练数据中的训练样本的数量。

12.read_class_gmm功能:从一个文件中读取一个高斯混合模型。

13.read_samples_class_gmm功能:从一个文件中读取一个高斯混合模型的训练数据。

14.train_class_gmm功能:训练一个高斯混合模型。

15.write_class_gmm功能:向文件中写入一个高斯混合模型。

16.write_samples_class_gmm功能:向文件中写入一个高斯混合模型的训练数据。

1.2Hyperboxes1.clear_sampset功能:释放一个数据集的内存。

2.close_all_class_box功能:清除所有分类器。

Halcon十九类算子汇总

Halcon十九类算子汇总

HALCON算子一Classification1.1 Gaussian-Mixture-Models1.add_sample_class_gmm把一个训练样本添加到一个高斯混合模型的训练数据上。

2.classify_class_gmm通过一个高斯混合模型来计算一个特征向量的类。

3. clear_all_class_gmm清除所有高斯混合模型。

4. clear_class_gmm清除一个高斯混合模型。

5. clear_samples_class_gmm清除一个高斯混合模型的训练数据。

6. create_class_gmm为分类创建一个高斯混合模型。

7.evaluate_class_gmm通过一个高斯混合模型评价一个特征向量。

8. get_params_class_gmm返回一个高斯混合模型的参数。

9. get_prep_info_class_gmm计算一个高斯混合模型的预处理特征向量的信息内容。

10. get_sample_class_gmm从一个高斯混合模型的训练数据返回训练样本。

11. get_sample_num_class_gmm返回存储在一个高斯混合模型的训练数据中的训练样本的数量。

12. read_class_gmm从一个文件中读取一个高斯混合模型。

13. read_samples_class_gmm从一个文件中读取一个高斯混合模型的训练数据。

14. train_class_gmm训练一个高斯混合模型。

15. write_class_gmm向文件中写入一个高斯混合模型。

16. write_samples_class_gmm向文件中写入一个高斯混合模型的训练数据。

1.2 Hyperboxes1. clear_sampset释放一个数据集的内存。

2. close_all_class_box清除所有分类器。

3. close_class_box清除分类器。

4. create_class_box创建一个新的分类器。

dxf读取例程

dxf读取例程

dxf读取例程DXF(Drawing Exchange Format)是一种CAD(计算机辅助设计)文件格式,用于将图形数据从一个CAD程序导出并传输到另一个CAD程序中。

本文将介绍DXF读取的相关参考内容,包括DXF文件结构、DXF文件的常见实体和属性、DXF读取的实现方法和常用的DXF读取库。

首先,我们来了解一下DXF文件的结构。

DXF文件是以ASCII码形式存储,可以使用文本编辑器打开和查看。

DXF文件主要由多个段(section)和块(block)组成。

段中包含了多个实体(entity),每个实体对应一个图形对象,如直线、圆等。

每个实体包含一系列的属性(属性代码和属性值),用于描述该实体的特征和属性。

DXF文件还包含了一些元数据(metadata),如文件版本、文件单位、文件的创建人等。

了解DXF文件的结构对于读取和解析DXF文件非常重要。

其次,我们需要了解DXF文件中的一些常见实体和属性。

常见的实体包括点(Point)、直线(Line)、圆(Circle)、多段线(LWPolyline)、文本(Text)等。

每个实体都具有一组属性,这些属性以属性代码和属性值的形式存储。

例如,直线实体的属性包括起点坐标、终点坐标、颜色、线宽等。

文本实体的属性包括文本内容、位置、字体、高度等。

了解DXF文件中实体和属性的种类和特征,可以帮助我们准确地读取和解析DXF文件中的数据。

接下来,我们需要选择适合的方法来实现DXF文件的读取。

实现DXF文件的读取可以采用底层的文本解析方法,也可以使用现有的DXF读取库。

底层的文本解析方法需要我们自己编写解析代码,按照DXF文件的结构和规则解析文件内容,提取所需数据。

这种方法需要一定的编程能力和对DXF文件格式的深入了解。

另一种方法是使用现有的DXF读取库,这些库已经封装了DXF文件的读取和解析功能,可以简化我们的开发工作。

常见的DXF读取库包括EZdxf、libDXF、Teigha等。

维宏操作系统水刀导入dxf文件教程

维宏操作系统水刀导入dxf文件教程

1、对dxf文件的要求:工件图纸右下角加一个点,为坐标原点。

系统自动识别定位。

2、系统界面简介:维宏系统水刀软件打开后有两个界面,(下列实例截图为四轴操作软件,与公司三轴操作系统出入不大,可以通用)一个是制图界面如下↓一个是控制界面如下↓3、导入dxf文件步骤3.1在制图界面点击左上角文件→导入dxf格式文件3.2定位选择做好的dxf图纸文件点击打开或者双击文件打开3.3进行导入的文件处理3.3.1若出现示例这种文件,切割次数过多,曲线分很多次切割(图上每一个黑点就是刀的一次开始切割点)1点击左侧全部对象勾选所有线段2点击上方工具栏对象→对象合并合并完效果如下图该工件两刀即可完成切割3.3.2工件加工顺序、加工刀补、引刀线的设置1 先让界面显示加工顺序、刀具路径、引刀线2 加工顺序设定第一种方法点击左侧工具栏设置加工顺序然后按照想拟定的加工顺序1、2、3……依次点击图上线段第二种方法选中图上一条线段右键在菜单栏选择手动指定加工顺序输入1、2、3……工件加工顺序设置完成3刀具路径设置全部对象勾选后点击上方工具栏对象→刀具路径4弹出界面选择电脑→确定然后放大观察绿色线(刀头切割线)是否在废料上面,如果在不用更改,如果不在点击左侧坡口方向勾选或者不勾选以调整刀具切割位置刀具路径设置完成5 引刀线设置先选择要设置引刀线的线段→点击左侧引刀线设置(封闭的图形需要设置引刀线例如打孔,如果是挖豁,图纸上需要事先考虑到引刀线长度及位置,在CAD图纸上做出)在弹出界面可以修改引刀线角度长度及类型(弧线型引刀线或者直线型引刀线)点击确定后放大看引刀线位置是在废料上与否,如果不在勾选或者不勾选左侧工具栏填充更改引刀线位置引刀线设置完成6 点击左上角保存按钮,保存处理好的加工文件。

选择保存位置→命名文件→点击保存即可。

保存完成后即可在控制界面进行工件加工。

如何读取DXF格式文件

如何读取DXF格式文件

如何读取DXF格式文件?--------------------------------------------------------------------------------OpenGL是美国SGI公司最新推出的一套开放式的三维图形软件接口,适用于广泛的计算机环境,从个人计算机到工作站,OpenGL都能实现高性能的三维图形功能。

OpenGL本身不仅提供对简单图元的操作和控制,还提供了许多函数用于复杂物体的建模。

但是,我们通常喜欢使用AutoCAD和3DS及3Dmax等工具来建立模型,并且我们已经有了很多这样的模型,那么我们如何才能资源共享,避免重复劳动呢?利用CAD图形标准数据交换格式—DXF格式,我们就能很容易地实现资源共享,而不需要重复建模。

DXF文件的结构很清楚,具体如下:1. 标题段(HEADER )有关图形的一般信息都可以DXF 文件的这一节找到,每一个参数具有一个变量名和一个相关值。

2. 表段这一段包含的指定项的定义,它包括:a、线形表(LTYPE)b、层表(LYER)c、字体表(STYLE)d、视图表(VIEW)e、用户坐标系统表(UCS)f、视窗配置表(VPORT)g、标注字体表(DIMSTYLE)h、申请符号表(APPID)3. 块段(BLOCKS)这一段含有块定义实体,这些实体描述了图形种组成每个块的实体。

4. 实体段(ENTITIES )这一段含有实体,包括任何块的调用。

5. END OF FILE(文件结束)下面是对DXF的基本结构举一实例进行说明:0 0 后接SECTIONSECTION 表明这是一个段的开始2 2 后接的是段名HEADER 说明该段是HEADER 段(标题段)9$ACADVER 文件是由AUTOCAD 产生的1AC10089 9 后接$UCSORG$UCSORG 用户坐标系原点在世界坐标系中的坐标10 10 对应X0.0 X 的值20 20 对应Y0.0 Y 的值30 30 对应Z0.0 Z 的值9$UCSXDIR 这是一段不太相关的部分,略去101.0... ....9 9 后接$EXTMIN$EXTMIN 说明三维实体模型在世界坐标系中的最小值10 10 对应X-163.925293 X 的值20 20 对应Y-18.5415860.0 Y 的值30 30 对应Z78.350945 Z 的值9 9 后接$EXTMAN$EXTMAX 说明三维实体模型在世界坐标系中的最大值10 10 对应X202.492279 X 的值20 20 对应Y112.634300 Y 的值30 30 对应Z169.945602 Z 的值0 0 后接ENDSECENDSEC 说明这一段结束了0 0 后接SECTIONSECTION 表明这是一个段的开始2 2 后接的是段名TABLES 说明该段是TABLES 段(表段)... ... ... ... 该段对我们不太相关,此处略去不进行说明0 0 后接ENDSECENDSEC 说明这一段结束了0 0 后接SECTIONSECTION 表明这是一个段的开始2 2 后接的是段名ENTITIES 说明该段是ENTITIES 段(实体段)这是我0 们要详细说明的段,该段包含了所有实体的POLYLINE 点的坐标和组成面的点序。

halcon教程

halcon教程

halcon教程Halcon是一种广泛应用于机器视觉领域的软件库,它提供了丰富的图像处理和分析功能。

本教程将介绍Halcon的基本使用方法,涵盖图像读取、预处理、特征提取、目标检测等常用操作。

1. 图像读取使用Halcon的read_image函数可以从文件中读取图像数据。

可以通过指定文件路径来读取图像,例如:read_image(Image, 'image.jpg')2. 图像预处理在图像处理之前,通常需要对图像进行一些预处理操作,以改善后续处理的效果。

Halcon提供了丰富的预处理函数,如灰度化、平滑、滤波等。

例如,可以使用以下代码对图像进行灰度化处理:gray_image(Image, GrayImage)3. 特征提取Halcon提供了多种特征提取函数,可以从图像中获取有用的信息。

常用的特征包括边缘、角点、斑点等。

例如,可以使用find_edges函数在图像中提取边缘信息:find_edges(GrayImage, Edges, 10, 40)4. 目标检测目标检测是机器视觉中的一个重要任务,Halcon提供了多种目标检测函数和算法。

例如,可以使用find_shape_models函数对图像中的形状进行检测:find_shape_models(GrayImage, Model, AngleStart, AngleExtent, MinScore, NumMatches, SubPixel, Greediness, Result)以上是一些Halcon的基本用法,通过学习这些基础知识,您可以在机器视觉应用中更好地运用Halcon库进行图像处理和分析。

希望这些信息对您有所帮助!。

C++Qt之halcon读取像素项目过程详解

C++Qt之halcon读取像素项目过程详解

C++Qt之halcon读取像素项⽬过程详解项⽬环境:win10,qt5.14,halcon20功能:1.读取指定图像2.读取指定⽬录下的图像项⽬配置⽂件QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets# The following define makes your compiler emit warnings if you use# any Qt feature that has been marked deprecated (the exact warnings# depend on your compiler). Please consult the documentation of the# deprecated API in order to know how to port your code away from it.DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.# In order to do so, uncomment the following line.# You can also select to disable deprecated APIs only up to a certain version of Qt.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \main.cpp \widget.cppHEADERS += \widget.h# Default rules for deployment.qnx: target.path = /tmp/$${TARGET}/binelse: unix:!android: target.path = /opt/$${TARGET}/bin!isEmpty(target.path): INSTALLS += target#win32和unix下的include实际上是⼀样的win32:{#halcon配置代码,已经将include、lib拷贝到项⽬之下LIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconcLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconcppLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconcppxlLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconcxlLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhalconxlLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhdevenginecppLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -lhdevenginecppxlLIBS += -L$$PWD/halcon/win/lib/x64-win64/ -llibiomp5md#INCLUDEPATH += $$PWD/halcon/win/include#DEPENDPATH += $$PWD/halcon/win/includeINCLUDEPATH += $$PWD/halcon/linux/includeDEPENDPATH += $$PWD/halcon/linux/include}unix:{LIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhalconLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhalconcLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhalconcppLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhalconcppxlLIBS += -L$$PWD/halcon/linux/lib/x64-linux/ -lhalconcxlLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhalconxlLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhdevenginecppLIBS += -L$$PWD/halcon/linux/lib/x64-linux -lhdevenginecppxlINCLUDEPATH += $$PWD/halcon/linux/includeDEPENDPATH += $$PWD/halcon/linux/include}头⽂件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QLabel>#include <QPushButton>#include <QGroupBox>#include <QRadioButton>#include <QStackedWidget>#include <QLineEdit>#include <QStyle>#include <QDebug>#include <QStandardItemModel>#include <QTabWidget>#include <QTableWidget>#include <QHeaderView>#include "halconcpp/HalconCpp.h"#include "Halcon.h"using namespace HalconCpp;#pragma execution_character_set("utf-8") //⽀持中⽂class Widget : public QWidget{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:QLabel *image_label;HTuple hv_WindowHandle;//HTuple hv_AcqHandle;HObject ho_Image;HTuple hv_Width, hv_Height;//Hlong windID;Hlong MainWndID;QGroupBox *groupbox1;QRadioButton *radio1;QRadioButton *radio2;QStackedWidget *stackedwidget;QWidget *page1;QWidget *page2;QLineEdit *ledit1;QPushButton *btn1;QLineEdit *ledit2;QPushButton *btn2;QTableWidget *tableWidget;QTableWidgetItem *item0;QString file_path;QStringList filenameList;//QStringList fullfilename;QPushButton *btn3;void create_widget();void filelist_refresh();QStringList readfilelist;QString file_name1;QString file_name2;int imageNo=0;/*enum CellType{ct_isUsed,ct_rowNo};enum FieldColNum{col_isUsed,col_rowNo};QLabel *labCellIndex;QLabel *labCellType;QLabel *labID;void createItemsARow(bool isUsed,int rowNo,QString FileName); */private slots:void on_radioButton1_clicked();void on_radioButton2_clicked();void on_btn3_clicked();//void on_item_clicked(QTableWidgetItem * item);void on_checkchangestate(int, int);//void slotHeaderClicked(int);};#endif // WIDGET_Hc++⽂件#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent){create_widget();connect(radio1,SIGNAL(clicked(bool)),this,SLOT(on_radioButton1_clicked()));connect(radio2,SIGNAL(clicked(bool)),this,SLOT(on_radioButton2_clicked()));connect(btn1,SIGNAL(clicked(bool)),this,SLOT(on_btn1_clicked()));connect(btn2,SIGNAL(clicked(bool)),this,SLOT(on_btn2_clicked()));connect(btn3,SIGNAL(clicked(bool)),this,SLOT(on_btn3_clicked()));connect(tableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(on_checkchangestate(int, int)));//connect(tableWidget->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(slotHeaderClicked(int)));}Widget::~Widget(){}void Widget::create_widget(){this->setFixedSize(916,547);this->setWindowTitle("图像读取");image_label =new QLabel(this);image_label->setGeometry(290,20,611,461);MainWndID = (Hlong)this->image_label->winId();SetWindowAttr("background_color","gray");//设置背景为灰⾊OpenWindow(0, 0, image_label->width(), image_label->height(), MainWndID,"visible", "", &hv_WindowHandle);HDevWindowStack::Push(hv_WindowHandle);groupbox1 = new QGroupBox(this);groupbox1->setGeometry(10,20,261,121);QLabel *label1 =new QLabel(this->groupbox1);label1->setText("采集模式");label1->setGeometry(0,0,261,21);radio1 = new QRadioButton(tr("指定图像"),this->groupbox1);radio2 = new QRadioButton(tr("⽂件⽬录"),this->groupbox1);radio1->setGeometry(50,40,100,20);radio2->setGeometry(50,70,100,20);radio1->setChecked(true);stackedwidget = new QStackedWidget(this);stackedwidget->setGeometry(20,160,251,301);page1 = new QWidget();QLabel *label2 =new QLabel(page1);label2->setGeometry(0,0,100,20);label2->setText("指定图⽚");ledit1 = new QLineEdit(page1);//ledit1->setGeometry(30,130,150,30);ledit1->setGeometry(0,130,200,30);ledit1->setReadOnly(true);btn1 = new QPushButton(page1);btn1->setGeometry(200,130,30,30);QLabel *label3 =new QLabel(page2);label3->setGeometry(0,0,100,20);label3->setText("⽂件⽬录");ledit2 = new QLineEdit(page2);ledit2->setGeometry(30,30,150,30);btn2 = new QPushButton(page2);btn2->setGeometry(180,30,30,30);btn2->setIcon(style()->standardIcon(QStyle::SP_FileDialogContentsView));//QTableWidget *tableWidget = new QTableWidget(10,3,page2);tableWidget = new QTableWidget(page2);//QTableWidget *tableWidget = new QTableWidget(page2);tableWidget->setRowCount(0);tableWidget->setColumnCount(3);//page2->addWidget();tableWidget->setGeometry(0,70,251,230);//tableWidget->resizeColumnsToContents();//tableWidget->resizeRowsToContents();//tableWidget->setColumnWidth(3,200);tableWidget->setColumnWidth(0,50);tableWidget->setColumnWidth(1,50);//tableWidget->setColumnWidth(2,QHeaderView::Stretch);tableWidget->setColumnWidth(2,120);//tableWidget->setRowHeight(3,60);tableWidget->verticalHeader()->setVisible(false); //隐藏列表头//tableWidget->horizontalHeader()->setVisible(false); //隐藏⾏表头tableWidget->show();QStringList headerText;headerText<<"选取"<<"索引"<<"⽂件名";tableWidget->setHorizontalHeaderLabels(headerText);tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);tableWidget->horizontalHeader()->setDisabled(true);//禁⽌⽤户拖动改变列宽tableWidget->verticalHeader()->setDisabled(true);//设置⾏不能拖动//tableWidget->setEnabled(false);stackedwidget->addWidget(page1);stackedwidget->addWidget(page2);btn3 = new QPushButton(this);btn3->setGeometry(540,505,91,31);btn3->setText("执⾏");}void Widget::on_radioButton1_clicked(){qDebug()<<"1";stackedwidget->setCurrentIndex(0);}void Widget::on_radioButton2_clicked(){qDebug()<<"2";stackedwidget->setCurrentIndex(1);}void Widget::on_btn1_clicked(){qDebug()<<"btn1";qDebug() << "按下了1号按钮,读取图⽚";file_name1 = QFileDialog::getOpenFileName(this,tr("open file"),".",tr("Video Files(*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm *.jpeg)")); ledit1->setText(file_name1);}void Widget::on_btn2_clicked(){//imageNo = 0;qDebug()<<"btn2";qDebug() << "按下了2号按钮,读取图⽚";tryfile_path = QFileDialog::getExistingDirectory(this,tr("Open Directory"),"./");qDebug() << file_path;ledit2->setText(file_path);QDir dir(file_path);// cout<<"bian li kai shi "<<endl;if(!dir.exists()){qDebug()<<"⽂件路径错误";//return false;}dir.setFilter(QDir::Files | QDir::NoSymLinks);QStringList filters;filters <<"*.bmp"<<"*.jpg"<<"*.pbm"<<"*.pgm"<<"*.png"<<"*.ppm"<<"*.xbm"<<"*.xpm"<<"*.jpeg"; dir.setNameFilters(filters);filenameList = dir.entryList();qDebug()<<filenameList;///tableWidget->clearContents();tableWidget->setRowCount(filenameList.count());for(int i=0;i<filenameList.count();i++){qDebug()<<filenameList[i];//QTableWidgetItem *item = new QTableWidgetItem();item0 = new QTableWidgetItem();item0->setCheckState(Qt::Checked);tableWidget->setItem(i, 0, item0);QTableWidgetItem *item1 = new QTableWidgetItem(QString::number(i));tableWidget->setItem(i, 1, item1);QTableWidgetItem *item2 = new QTableWidgetItem(filenameList[i]);tableWidget->setItem(i, 2, item2);}filelist_refresh();}catch (HException &HDevExpDefaultException){HTuple hv_Exception;HDevExpDefaultException.ToHTuple(&hv_Exception);}}void Widget::on_btn3_clicked(){qDebug() << "按下了3号按钮,读取图⽚";ClearWindow(hv_WindowHandle);if(radio1->isChecked()){//显⽰指定图⽚try{//QString file_name;QString image;if(file_name1.isNull()){image = "";}else{image=file_name1;}ReadImage(&ho_Image,image.toLatin1().data());GetImageSize(ho_Image, &hv_Width, &hv_Height);SetPart(hv_WindowHandle, 0, 0, hv_Height, hv_Width);DispObj(ho_Image, HDevWindowStack::GetActive());}catch (HException &HDevExpDefaultException)HDevExpDefaultException.ToHTuple(&hv_Exception);}}else if(radio2->isChecked()){//显⽰⽂件⽬录下选取图像]if(imageNo>=readfilelist.count()){imageNo=0;}try{//QString file_name;QString image;if(readfilelist.isEmpty()){image="";}else{image = readfilelist[imageNo];}ReadImage(&ho_Image,image.toLatin1().data());GetImageSize(ho_Image, &hv_Width, &hv_Height);SetPart(hv_WindowHandle, 0, 0, hv_Height, hv_Width);DispObj(ho_Image, HDevWindowStack::GetActive());imageNo++;}catch (HException &HDevExpDefaultException){HTuple hv_Exception;HDevExpDefaultException.ToHTuple(&hv_Exception);}}}void Widget::on_checkchangestate(int value1, int value2){if(value2==0&&tableWidget->item(value1, value2)->checkState() == Qt::Checked){qDebug()<<"选中";}else if(value2==0&&tableWidget->item(value1, value2)->checkState() == Qt::Unchecked){qDebug()<<"未选中";}filelist_refresh();}void Widget::filelist_refresh(){imageNo = 0;readfilelist.clear();for(int i=0;i<tableWidget->rowCount();i++){if(tableWidget->item(i, 0)->checkState() == Qt::Checked){readfilelist.append(file_path+"/"+filenameList[i]);}}qDebug()<<readfilelist;//readfilelist}到此这篇关于C++ Qt之halcon读取像素项⽬过程详解的⽂章就介绍到这了,更多相关C++ Qt之halcon读取像素项⽬内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

DXF格式文件读取方法

DXF格式文件读取方法

DXF格式文件读取方法DXF(Drawing Exchange Format)是一种用于交换CAD数据的文件格式,它可以包含2D和3D图形和元数据。

下面是使用Python读取DXF文件的方法。

1. 安装依赖:首先,需要安装适用于DXF文件的Python库。

其中,较流行的库是`ezdxf`和`dxfgrabber`。

可以使用以下命令安装其中一个库:```pip install ezdxfpip install dxfgrabber```2.导入库:使用以下代码导入所需的库:```pythonimport ezdxf#或者import dxfgrabber```3.读取DXF文件:选择适用的库,使用以下代码读取DXF文件:使用`ezdxf`库:```pythondoc = ezdxf.readfile('example.dxf')```使用`dxfgrabber`库:```pythondoc = dxfgrabber.readfile('example.dxf')```4.访问实体:接下来,可以通过以下方式访问DXF中的实体:使用`ezdxf`库:```pythonmsp = doc.modelspace( # 访问模型空间for entity in msp:if entity.dxftype( == 'LINE': # 仅处理类型为线的实体start = entity.dxf.start # 起点坐标end = entity.dxf.end # 终点坐标print(f"Line: {start}, {end}")elif entity.dxftype( == 'CIRCLE': # 处理圆center = entity.dxf.center # 圆心坐标radius = entity.dxf.radius # 半径print(f"Circle: {center}, {radius}")```使用`dxfgrabber`库:```pythonentities = doc.entitiesfor entity in entities:if entity.dxftype == 'LINE':start = entity.start # 起点坐标end = entity.end # 终点坐标print(f"Line: {start}, {end}")elif entity.dxftype == 'CIRCLE':center = entity.center # 圆心坐标radius = entity.radius # 半径print(f"Circle: {center}, {radius}")```以上代码遍历DXF文件中的所有实体,并打印出线段和圆的相关信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档