新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/15 4:34:41来源:尧图网络
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。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉