librecad二次开发
1/ui 部份
1/增加主菜单![在这里插入图片描述](https://img-blog.csdnimg.cn/65e596109caf43a485505ab1b705ea94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDns5bnjq8,size_18,color_FFFFFF,t_70,g_se,x_16)增加子菜单项
3/plt dxf 转换 只转换成简单连续线段
端点 0 — x y 坐标 标志 10/20
端点 1 — x y 坐标 标志 11/21
起笔 抬笔 转换成 sec 及段结束
2/显示接口
获取当前界面 组件单元列表RS_BlockList* RS_Block::getBlockList() {
RS_Graphic* g = getGraphic();
if (g) {return g->getBlockList();
} else {return NULL;
}
}
4/端点绘线接口 镜像操作 负坐标处理
/**
* Adds a line to the current graphic document.
*/
void rsPyAddLine(double x1, double y1, double x2, double y2) {
//printf("c: addLine called\n");
//printf("c: parameter from python: %f\n", x1);RS_Graphic* graphic = RS_SIMPLEPYTHON->getGraphic();
if (graphic!=NULL) {graphic->addEntity(new RS_Line(graphic,RS_LineData(RS_Vector(x1, y1),RS_Vector(x2, y2))));
} else {std::cerr << "rsPyAddLine: No graphic object set.\n";
}
}
5/鼠标滚轮控制缩放
//将下面事件操作替换
if (scroll && scrollbars) {//scroll by scrollbars: issue #479RS_SETTINGS->beginGroup("/Defaults");bool inv_h = (RS_SETTINGS->readNumEntry("/WheelScrollInvertH", 0) == 1);bool inv_v = (RS_SETTINGS->readNumEntry("/WheelScrollInvertV", 0) == 1);RS_SETTINGS->endGroup();int delta;switch(direction){case RS2::Left:case RS2::Right:delta = (inv_h) ? -e->delta() : e->delta();hScrollBar->setValue(hScrollBar->value()+delta);break;default:delta = (inv_v) ? -e->delta() : e->delta();vScrollBar->setValue(vScrollBar->value()+delta);}// setCurrentAction(new RS_ActionZoomScroll(direction,
// *container, *this));
}// zoom in / out:
else if (e->modifiers()==0) {
7/绘制工作空间大小,以指定缩放/对应屏幕像素及转换后实时中心点为原点画矩形
QRect(-50, -50, 300, 300)
8/添加图元及block 选中显示 tableview
添加 point 映射添加选中映射选中处理代码/*** @return True if the entity is in the given range.
*/bool RS_Entity::isInWindow(RS_Vector v1, RS_Vector v2) const
{
double right, left, top, bottom;right = std::max(v1.x, v2.x);
left = std::min(v1.x, v2.x);
top = std::max(v1.y, v2.y);
bottom = std::min(v1.y, v2.y);return (getMin().x>=left &&getMax().x<=right &&getMin().y>=bottom &&getMax().y<=top);
}获取图元id获取图元名称// There should be a better way then this...
switch(e.rtti()) {
case RS2::EntityPoint:os << (RS_Point&)e;break;case RS2::EntityLine:os << (RS_Line&)e;break;case RS2::EntityPolyline:os << (RS_Polyline&)e;break;case RS2::EntityArc:os << (RS_Arc&)e;break;添加图元参数控制
10/多点触控/键盘方向键移动
if (e->modifiers() & Qt::ControlModifier)
{ auto value = text(); if (value.isEmpty()) value = relative_ray; QString r_string; switch (e->key()) { case Qt::Key_Up: r_string = "0," + value; break; case Qt::Key_Down: r_string = "0,-" + value; break; case Qt::Key_Right: r_string = value + ",0"; break; case Qt::Key_Left: r_string = "-" + value + ",0"; break; default: QLineEdit::keyPressEvent(e); return; }void Widget::mouseMoveEvent(QMouseEvent * event)
{qDebug()<<tr("%1,%2").arg(event->pos().x()).arg(event->pos().y());
}
11/系统坐标中点绘制随窗体自动拉伸定位框
QPainter painter(this);
static double wid = rect().width();
static double hei = rect().height();painter.setRenderHints(QPainter::Antialiasing, true);//抗锯齿double new_wid = rect().width()/wid;
double new_hei = rect().height()/hei;
painter.scale(new_wid, new_hei);
librecad二次开发相关推荐
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 20150411--Dede二次开发-01
20150411--Dede二次开发-01 目录 一.目前市场流行的电子商城系统 1 二.ecshop的介绍 1 三.安装 2 四.echsop 的目录结构 5 五.分析ecshop里面程序的架构 5 ...
- android系统二次开发,Andorid系统二次开发界面
Andorid系统二次开发界面 给大家介绍完外观,下面我们一起再来看下魅族MX的系统界面.本次魅族MX仍然采用的是Andorid操作系统,并且加入了二次开发界面.UI界面整体上保持了和M9的特色,不过 ...
- wordpress php教程 pdf,wordpress二次开发全能教程.pdf
wordpress 二次开发全能教程 1. 根据分类来制定导航条 A. 修改页面 header.php! <?php wp_list_categories('title_li='); ?> ...
- Saiku二次开发获取源代码在本地编译(五)
关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务 Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml ...
- catia三维轴承_浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文
浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文 一.概述 单排四点接触球转盘轴承是一种能够同时承受较大轴向负荷.径向负荷和倾覆力矩等综合载荷,集支承.旋转.传动.固定等多种功能于一身的特殊 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...
- 二次开发photoshop_Photoshop 101:Web开发人员简介
二次开发photoshop 介绍 (Introduction) Often, when working as web developer, we need to integrate templates ...
- 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案...
我们通常在构架一套视频SaaS应用的过程中,将平台设计为3层:视频硬件层(视频源).视频能力平台(vPaaS).视频应用平台(vSaaS),视频硬件包括各种IPC.NVR.编码器等视频生成设备,vPa ...
最新文章
- python 三维画图 坐标值相等_python程序员的表白
- MM32F3277 MicroPython 的定时器功能
- KDEWin Installer 0.9.8-1发布
- 逆向最大匹配分词算法
- 为什么 wait 方法要在 synchronized 中调用?
- Dataset之LSUN:LSUN数据集的下载使用教程
- ThinkJava-复用类
- CDE桌面环境中自动启动应用程序图形界面
- WindowsFormsHost使用问题
- MQTT协议笔记之mqtt.io项目TCP协议支持
- 计算机课是一体化教学吗,计算机基础课程理实一体化教学模式
- 深圳出差 第一天【原创】
- 2018年计算机职称考试冲刺,2018年中级会计职称考试冲刺阶段学习计划
- 为什么 Redis 单线程能达到百万+QPS?
- java并发圣经,差距不止一星半点!Github星标85K的性能优化法则圣经
- 用代码生成Glitch Art风格的抖音字体
- 共享单车数据集_共享单车数据可视化分析
- SPSS25 软件安装教程(附带网盘资源)
- Refresh PDB
- 张三丰是小龙女的儿子的详细证明及理论依据(转)