国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QGIS二次開發(fā):集成二維CAD控件MxDraw

這篇具有很好參考價值的文章主要介紹了QGIS二次開發(fā):集成二維CAD控件MxDraw。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文記錄在QGIS中集成MxDraw控件的方法。

QGIS二次開發(fā):集成二維CAD控件MxDraw,GIS,其他

?一、安裝MxDraw

參見筆者博文“FreeCAD二次開發(fā):集成二維CAD控件MxDraw”所述的安裝方法。

二、編譯安裝QGIS

參見筆者博文"Windows 10下編譯安裝QGIS"所述的編譯安裝方法。

二、集成方法

2.1 添加MxDrawView.ui文件

按照QGIS的管理,Qt ui文件可放到src/ui目錄及其子目錄下。因此,可將MxDrawView.ui拷貝到src/ui/gd目錄下,并修改src/ui/CMakeLists.txt,

# ...

if (BUILD_GDGIS)
	file(GLOB GD_UIS "${CMAKE_CURRENT_SOURCE_DIR}/gd/*.ui")
endif()

if (BUILD_WITH_QT6)
  QT6_WRAP_UI(QGIS_UIS_H
    ${QGIS_UIS}
    ${SYMBOLLAYER_UIS}
    ${EDITORWIDGET_UIS}
    ${PAINTEFFECT_UIS}
    ${PROCESSING_UIS}
    ${AUTH_UIS}
    ${RASTER_UIS}
    ${STYLEDOCK_UIS}
    ${LAYOUT_UIS}
    ${MESH_UIS}
    ${POINTCLOUD_UIS}
    ${_3D_UIS}
    ${CALLOUT_UIS}
    ${LABELING_UIS}
    ${NUMERICFORMAT_UIS}
    ${ATTRIBUTEFORMCONFIG_UIS}
    ${GEOREFERENCER_UIS}
    ${ANNOTATION_UIS}
    ${SENSOR_UIS}
	${GD_UIS}
  )
else()
  QT5_WRAP_UI(QGIS_UIS_H
    ${QGIS_UIS}
    ${SYMBOLLAYER_UIS}
    ${EDITORWIDGET_UIS}
    ${PAINTEFFECT_UIS}
    ${PROCESSING_UIS}
    ${AUTH_UIS}
    ${RASTER_UIS}
    ${STYLEDOCK_UIS}
    ${LAYOUT_UIS}
    ${MESH_UIS}
    ${POINTCLOUD_UIS}
    ${_3D_UIS}
    ${CALLOUT_UIS}
    ${LABELING_UIS}
    ${NUMERICFORMAT_UIS}
    ${ATTRIBUTEFORMCONFIG_UIS}
    ${GEOREFERENCER_UIS}
    ${ANNOTATION_UIS}
    ${SENSOR_UIS}
	${GD_UIS}
  )
endif()

# ...

2.2 添加MxDrawView類

界面相關(guān)的代碼放到src/gui目錄下,將MxDrawView.h、MxDrawView.cpp拷貝到src/gui/gd目錄下,并修改CMakeLists.txt文件

# ...

# sources for GDGIS
if (BUILD_GDGIS)

  set(GD_HDR_FILES
		gd/MxDrawview.h
	)

  set(GD_SRC_FILES
    gd/MxDrawview.cpp
  )

	SOURCE_GROUP("gd" FILES ${GD_HDR_FILES} ${GD_SRC_FILES})

  set(QGIS_GUI_HDRS
    ${QGIS_GUI_HDRS}
    ${GD_HDR_FILES}
  )

  set(QGIS_GUI_SRCS
    ${QGIS_GUI_SRCS}
    ${GD_SRC_FILES}
  )

endif()

# ...

# Link AxBase,AxContainer for GDGIS
if (BUILD_GDGIS)
  find_package(${QT_VERSION_BASE} COMPONENTS AxBase AxContainer REQUIRED)
  target_link_libraries(qgis_gui
    ${QT_VERSION_BASE}::AxBase
    ${QT_VERSION_BASE}::AxContainer
  )
endif()

2.3 實現(xiàn)MxDrawView類

仿照MxDrwa自帶例子TestQtMxDraw,實現(xiàn)MxDrawView

#ifndef gd_MxDrawView_H
#define gd_MxDrawView_H

#include "qgis_gui.h"
#include <QMainWindow>

namespace gd
{
    class Ui_MxDrawView;

    class GUI_EXPORT MxDrawView : public QMainWindow
    {
        Q_OBJECT

    public:
        MxDrawView(QWidget* parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
        ~MxDrawView();

    protected Q_SLOTS:

    private slots:
        void on_pushButton_clicked();

        void on_axWidget_ImplementCommandEvent(int iCommandId);

    protected:
        Ui_MxDrawView* ui;

    };
} // namespace gd

#endif // gd_MxDrawView_H
#include "MxDrawView.h"
#include "ui_MxDrawView.h"

using namespace gd;

MxDrawView::MxDrawView(QWidget* parent, Qt::WindowFlags flags)
	: QMainWindow(parent, flags),
	ui(new Ui_MxDrawView)
{
	// Set up ui
	ui->setupUi(this);
	connect(ui->axWidget, SIGNAL(ImplementCommandEvent(int)), this, SLOT(on_axWidget_ImplementCommandEvent(int)));
}

MxDrawView::~MxDrawView()
{
}
void MxDrawView::on_pushButton_clicked()
{
	// 執(zhí)行控件自定義命令函數(shù),命令的id為2,這個id用戶可以自己取任意數(shù),可以理解為是給執(zhí)行的命令一個編號.
	ui->axWidget->dynamicCall("DoCommand(const qint32&)", 2);
}

void MxDrawView::on_axWidget_ImplementCommandEvent(int iCommandId)
{

	if (iCommandId == 2)
	{
		// 調(diào)用控件打開函數(shù),打開H:盤的1.dwg文件。
		std::string filename = "H:\\1.dwg";
		//ui->axWidget->dynamicCall("OpenDwgFile(const QString&)", "H:\\1.dwg");
		ui->axWidget->dynamicCall("OpenDwgFile(const QString&)", QString::fromUtf8(filename.c_str()));
	}

2.4?嵌入MxDrawView窗體

修改src/app/qgisapp.cpp,創(chuàng)建并嵌入MxFrawView窗體,

QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipBadLayers, bool skipVersionCheck, const QString &rootProfileLocation, const QString &activeProfile, QWidget *parent, Qt::WindowFlags fl )
  : QMainWindow( parent, fl )
  , mSplash( splash )
{
//...
  mCentralContainer = new QStackedWidget;
  mCentralContainer->insertWidget(0, mMapCanvas);

#ifdef GDGIS
  QTabWidget* tabWidget = new QTabWidget;
  tabWidget->addTab(mCentralContainer, "Map");
  tabWidget->addTab(new gd::MxDrawView(), "CAD");
  centralLayout->addWidget(tabWidget, 0, 0, 2, 1);
#else
  mCentralContainer->insertWidget(1, mWelcomePage);
  centralLayout->addWidget(mCentralContainer, 0, 0, 2, 1);
#endif 

  mInfoBar->raise();
//...
}

網(wǎng)絡資料

?FreeCAD二次開發(fā):集成二維CAD控件MxDrawhttps://blog.csdn.net/qq_26221775/article/details/121192465?spm=1001.2014.3001.5502

Windows 10下編譯安裝QGIShttps://blog.csdn.net/qq_26221775/article/details/122792445?spm=1001.2014.3001.5502MxDrawhttps://www.mxdraw.com/

QGIShttps://www.qgis.org/en/site/文章來源地址http://www.zghlxwxcb.cn/news/detail-610775.html

到了這里,關(guān)于QGIS二次開發(fā):集成二維CAD控件MxDraw的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • QGIS3.28的二次開發(fā)一:編譯工程

    QGIS3.28的二次開發(fā)一:編譯工程

    更新:最近寫了個3.18.3版本的編譯教程,沒有出現(xiàn)任何問題。 QGIS3.18編譯教程_程序員班長的博客-CSDN博客 環(huán)境:VS2019+OSGeo4W+CMake_3.26+Cygwin64+QGIS_3.28 注意:一定要按照步驟順序來! VS2019下載鏈接 https://my.visualstudio.com/Downloads?q=visual%20studio%202019wt.mc_id=o~msft~vscom~older-downloads 下載完

    2024年02月15日
    瀏覽(33)
  • QGIS3.28的二次開發(fā)九:添加矢量要素

    QGIS3.28的二次開發(fā)九:添加矢量要素

    對矢量要素的編輯是 GIS 軟件很重要的功能點之一,也是最難實現(xiàn)的功能點之一。編輯矢量要素涉及到很多方面的考慮,包括且不限于矢量要素的幾何類型,拓撲關(guān)系,構(gòu)成要素的節(jié)點的增刪改,編輯會話 (session) 的啟動、回溯和提交,要素屬性的增刪改等。本文不會也不可能

    2024年02月12日
    瀏覽(28)
  • CAD 二次開發(fā)-Handle

    在 CAD 二次開發(fā)中, Handle 是每個 CAD 實體的唯一標識符,類似于一個 ID。它是一個 long 類型的整數(shù),可以用于標識和引用 CAD 實體,如圖形 對象、塊、圖層、實體 等。 使用 Handle 可以方便地操作 CAD 實體,例如: 獲取 CAD 實體的 Handle。 根據(jù) Handle 獲取 CAD 實體。 在上面的示例

    2023年04月20日
    瀏覽(45)
  • 網(wǎng)頁CAD二次開發(fā)(在線CAD SDK)用到的數(shù)學庫

    網(wǎng)頁CAD二次開發(fā)(在線CAD SDK)用到的數(shù)學庫

    在CAD二次開發(fā)中, 正確的使用數(shù)學庫是十分重要的, 我們不需要會很多數(shù)學知識, 只要會普通的四則運算和調(diào)用mxcad提供的api即可,通過[快速入門]了解了打開圖紙后,如果要對圖形進行處理,就需要各種計算, mxcad提供了一些類來參與計算或者表示一些數(shù)據(jù)結(jié)構(gòu),相關(guān)的API查詢

    2024年02月20日
    瀏覽(23)
  • Cad二次開發(fā)關(guān)于多段線

    NumberOfVertices 是一個表示多段線(Polyline)對象中頂點數(shù)量的屬性。頂點表示多段線上的角點或拐點,決定了多段線的形狀。 在AutoCAD等CAD軟件中,多段線是由一系列直線段組成的圖形對象。它可以包含任意數(shù)量的頂點,并且可以是開放的或閉合的。 NumberOfVertices 屬性用于獲取

    2024年02月14日
    瀏覽(25)
  • QGIS二次開發(fā)六:VS不借助QT插件創(chuàng)建UI界面

    QGIS二次開發(fā)六:VS不借助QT插件創(chuàng)建UI界面

    上一篇博客我們說了在VS中如何使用QT插件來創(chuàng)建UI界面,但是我們二次開發(fā)QGIS的第一篇博客就說了,最好使用OSGeo4W中自動下載的QT進行QGIS二次開發(fā),這樣兼容性是最好的,那么該如何在VS中不使用外部安裝的QT以及QT的VS插件情況下進行UI界面的創(chuàng)建和使用呢? 如果你仔細看完

    2024年02月13日
    瀏覽(29)
  • 【CAD二次開發(fā)】給CAD添加TRUSTEDPATHS避免dll插件信任彈窗

    【CAD二次開發(fā)】給CAD添加TRUSTEDPATHS避免dll插件信任彈窗

    找到配置文件目錄,遍歷下面的每個配置文件; 找到 Variables 下的 TRUSTEDPATHS 項目;在后面添加新的目錄即可,多個目錄使用分號分隔;

    2024年02月07日
    瀏覽(24)
  • 2.ObjectArx .NET 二次開發(fā)入門(CAD 2016)

    2.ObjectArx .NET 二次開發(fā)入門(CAD 2016)

    愿你出走半生,歸來仍是少年!? 目錄 1. 環(huán)境準備 1.1 ObjectArx .NET 1.2 VS安裝 ?1.2.1 CAD與Visiul Studio版本對照 ?1.2.1 Visiul Studio2022關(guān)于.NET 4.5的處理 2.Hellow World 2.1新建項目 2.2加載依賴 2.3 編寫第一個命令 2.4 生成、加載并測試 ????????開發(fā)這事情,本著有新的肯定用新的思想,

    2024年02月11日
    瀏覽(20)
  • python-cad二次開發(fā)入門教程

    python-cad二次開發(fā)入門教程

    用python做cad二次開發(fā)已經(jīng)快兩年的時間了,今天看到群里一個哥們到處問怎么python怎么進行cad二次開發(fā),不禁回想起當初自己找教程找的焦頭爛額,卻始終不得辦法的辛酸?,F(xiàn)在網(wǎng)上的教程逐漸多了起來,但是我看很多都沒有直接講一個問題,那就是“ 我到底怎么去二次開發(fā)

    2024年02月06日
    瀏覽(13)
  • c# CAD二次開發(fā) 模擬CAD移動圖形, 通過圓現(xiàn)在注記,改變圖形顏色

    c# CAD二次開發(fā) 模擬CAD移動圖形, 通過圓現(xiàn)在注記,改變圖形顏色 using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Application = Autodesk.AutoCAD.Applicat

    2024年02月07日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包