首页/新闻资讯/正文详情

CAD程序设计:XLINE(构造线)功能设计分析

发布时间:2026/9/27 2:05:32 来源:云帆数科 栏目:资讯中心
CAD程序设计:XLINE(构造线)功能设计分析
XLINE构造线功能设计分析摘要本文给出XLINE构造线命令的完整功能设计复用 Element 现有字段零新增结构枚举追加Xline13以「有界化 二次裁剪」解决无限直线渲染难点交互链路与直线族同构策略模式六种绘制方式全部映射到既有line::Mode几何计算命令行、捕捉/交点/剪切等兼容层、UI 入口与验证7 组 67 断言全绿均已落地并明确 fitView 排除、框选不整选、导出降级 ±10 m 等有意边界。1. 需求回顾在绘图模块中新增XLINE构造线命令绘制向两端无限延伸的辅助线。#要求落地方式1命令行XLINE 菜单/工具栏入口提示选择绘制方式XlineCommand精确xline 前缀xline_*工具条【基本图元】下拉按钮 【绘图 构造线(X)】子菜单2六种绘制方式H / V / A / 两点(默认) / B / O全部映射到既有line::Mode几何计算零重复实现3动态预览、回车确认、Esc/右键取消、连续绘制previewXline无限线实时预览commitXlineAndContinue提交后保持命令活跃右键/Esc 走通用兜底退出4按视图边界裁剪显示、缩放同步图层/颜色/线型撤销重做不参与面积长度统计buildPath(Xline, visibleWorldRect)每帧裁剪样式走ElementFactory::create默认管道addElement自动入撤销栈flatten对 Xline 返回空 → 剪切/统计天然排除5复用坐标输入/捕捉/单位处理与 LINE/RAY 风格一致捕捉通过点交点、injectPoint坐标注入、snapDefaultFor默认档全部自动生效2. 数据模型复用 Element 现有字段零新增结构枚举“只增不改”铁律ElementType::Xline追加到枚举末尾序号 13老 .sketch 存整数序号追加不破坏旧档。pts[0] 通过点世界坐标rotation 方向角度世界角Y 翻转只在渲染期。序列化elementToJson/FromJson为泛型字段读写无需改动。3. 无限直线的渲染方案本设计核心难点ElementItem::buildPath是静态方法拿不到视图且 QGraphicsItem 的 boundingRect 是缓存值不会随视图平移/缩放自动重算。方案有界化无限直线先与「场景级大矩形」kXlineBigRect(-1e5, -1e5, 2e5, 2e5)与scene_-setSceneRect同级slab 法求交得到一条有界长线段——boundingRect 取该交段恒定不随视图变化保证平移/缩放时图元永不被场景索引剔除。二次裁剪paintOne对 Xline 每帧传入visibleWorldRect()view-mapToScene(viewport()-rect())实际绘制路径只含可见段——缩放/平移时显示自动同步且不把 ±1e5 的巨长线段交给光栅器。取景排除rawBounds(Xline)返回空矩形 →contentBounds()跳过fitView 不被无限线撑爆命中/拾取走geo::distanceToElement的点到无限直线距离与“无限延伸”的视觉一致。4. 交互链路策略模式与直线族同构工具 id: xline / xline_h / xline_v / xline_angle / xline_2pt / xline_bisector / xline_parallel → ToolRegistry (XlineSub 类别 DrawBasic 的 xline) → ToolManager (Family::Xline 的 SubToolHandler) → ToolContext::handleXlineSubTool → GraphicsView::handleXlineSubTool line::modeFromString(“xline_*”) → line::Mode → line::compute(...) 结果线段 (a,b) → createXline(a, angleDeg(b-a)) → commitXlineAndContinueline::modeFromString扩展识别xline_*H→Horizontal、V→Vertical、A→Angle、2pt/默认→TwoPoint、B→Bisector、O→Parallel几何计算零复制。连续绘制commitXlineAndContinue提交后清空本轮采集但保持drawing_true与commitElementresetPending 退出刻意不同右键/Esc 走handleRightButton通用兜底“已结束当前绘制”→ 再右键回到选择。预览previewXline——角度模式未拾取时以光标为基点按参数角度预览平行模式已选参考线时按光标位置预览其余经line::compute后转为无限线。5. 命令行命令语义xline x,y 角度过点 角度“45”不是合法点 → 自动与两点式区分xline x1,y1 x2,y2两点定线默认方式xline_h / xline_v x,y水平 / 竖直过点xline_angle x,y [角度]指定角度缺省 30°与 line_angle 一致xline_bisector id1 id2 x,y两直线角平分方向xline_parallel id x,y平行于参考直线过点注册registerExact(“xline”) registerPrefix(“xline_”)共用XlineCommand。6. 兼容层模块处理捕捉snapHandles仅通过点无限线无端点distanceToElement点到无限直线距离交点/近距拾取命中整条延伸线交点intersectElementsXline 展开为 ±1e5 长线段后按常规路径求交构造线 × 构造线走math::lineLineIntersect—— 交点捕捉是构造线的核心用途剪切/统计flatten对 Xline 返回空default 分支→ 不参与 trim/面积/长度DXF R12无 XLINE 原生实体 → 降级为通过点沿方向±10 m的 LINEDWG R12同上降级 LINE读回即普通 Line往返测试验证STEP降级为 ±10 m 的 TRIMMED_CURVE(LINE)取景/命中geometryBounds为空 → fitView 排除elementHandles走 default 返回 pts拖通过点即平移构造线7. UI 入口工具条【基本图元】组createDropdownTool主按钮“构造线”两点方式下拉 6 项。菜单【绘图 构造线(X)】buildXlineMenu与工具条共享toolActions_指针。MainWindow::xlineSubModes()作为唯一数据源纳入allSubModeToolIds()DrawingMenuTest §10 一致性校验自动覆盖。图标icons.h新增“xline”glyph两端出界的贯通斜线 通过点区别于直线的带端点斜线。8. 验证新增tests/xline_test.cppCMake 正式 targetXlineTest7 组 67 断言全绿工厂/枚举/序列化往返、ToolRegistry 注册、命令行六种模式含缺参拒绝/参考不存在拒绝、点线距离、交点线×线/线×圆/构造线×构造线、捕捉仅通过点、flatten 排除、DXF/DWG 导出降级、撤销重做。既有回归SketchCAD全量编译链接通过SketchSelfTestexit 0DrawingMenuTest含 allSubModeToolIds ⊆ ToolRegistry 校验exit 0。构建方式ninja -j 1 target工程 OOM 约束测试从工程根运行。9. 已知边界有意行为fitView / 内容统计排除构造线 —— 若图纸只有构造线适配窗口无目标与“辅助线”定位一致。框选marquee按 boundingRect 判定±1e5 交段不可能完全落入框内 → 构造线不被框选整选单击点线距离容差仍可选中避免辅助线被常规框选误带。导出降级为 ±10 m 长线段属 R12 格式的固有限制未来升级 R13 格式可写原生 XLINE。

相关推荐

FluentTweaker快速上手教程:5步完成Windows系统优化的完整流程
FluentTweaker快速上手教程:5步完成Windows系统优化的完整流程

FluentTweaker快速上手教程:5步完成Windows系统优化的完整流程 【免费下载链接】FluentTweaker Windows Slop Remover 项目地址: https://gitcode.com/gh_mirrors/wi/FluentTweaker FluentTweaker(Windows Slop Remover)是一款免费开源… · 2026/9/27 2:05:26

做网站设计师别只会画图,从零搭建SEO友好架构才值钱
做网站设计师别只会画图,从零搭建SEO友好架构才值钱

做网站设计师别只会画图,从零搭建SEO友好架构才值钱 网站做好了没人访问,这是多少做网站设计师的噩梦?你熬了几个通宵,把UI做得美轮美奇,客户看着也满意,结果上线三个月,百度收录还是零,流量个位数。别怪搜索引擎不给你面子,问题往往出在“皮囊… · 2026/9/27 2:05:26

开源TTS与语音克隆实战对比:CosyVoice、GPT-SoVITS、F5-TTS、Fish-Speech选型指南
开源TTS与语音克隆实战对比:CosyVoice、GPT-SoVITS、F5-TTS、Fish-Speech选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:05:20

不会代码也能搞定:云服务器价格购买价格表与性能优化实操指南
不会代码也能搞定:云服务器价格购买价格表与性能优化实操指南

不会代码也能搞定:云服务器价格购买价格表与性能优化实操指南 自己不会代码想做网站,这是很多创业者最初的噩梦。你看着那些复杂的代码界面,心里发慌,怕选错服务器导致网站打不开,更怕花钱买了一堆用不上的配置。其实,搞定云服务器价格购买价格表的核心… · 2026/9/27 2:40:33

公司网站建设意义与免费工具实操指南
公司网站建设意义与免费工具实操指南

公司网站建设意义与免费工具实操指南 上周三下午五点,我盯着后台那个“改个按钮颜色”的需求单,心里直犯嘀咕。建站公司的人说“排期中,预计下周”,这都拖了一周了。客户在电话里急得冒烟,说再不改就要扣款。我叹了口气,没等对方回复,直接打开本地环境… · 2026/9/27 2:40:33

多气体同步检测的时域编码策略:基于单光子IPDA激光雷达的技术进展
多气体同步检测的时域编码策略:基于单光子IPDA激光雷达的技术进展

工业园区、城市管线和矿区的气体泄漏具有组分复杂、空间分布不确定的特点,单一气体检测方案难以满足实际预警需求。近年来,一种受傅里叶变换红外光谱学(FTIR)时域-频域转换原理启发的时域重叠光谱技术被提出并实验验证,该技术利用单光子探测器和可重构光路,在单次扫描周期… · 2026/9/27 2:39:51

重庆网站建设服务公司怎么选?3招看懂建站报价防被坑
重庆网站建设服务公司怎么选?3招看懂建站报价防被坑

重庆网站建设服务公司怎么选?3招看懂建站报价防被坑 找重庆网站建设服务公司,最怕啥?不是怕技术不行,是怕报价单像“天书”,签完合同才发现全是坑。很多甲方老板拿着几十万的预算,最后做出来的网站既不好用又贵得离谱,钱花了没响声,这种事儿在重庆太… · 2026/9/27 2:39:51

【Spring AI 入门与实战】07-多模态入门-图像理解与生成
【Spring AI 入门与实战】07-多模态入门-图像理解与生成

多模态入门:图像理解与生成 本文是专栏《Spring AI 入门与实战》的第 7 篇,上一篇我们聊了《结构化输出:让 AI 稳定返回 Java 对象》,让模型输出变成可靠的 Java 数据。这一篇把"输入"从纯文本扩展到图片:怎… · 2026/9/27 2:39:51

独立游戏开发日志:场景状态机的切换和核心玩法循环
独立游戏开发日志:场景状态机的切换和核心玩法循环

由于是个人独立开发,从想到要做这款游戏开始到现在已经近三年了,我进度依旧很低,一直以来都是有些松散、且长期处于闭门造车的状态。这种心理的劣势极为明显,最直观就体现在我先前发布的一篇日志,我发现我自己想好的整… · 2026/9/27 2:39:45

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码