![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
qcad
wblong_cs
GIS,CAD ,3D ,BIM
展开
-
QCAD Framework
QCAD FrameworkQCAD框架由三部分组成:Qt Application Framework提供桌面应用程序最一般的,底层的功能实现;QCAD Application Framework提供了专业的CAD功能实现;ECMAScript则是将Qt Application Framework和QCAD Application Framework整合到一起,提供用户接口和业务逻辑功能的实现。QCAD 开发模式扩展开发模式基于现有的QCAD应用程序进行插件开发和工具菜单开发。全新开发模式基原创 2020-09-13 16:30:44 · 876 阅读 · 1 评论 -
QCAD js实现Map
js实现Map//qcad/scripts/map.js// Public domainfunction Map(compareFunction) { this.keyArray = []; this.valArray = []; this.compareFunction = compareFunction;}Map.prototype.put = function(key, val) { var elementIndex = this.findKey(key);原创 2020-12-30 21:00:35 · 245 阅读 · 1 评论 -
QCAD配置文件
QCAD配置文件位置位于:C:\Users\{用户名}\AppData\Roaming\QCADQCAD3.ini实际上是使用了QSettings,可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的·QVariant``存储数据。使用setValue()`可以实现一个设置。配置多线程[GraphicsView] Multithreading=true Threads=10// enable multithreaded graphics view:if (R原创 2020-12-30 20:43:48 · 303 阅读 · 0 评论 -
QCAD MainWindow 原型
QCAD MainWindow 原型一个简单QCAD窗体原型应用程序。准备界面UI\support\examples\mainwindow\MyDisplay.uiQFrame类型的Viewport00用来加载View渲染QCAD实体对象。这里对应于模板\scripts\Widgets\ViewportWidget\Templates\00_Single.ui。MyDisplay.ui00_Single.ui渲染的基本流程构造函数中,模拟了加载QCAD加载dxf到绘制的基本流程。原创 2020-12-29 14:16:03 · 612 阅读 · 1 评论 -
QCAD C++&Javascript混合调用
QCAD C++&Javascript混合调用Javascript绑定C++类,与QML与Javascript机制类似。创建可供绑定的类\support\examples\exampleplugin2\RExamplePlugin2.cpp注意以下两点,绑定的前提。Q_OBJECTQ_DECLARE_METATYPE(MyClass*)class MyClass : public QObject {Q_OBJECTpublic: MyClass() : QObject(原创 2020-12-29 11:42:37 · 428 阅读 · 0 评论 -
QCAD 自定义消息处理
QCAD 自定义消息处理使用qInstallMessageHandler自定义输出调试信息。消息处理句柄\src\run\main.cpp RMainWindow::installMessageHandler();\src\core\RMainWindow.cppstatic void installMessageHandler();void RMainWindow::installMessageHandler() { qInstallMessageHandler(RMainWi原创 2020-12-29 11:21:13 · 265 阅读 · 0 评论 -
QCAD属性与Qt Event
QCAD属性与Qt Event自定义Qt事件class RPropertyEvent : public QEvent {public: RPropertyEvent() : QEvent((QEvent::Type)(QEvent::User+500)), propertyTypeId(-1) { } /** * \param propertyTypeId ID of the property that was changed.原创 2020-12-25 21:28:43 · 257 阅读 · 0 评论 -
QCAD 代码片段(二)
QCAD 代码片段引用块对象的递归加载引用块对象绘制统一返回圆。//RBlockReferenceEntity.cppvoid RBlockReferenceEntity::exportEntity(RExporter& e, bool preview, bool forceSelected) const { e.setBrush(Qt::NoBrush); //绘制一个半径为1,圆心为对象位置的circle e.exportCircle(RCircle(d原创 2020-12-23 21:52:38 · 659 阅读 · 4 评论 -
QCAD集成QXlsx读写Excel
QCAD集成QXlsx读写Excel克隆QXlsx源码git clone https://github.com/QtExcel/QXlsx.gitQCAD三方库集成将QXlsx源码中的QXlsx文件夹拷贝到/src/3rdparty下。修改/src/3rdparty/3rdparty.pro。SUBDIRS = \ spatialindexnavel \ stemmer \ proj4 \ QXlsx编译构建即可。使用在\support\exa原创 2020-12-20 11:13:34 · 415 阅读 · 1 评论 -
QCAD加载数据到渲染流程
QCAD加载数据到渲染流程外部数据加载读入dxf到QCAD实体对象REntity,同时建立空间索引。准备工作创建存储库,空间索引和文档对象。var storage = new RMemoryStorage();var spatialIndex = createSpatialIndex();var document = new RDocument(storage, spatialIndex);var documentInterface = new RDocumentInterface(docu原创 2020-12-18 18:08:32 · 371 阅读 · 1 评论 -
QCAD IO 读写DXF流程
QCAD IO 读写DXF类图ImporterExporter注册插件初始化注册读写dxf相应的工厂类。bool RDxfPlugin::init() { //qDebug() << "RDxfPlugin::init"; RDxfImporterFactory::registerFileImporter(); RDxfExporterFactory::registerFileExporter(); return true;}读取流程查找对原创 2020-12-18 18:06:40 · 530 阅读 · 1 评论 -
QCAD工程项目概述
编译发布概述环境准备Qt5 (Qt5.10.1)+ VS2017x64NSIS (软件打包)编译构建Qt Creator 打开 qcad-3.24.3.0.pro 设置相应的构建方式Debug 或者 Release,执行构建。发布执行脚本 make_setup_x64.bat生成安装包。项目工程结构doc代码说明文档及软件帮助文档。examplesqcad javasript示例插件。fontsqcad字库。images生成块(Block)图标的位置。原创 2020-12-17 17:16:58 · 955 阅读 · 1 评论 -
QCAD 代码片段(一)
Draw 绘制 var di = this.getDocumentInterface(); var document = this.getDocument(); var op = new RAddObjectsOperation(); for (var h=0; h<=255; h+=16) { for (var v=0; v<=255; v+=16) { for (var s=0; s<=255; s+=16) {原创 2020-12-16 16:23:43 · 608 阅读 · 6 评论 -
QCAD插件开发
QCAD插件开发的三种模式纯EcmaJavascript模式在qcad程序安装目录下的scripts文件夹下新建对应的文件夹和文件,文件夹、文件名以及类名三者保持一致。这种方式可以避免编译,暴露代码方便编辑修改。scripts/MyTool/MyTool.jsMyTool.js:实现一个MyTool菜单,在主程序命令行窗口中输出Hello World。要实现菜单功能,可以直接继承EAction这个类。include("scripts/EAction.js");/** 构造函数*/func原创 2020-12-13 11:28:13 · 1256 阅读 · 4 评论 -
QCAD中的监听模式
监听模式一种一对多的关系,多个观察者(Observer)监听同一个被观察者(Subject)。被观察者对象在状态或数据发生变化时,会通知所有观察者对象,使它们做出相应的变化。类图csdn mermaid :classDiagram Subject<|--SubjectImpl:继承 Observer<|--ObserverImpl:继承 Subject *--Observer:组成 SubjectImpl<..ObserverImpl:依赖原创 2020-12-12 22:10:58 · 311 阅读 · 0 评论 -
QCAD C++ & JavaScript 混合编程
JavaScript 调用 C++ 函数QCAD源码工程模块 src\scripting\ecmaapi 重新封装了底层模块 core、entity、gui等的函数接口,供应用层(界面)ECMAJavaScript调用。示例:在源码src\core\RDocument中添加三个public函数及实现。void addCustomTables(const QString& group, REntity::Id id);QSet<REntity::Id> getCustomTa原创 2020-11-25 21:53:27 · 650 阅读 · 5 评论 -
QCAD 几何实体关系解析
RObject:QCAD最基本的基类。RPropertyTypeId:定义QCAD实体对象的属性类。RPropertyAttributes:定义属性(RPropertyTypeId)的属性,如:只读、整数类型、列表类型等等。REntity:QCAD实体对象,包含几何信息、属性信息、可视化信息等等。REntityData:QCAD相关的几何信息辅助基类。RShape:几何信息的基类。ROperation:维护QCAD操作实体对象的增、删、改的事务操作基类。代码示例: var di = ..原创 2020-11-21 15:49:35 · 603 阅读 · 0 评论 -
QCAD dxf 扩展属性
XData是CAD开放给用户(程序员)的一个功能接口:可以往CAD实体上写入/绑定你的个人信息,CAD不会理会/管理你的个人信息,但会保存到DXF文件中。同时你也可以读取这些个人的信息,方便你编程使用。...原创 2020-11-17 20:37:30 · 2167 阅读 · 7 评论 -
QCAD自动化编译测试
使用GitHub Actions 自动化编译QCAD# This is a basic workflow to help you get started with Actionsname: Windows# Controls when the action will run. Triggers the workflow on push or pull request# events but only for the master branchon: push: branches:原创 2020-11-09 22:04:30 · 292 阅读 · 0 评论 -
QCAD qt ecmajavascript sqlite3
javascript 封装Qt sql API/** * Provides a connection to a SQLite database. * * \param connectionName The connection name to use. */function DbConnection(connectionName) { if (isNull(connectionName)) { return; } this.db = QSqlDataba原创 2020-11-08 21:15:23 · 272 阅读 · 1 评论 -
QCAD ecmajavacript generator
ecmageneratorGenerating script bindings for the QCAD Application Framework......srcmlwget http://131.123.42.38/lmcrs/v1.0.0/srcml-1.0.0-1.el7.x86_64.rpmrpm -i srcml-1.0.0-1.el7.x86_64.rpmalias src2srcml='srcml'xmlstarlet和libxsltwget http://dl.fedo原创 2020-11-06 21:54:14 · 266 阅读 · 0 评论 -
proj4.js坐标转换
投影带和中央经线计算/** * 投影带的带号计算:通过用户输入的经纬度及定义的投影带宽度,得到该经纬度下投影带的带号 * @param long 输入 用户输入的经度 * @param projectedBandWidth 输入 用户定义的投影带宽度 * @returns {number} 返回 经纬度下投影带的带号 */function bandNumberCalculation(long, projectedBandWidth) { var num; if (lon原创 2020-11-01 13:35:11 · 1736 阅读 · 1 评论 -
QCAD 中文编码问题
dxf文件为文本文件,中文编码可能是utf-8编码,也有可能是GBK编码。QCAD使用Qt开发环境,字符串统一按照utf-8编码解码,所以解析dxf文件时对字符串首先按照utf-8转码,如果转码失败则按照GBK转码。QString decode(const std::string& str) { //GBK UTF-8->Unicode QByteArray data=QByteArray::fromStdString(str); QTextCodec::Conve原创 2020-10-21 21:37:09 · 1038 阅读 · 0 评论 -
QCAD集成 proj4.js
qcad 集成 proj4.js安装依赖 wkt-parser.js下载源码 wkt-parser修改源码 wkt-parser在文件头添加如下代码:if (typeof(global)==="undefined") { global = this; global.wkt = index;}同时删除文件末尾的module.exports = index;下载源码 proj4.js修改源码 proj4.js将(function (global, factor原创 2020-09-30 13:42:16 · 294 阅读 · 0 评论 -
QCAD 扩展开发
QCAD 扩展开发功能列表图层管理器菜单[ Extensions(扩展)]->[Layer Manager (图层管理器)]操作过滤筛选示例列表多选可见、隐藏、锁定、解锁和删除操作查询过滤器菜单[ Extensions(扩展)]->[Filter Editor(过滤器)]操作选择类型实体类型查询 [Entity type]实体属性值查询 [Property]实体属性值比较运算符 [Comparison]示例块属性列表图层显示列.原创 2020-09-18 21:41:42 · 699 阅读 · 0 评论 -
Using QCAD FAQs
Using QCAD FAQsHow can I group entities?Groups are called ‘blocks’ in CAD / QCAD. Think of a block as a group with a name. The advantage of blocks over groups is that blocks can be inserted multiple times in various locations at different angles and scal原创 2020-09-18 17:44:51 · 292 阅读 · 0 评论 -
QCAD 专业版和社区版区别
QCAD 专业版和社区版区别1、支持兼容的DXF版本不同社区版本只支持 R15 (2000) DXF;专业版本支持 R15~R32 DXF2、支持自定义实体对象属性社区版本不支持专业版本支持3、支持DWG社区版本不支持专业版本支持4、多条件选择社区版本不支持专业版本支持5、图层列表支持图层颜色显示、编辑图标、捕捉可用图标、是否可绘制、是否冻结社区版本不支持专业版本支持6、文字样式可替代编辑对话框社区版本不支持专业版本支持7、视图列表社区版本不支持专业版本支持8、块原创 2020-09-17 13:49:18 · 2067 阅读 · 0 评论 -
QCAD编译
WindowClonegit clone https://github.com/wblong/qcad.git编译qcadcd c:\Users\me\qcad\qcadc:\Qt\Qt5.10.1\5.10.1\msvc2017_64\bin\qmake -r CONFIG+=ractivated nmake release //vs2017 命令行工具运行编译Qt Scripts 插件cd c:\Users\me\qcd\qcd\src\3rdparty\qt-labs-原创 2020-09-09 14:00:14 · 746 阅读 · 0 评论 -
QCAD渲染效率问题
一、配置多线程渲染配置QCAD3.ini[GraphicsView] Multithreading=true Threads=10 QList<REntity::Id> list = document->getStorage().orderBackToFront(ids);int slice = int(floor(double(list.length())/painterThread.length()));QList<QFuture<void> >原创 2020-08-24 22:23:24 · 292 阅读 · 0 评论 -
NSIS打包QCAD
;--------------------------------Unicode trueShowInstDetails show; The name of the installer!define VERSION "3.25"!define APPNAME "QCAD"!define BinaryNAME "${APPNAME}.exe"!define COMPANYNAME "QCAD"!define DESCRIPTION "${APPNAME}"!define StartupP原创 2020-08-23 17:29:04 · 272 阅读 · 0 评论 -
Qt 5.13.2 & VS2017 编译 QCAD release 错误
qmlcache_loader.obj:-1: error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl QQmlPrivate::qmlregister(enum QQmlPrivate::RegistrationType,void *)" (__imp_?qmlregister@QQmlPrivate@@YAHW4RegistrationType@1@PEAX@Z),该符号在函数 "public: __cdecl `anon原创 2020-08-22 20:32:55 · 643 阅读 · 0 评论 -
Qt 5.13.2 & VS2017 编译 QCAD
Qt 5.13.2 & VS2017 编译 QCAD32 位 Debug 修改问题1:…/…/dxflib.lib 依赖库不存在将POST_TARGETDEPS += ../../../$$ROUTDIR/$${RLIBPRE}dxflib$${RLIBPOST}改为POST_TARGETDEPS += $$PWD/../../../$$ROUTDIR/$${RLIBPRE}dxflib$${RLIBPOST}问题2:插件编译的位置出错,导致无法启动qcad.exe将插件生成位置D原创 2020-08-04 17:37:43 · 840 阅读 · 1 评论