面积测量:测量选中封闭对象的面积
测量选中对象的面积并显示;测面积
曲线长度:测量选中曲线的总长度
测量选中曲线的长度并显示;测曲线长
两测距 — 测量两个选中对象之间的中心距离 纯几何计算,弹出对话框报告水平和垂直距离
测量两点之间的距离并显示
智能测量标注面板 M0 探针 对应《51-智能测量标注面板-方案研究报告》§5 M0: 一次性实证 5 大疑点,全部结论落盘 C:\PieMenu_Measure_M0_Report.txt [1] Curve.Area 语义:矩形基准 / 甜甜圈复合路径(孔洞是否扣减、子路径符号) / 自交八字形 / 开放折线(开放曲线返回值);附带 Curve.Length 核对 [2] 形状.GetBoundingBox 第5参 UseOutline:矩形+10mm 轮廓、直线+10mm 轮廓, 记录 FALSE/TRUE 两套 bbox 差值与原点偏移 [3] X8 原生尺寸线:纯 COM 调 Layer.CreateLinearDimension/CreateAngularDimension, 失败则降级 VBA Evaluate 验证兜底通道;成功则做属性读写小矩阵 [4] UserData 持久性(M0-P2 修正流程):Properties.PutItem 写入 → 即时回读 → 带标记形状直接 SaveAs(**P2 修正:M0 版在保存前 SafeDel 了标记形状, 导致重开的文档里根本没有该形状,4c 误判"Name 丢失"**) → Close → OpenDocument → 依 Name 找回 → UserData 再回读 + St…
报告落盘 C:\PieMenu_Measure_M0_Report.txt;M0探针
显示/隐藏「智能测量标注」公共浮窗(M1-修正) 形态:RegisterCustomPanel + FloatParamsWindow(公用浮窗,用户拍板)。 首次调用注册面板;再次调用若浮窗已打开则折叠关闭(切换)。
实时读数+含轮廓笔开关+复制读数;测量面板
八区聚合+报价用料+同行缺口功能
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
测量角度:测量两条线的夹角
参数化生成测量标注(MCP/AI 可用,队列桥穿透) 参数(AddonParams::Current()): mode : 1=包围盒批量(默认) / 5=角度 / 6=周长面积备注 useOutline : 0/1,尺寸含轮廓笔(与面板开关一致) fontSizePt : 字号(pt),默认 3.5 decimals : 小数位,默认 2 showUnits : 0/1 layerName : 目标图层(空=活动层) angCx/angCy/angX1/angY1/angX2/angY2 : 模式5 角度三点(mm) 报告:C:\PieMenuCmd\dimgenerate_last.json
原生H/V尺寸线+圆直径D=+周长面积备注,含轮廓口径与面板一致;测量标注
测量标注 安全清理 + 反向选中(方案 §一.3 / §二) 参数(AddonParams::Current()): action : "clean" 清理:只删本插件生成的标注(Tag 双保险),原图零损伤 "selectMarks" 反向选中:选中原始对象 → 追加选中其关联的全部标注 报告:C:\PieMenuCmd\dimclean_last.json
只删Tag标注,原图零损伤;清理标注
导出测量统计报表(CSV,UTF-8 BOM,Excel 直开报价) 参数(AddonParams::Current()): path : 输出文件路径(默认 C:\PieMenuCmd\measure_report.csv) useOutline : 0/1 含轮廓笔口径(与面板开关一致) recurseGroups: 0/1 递归群组 report : 结果 JSON 路径
六列报价表:序号/W/H/曲线总长/净面积/包围盒面积;导出报表
批量智能标注 — 为每个选中对象生成尺寸文字 椭圆/圆标注直径 D;其他标注 W×H
批量智能标注:自动给对象添加尺寸标注
导出当前页面为 PNG(多格式请用 多格式批量导出) 参考来源: CorelDRAW X6 FileConverter.vba (ExportEx + StructExportOptions) 实现策略: ExportHelper(Document.ExportEx + StructExportOptions,X8 实测可靠) —— 原 Evaluate VBA ExportBitmap 表达式易静默失败(2026-08-31 整改) - 弹出文件夹选择对话框 - 导出当前活动页面为 PNG(300dpi,RGB,透明背景) - 文件名格式: <文档名>_Page<页码>.png 后续扩展(Ghost 属性面板): - 格式切换: PNG / JPG / TIF - DPI 调节: 72 / 150 / 300 / 600 - 颜色模式: RGB / CMYK - 透明背景: 开/关(2026-09-18 PNG 已默认开) - 导出范围: 当前页 / 全部页 / 仅选中
仅当前页PNG;按组请用按重叠组导出图片,多格式请用多格式批量导出;批量导出
按不相邻分组批量导出:将选中对象按连通性分簇,每簇单独导出为一张图片
按组批量导出
批量导出面板:Ghost 面板配置格式/DPI/颜色模式,点"导出"选择文件夹后执行
批量导出面板
每页转位图(66号对标清单 §3.10 P1) 对标牛为 V3.6"每页转位图"(高频到菜单改双排)。多页文档逐页整页导出为 位图并回插到原页覆盖原位置——发预览、电子画册、交"防改稿"版的标配。 单页处理: 1. 激活页 → ExportBitmap(cdrCurrentPage) 导出 PNG 到临时文件 2. layer->Import 进程内导回(零对话框)→ 尺寸铺满页面、居中置顶 3. replace=1 时删除页面上原有对象(防改稿 flattening;默认 0 保留,用户核对后手删) 4. export 参数可同时把 PNG 归档到指定文件夹 参数(AddonParams,AI/队列可传): dpi : 72-2400(默认 150) range : "all"(默认,全部页面) | "page"(仅当前页) cmyk : 0(默认 RGB) | 1(CMYK) replace: 0(默认,原对象保留在位图下方) | 1(删除原对象——不可轻用) export : 可选,PNG 同时另存的文件夹绝对路径(空=不落盘) transparent : 0(默认,页面白底) | 1(透明背景 PNG) 空页跳过如实计数;任一页导出/导入失败计 fail 并继续(活动页最后还原)。
批量新建页面:在文档末尾添加新页面(count 参数,默认 5,钳制 1~100)
批量插入多个新页面(可设数量)
分页
分页(分页)— 魔镜生产模块 #3,方案 §6.3 P4 功能:选中 N 个群组/对象 → 每个对象分配到独立新建页面,对象原位放置。 例:选 10 个标签 → 一键生成 10 页,每页一个标签。 实现要点: - doc->AddPages(1) 逐对象新建页面(返回新页 IVGPagePtr,参照 书籍拼版) - 对象 MoveToLayer(新页活动层),坐标稳定(_ProbeBookCopy 已验证跨页坐标不变) - PowerClip 容器整体移动(内容跟随容器);位图大对象逐对象 Activate + 消息泵防假死
拆分对页
拆分对页(拆分对页)— 魔镜生产模块 #1,方案 §6.1 P4 功能:把横跨左右两页(对页)的对象按页面中线布尔裁剪,左右各保留本页可见部分。 - 识别选中对象的跨页区域 → 左半到左页、右半到右页(MoveToLayer 原位) - 矢量对象:用左页/右页矩形做布尔刀(相交,复用 VisualUnblock 刀路) - 位图对象:不能布尔 → 降级复制到左/右页并提示(AddToPowerClip 待扩展) - 群组/PowerClip 嵌套:第一版先整体处理,嵌套递归后续增强 增强点(对齐魔镜 BUG): - 布尔失败捕获异常 + 弹窗告警 + 统计报告(不静默跳过) - 位图降级提示
页面清单
页面清单探针(AI Agent "看页面" 用,只读,不依赖 pythoncom) 参数 limit:double —— 顶层对象上报上限,默认 40(防消息膨胀) 参数 detail:double —— 1=带填充/轮廓摘要(默认),0=只报几何 输出(经 m_lastExecMessage 回执):JSON {count:顶层总数, unit:"文档显示单位", geomUnit:"mm", page:{w,h}, shapes:[{i,type,typeName,name?,left,top,w,h,rot,fill?,outline?}]} 【单位铁律 2026-09-04】读任何几何前先 doc->Unit = mm(RAII 还原)。 英寸文档实测坑:CenterX 在 inch 文档读出 2.6(英寸),被当 mm 用 → 全错位。 本探针所有 left/top/w/h 一律 mm。
页码标注增强
移至主页图层
移至主页图层(移至主页图层)— 方案 §3.4 P2 对标魔镜「移至主页」:把选中对象移动到主页(Master Page)图层, 使其在所有页面可见(页眉/页脚/固定水印/角线等场景)。 实现要点: - doc->MasterPage 返回主页(IVGPage) - MasterPage->ActiveLayer 取主页的活动图层(若无则取 Layers.Item[1]) - ActiveSelectionRange->MoveToLayer(layer) 批量搬移,坐标保持不变 (参考 _ProbeBookCopy 已验证 MoveToLayer 跨页坐标稳定) - 前置:有选中对象且当前页不是主页
位图转CMYK:纯 COM 模式转换(2026-09-11 由 InvokeItem 透传改为 API 直转)
位图转CMYK:把位图转成印刷四色;InvokeItem 6ec34929
位图转灰度:纯 COM 模式转换(2026-09-11 由 InvokeItem 透传改为 API 直转, 消除对原生命令 GUID 的依赖——模式转换在部分版本会带出确认 UI)
位图转灰度:把位图转成灰度图;InvokeItem e27f34c1
位图转LAB:纯 COM 模式转换(2026-09-11 由 InvokeItem 透传改为 API 直转)
位图转LAB:把位图转成LAB色彩模式;InvokeItem e540b312
位图转调色板色:纯 COM 模式转换(替代 2026-09-11 前的 InvokeItem 透传—— 原生命令弹"转换为调色板色"参数对话框,无人值守被卡死) 参数:colors=调色板色数(默认 256)
位图转调色板:把位图转成调色板模式;InvokeItem 1c3e5c32
位图转RGB:纯 COM 模式转换(2026-09-11 由 InvokeItem 透传改为 API 直转)
InvokeItem b2394c63
RGB检查:遍历当前页所有形状(含群组内部),高亮选中使用 RGB 颜色(非 CMYK)的对象
颜色统计:遍历当前页面所有形状(含群组内部),收集已使用的填充色和轮廓色
统计选中对象用了哪些颜色、各有多少个
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
批量改色:将所有选中对象的填充色统一为第一个对象的填充色
批量把选中对象的颜色替换成指定颜色
按源色替换为目标色
颜色替换(按源色替换为目标色)— 魔镜 #18,方案 §10.3 P8 功能:拾取源颜色 + 目标颜色 → 批量替换文档填充/轮廓色。 对齐魔镜 BUG 的增强点: - 递归开关:PowerClip 内部(FindShapes 跨层级,FilterBar 已验证) - 专色保护:检测 cdrColorSpot/cdrColorPantone,默认跳过并报告(魔镜专色出错) - 透明混合限制提示:透明混合出的视觉色无法替换,仅替换原始对象颜色 - 填充/轮廓可分别勾选 取色双通道: - AI 参数:from/to(颜色名或 #RRGGBB,ColorNames::Resolve) - 交互:ShowColorPicker 两次弹窗(源色 + 目标色,记忆上次选择) 参数(AddonParams): from/to : 颜色名或 #RRGGBB(如 red / #FF0000) scope : 0=选中 1=当前页 2=全部页(默认0) fill : 1=替换填充(默认1) outline : 1=替换轮廓(默认0) recursive: 1=递归PowerClip内部(默认1) protectSpot: 1=保护专色(默认1) silent : AI 静默
填充色应用到轮廓
填充⇄轮廓互换三件套(填充色应用到轮廓 / 轮廓色应用到填充 / 交换填充色与轮廓色) 魔镜超级模块 #5/6/7,方案 §8.5-8.7 P6 功能(用户先选择 → 本命令对选中对象(含群组/PowerClip 内部)批量处理): 填充色应用到轮廓 :填充色 → 轮廓色(轮廓粗细不变) 轮廓色应用到填充 :轮廓色 → 填充色(轮廓属性不变) 交换填充色与轮廓色 :填充色 ⇄ 轮廓色互换 对齐魔镜 BUG 的增强点: - 递归群组/PowerClip 内部(FindShapes 跨所有层级,FilterBar 已验证) - 专色/RGB/CMYK 正确传递(CopyAssign 复制 IVGColorPtr,保留色彩模式/专色ID) - 无填充/无轮廓对象跳过;渐变/图案等非均匀填充只读填充色时按无填充跳过
轮廓色应用到填充
填充⇄轮廓互换三件套(填充色应用到轮廓 / 轮廓色应用到填充 / 交换填充色与轮廓色) 魔镜超级模块 #5/6/7,方案 §8.5-8.7 P6 功能(用户先选择 → 本命令对选中对象(含群组/PowerClip 内部)批量处理): 填充色应用到轮廓 :填充色 → 轮廓色(轮廓粗细不变) 轮廓色应用到填充 :轮廓色 → 填充色(轮廓属性不变) 交换填充色与轮廓色 :填充色 ⇄ 轮廓色互换 对齐魔镜 BUG 的增强点: - 递归群组/PowerClip 内部(FindShapes 跨所有层级,FilterBar 已验证) - 专色/RGB/CMYK 正确传递(CopyAssign 复制 IVGColorPtr,保留色彩模式/专色ID) - 无填充/无轮廓对象跳过;渐变/图案等非均匀填充只读填充色时按无填充跳过
交换填充色与轮廓色
填充⇄轮廓互换三件套(填充色应用到轮廓 / 轮廓色应用到填充 / 交换填充色与轮廓色) 魔镜超级模块 #5/6/7,方案 §8.5-8.7 P6 功能(用户先选择 → 本命令对选中对象(含群组/PowerClip 内部)批量处理): 填充色应用到轮廓 :填充色 → 轮廓色(轮廓粗细不变) 轮廓色应用到填充 :轮廓色 → 填充色(轮廓属性不变) 交换填充色与轮廓色 :填充色 ⇄ 轮廓色互换 对齐魔镜 BUG 的增强点: - 递归群组/PowerClip 内部(FindShapes 跨所有层级,FilterBar 已验证) - 专色/RGB/CMYK 正确传递(CopyAssign 复制 IVGColorPtr,保留色彩模式/专色ID) - 无填充/无轮廓对象跳过;渐变/图案等非均匀填充只读填充色时按无填充跳过
轮廓转曲增强
轮廓转曲增强(轮廓转曲增强)— 方案 §3.1 P0 对标魔镜「轮廓转曲」,碾压原生 & 魔镜的增强点: 1. 路径方向标准化:外轮廓统一顺时针(CW)、内孔统一逆时针(CCW) 原生 ConvertOutlineToObject 输出的复合路径内外方向由 CDR 自动生成, 与原始对象方向不一定一致 → 切割/巡边/激光镂空判断出错。 本增强用子路径包含关系 + IsClockwise 自动标准化,解决镂空里外颠倒。 2. 过滤 0 宽度轮廓:跳过 cdrNoOutline 与宽度<=0.001 的对象,不报错空转。 3. 选项:拆分复合路径(转完后 拆分 拆成独立对象),由参数 split 控制。 参数(AddonParams,AI/队列可传): normalize : 1(默认) 方向标准化 ; 0 关闭(仅过滤+转换) split : 1 拆分复合路径 ; 0(默认) 不拆分
轮廓抠图
轮廓抠图(轮廓抠图)— 方案 §3.7.1 P3 对标魔镜「轮廓抠图」:上层选中对象作为裁剪轮廓(刀),裁剪下层对象。 - 下层矢量对象 → 布尔相交(沿用 前面对象相交 逻辑) - 下层位图对象 → 不能布尔 → 放进轮廓 PowerClip 容器(AddToPowerClip) - 复杂自相交轮廓布尔失败 → 捕获并统计报告(不中断其余对象) 与 前面对象相交 的区别:它是"纯矢量布尔";本命令增加位图分支, 混合选择(轮廓+位图+矢量)一次处理。
实现于 PieMenuCore.cpp 命令分发表(CMD_ENTRY → COM 调用):为选中对象设置虚线轮廓。
CMD_ENTRY4 虚线轮廓
FloatingToolbar 专属命令集 为每种形状类型提供专属操作按钮 --- 胶囊:矩形变胶囊(设置圆角类型为Round + 四角最大化)---
正方
FloatingToolbar 专属命令集 为每种形状类型提供专属操作按钮 --- 胶囊:矩形变胶囊(设置圆角类型为Round + 四角最大化)---
矩形角原语共享后端:胶囊形 / 圆角归零 / 统一圆角。 胶囊形、圆角归零、统一圆角 和 矩形角处理(模式原语)(mode) 都只调用这里的 Apply;面板不承担几何算法。
转正方形:矩形变正方形
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
三点圆:用三个点画圆;P3: three-point circle
定直径圆:在页面中心绘制指定直径的圆
定直径圆:按指定直径画圆;Addon registered in AddonManager.h
垂直线:在页面中心绘制指定长度的垂直线
垂直线:画一条垂直直线;绘图工具扩展,Addon registered in AddonManager.h
| 宽×高 | 默认 defaultW × defaultH | 范围 0.01 ~ 99999.0 | 单位 mm |
精确尺寸:按输入数值设置对象尺寸
矩形规整:统一外框(内部物件不变)
按长度等分曲线 / 按数量等分 — Rhino Divide 对标 按长度:在曲线上每隔 L mm 放置一个标记 按数量:将曲线等分为 N 段,段端点放标记 标记可选:点 / 小圆 / 竖线
多边形生成器(面板版)— 参数化正 N 边形(2026-09-19 形状生成器批次) 参数:边数 / 外接圆半径 / 圆角半径 / 旋转角度 / 填充 用途:六边形、八边形标牌、底座。圆角半径>0 时四角圆角(证书/标签常用)。 实现:ShapeGen::CreatePolygon(二次贝塞尔升阶法做圆角)
圆环生成器(面板版)— 圆环 / 弧环 / 扇形(2026-09-19 形状生成器批次) 参数:类型 / 外半径 / 内半径 / 起始角 / 结束角 / 弧环端头圆角 / 填充 用途:环形刻度底、仪表盘、装饰环、进度环、实心饼块。 圆环 → 外圆(逆时针) + 内圆(顺时针) 双子路径,反向绕行保证挖洞 弧环 → 外弧 + 端头(直线或半圆帽) + 内弧回程,单闭合路径 扇形 → 圆心 + 外弧闭合(内半径不参与)
圆角矩形生成器(面板版)— 四角独立圆角(2026-09-19 形状生成器批次) 参数:宽 / 高 / 统一圆角(优先)/ 左上 / 右上 / 右下 / 左下 / 填充 用途:按钮、面板外框、图文底板;左上/右下不同圆角的异形卡板。 实现:ShapeGen::CreateRoundedRect(90° 圆弧 kappa 逼近)
星形变体生成器(面板版)— 生成远超CDR内置的复杂星形 竞品对标:Inkscape 星形 Tool 扩展 / 多边形 扩展 支持:圆角星/尖锐星/随机扰动/内外半径精细控制 实现:CreateCurve + 循环 AppendLineSegment
星形生成(参数化:角数/内外径)
波浪线生成器(面板版)— 参数化正弦波曲线 竞品对标:Inkscape Extensions → Render → Function Plotter 是对 波浪线.h 的面板版升级 实现:CreateCurve + AppendCurveSegment2 贝塞尔曲线近似正弦波
波浪生成器(参数化:波长/振幅)
波形生成器(面板版)— 三角波 / 方波 / 锯齿波(2026-09-19 形状生成器批次) 与 正弦波生成(正弦波)互补:本命令补齐电信号类折线波形。 参数:类型 / 周期数 / 振幅 / 波长 / 方向 / 闭合填充 实现:折线 AppendLineSegment;闭合填充时沿基线封底成带状面。
简化(布尔运算):移除选中对象间的重叠区域,支持 3+ 对象
曲线拉直:将曲线转换为直线段
曲线拉直:把曲线拉直成直线;拉直曲线
一键摆正(一键摆正)— 三种模式(2026-09-20 扩参,对标牛为"自动摆正", 见《66-牛为功能对标与缺口清单》§3.2,P0) mode=snap90(默认,原有行为) 将选中的 位图 / 矩形 / 椭圆 一键归正为横平竖直: · 旋转角度吸附到最近的 90° 倍数(0/90/180/270),保持对象位置与最接近的朝向 (仅旋转归正,不改变倾斜:VGCore 的 IVGShape 没有 SkewAngle 属性——该属性 只存在于 TextureFill/PatternFill 等填充接口(见 VGCoreAuto.tlh),"清除倾斜" 需矩阵变换路线另做,本命令不承诺。十二轮 1.3 降级订正,CSV 已同步。) · 每个对象绕自身中心旋转,多个对象逐个摆正,整体相对布局保持不变。 · 说明:与"清除变换(清除变换,强制归零)"不同,本功能吸附到最近的 90° 倍数,例如 30° → 0°、100° → 90°,不会把本应竖直的对象横过来。 mode=byAngle 任意角摆正(按角度) 把选中的每个对象旋转 -angle 度(对象自身再叠加自身原角度)。 作用于**任意类型**选中对象(含群组/曲线/文本)。 典型场景:扫描稿歪 7°,传 angle=7 全部转回水平。 mode=byTwoPoint 任意角…
一键摆正:自动对齐选中对象的朝向
中间曲线 — Rhino 在两曲线间生成N条中间过渡曲线 对标 选中两条曲线 → 利用 CDR 调和 调和效果取中间 N 条过渡曲线 实现:CreateBlend(target, steps, ...) → 拆分 群组 → 删除首尾
线裁切 — 选中线条拖到页面四边变裁切线 来源:corelvba/整版裁切线.bas → SelectLine_to_Cropline() 判断横线(宽度>高度)→放到页面上下边缘, 竖线(高度>=宽度)→放到页面左右边缘 实现(2026-09-20,F4 技术验证定谳后补全): 仅处理曲线件(cdrCurveShape),按中心点就近吸附: 横线 → 上/下边缘,裁切线跨全页面宽、两侧各外扩出血 竖线 → 左/右边缘,裁切线跨全页面高、上下各外扩出血 宽 0.2mm 套准色 CMYK100(兜底纯黑);原线删除;结果成组命名「裁切线: N条」。 原 TODO「CreateShapeRange API compatibility with CDR X8」已于 2026-09-20 真机定谳推翻:X8 仅应用级 a->CreateShapeRange()(IVGDocument 无此方法, tlb 与运行时一致;ShapeRange 亦无 合并,见 碎块合并),探针 _sr_probe27a/27b 全链路通过。
线条裁切:选中线条贴页面四边变裁切线
快速曲线文字:选中文字后一键沿椭圆路径弯曲 灵感来源:GDG John Johnson 的 roundTextSimple 宏 Shift+执行 → 更大幅度弯曲
弧形文字:让文字沿弧线排列
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
预览字体效果:查看字体渲染效果
[待重写] 现版仅弹窗统计(字体/次数/字号),功能弱。重写方向:可导出报告(HTML/CSV)+混排字体统计+按页面/图层维度(2026-08-24 用户评审标记)
高级搜索(参数化条件筛选,对标 eCut Advanced Search) 条件(面板可填,0 = 不限): 尺寸区间:宽度/高度 Min~Max 曲线特征:节点数 Min~Max、路径数 Min~Max 填充/轮廓:任意 / 有 / 无 对象类型:全部/曲线/文本/位图/群组/矩形/椭圆/多边形 搜索范围:整页(跨层级)/ 仅活动层 结果:选中命中对象;可选项"隐藏非匹配" 实现:FindShapes 遍历 + 谓词匹配 + sh->Selected 累加选中
高级搜索:按多条件(类型/颜色/尺寸/属性)查找对象
查找相似对象:以当前对象为基准,按「类型 + 尺寸比例 + 填充色 + 轮廓色」综合比对。 参数:scope=page|doc|sel(默认 page);recurse=1|0(默认 1) sizeTol=尺寸相对容差(%)默认 5;colorTol=颜色通道容差(0-100) 默认 2 strict=1 时要求类型完全相同(默认 1);add=1 追加 说明:比单纯的「选同尺寸/选同色」更宽松,用于找外观接近的重复元素。
查找相似对象:按类型+尺寸+填充色+轮廓色综合比对,找出外观相近的对象。;P0批次一 2026-09-17
语义(2026-09-20 真机定谳后的确定契约): 选中 N≥2 个对象 → 替换源(新对象)按以下优先级解析: 1. sourceName 非空:名字以 sourceName 开头且**唯一命中**的选中对象为替换源, 命中 0 个或多个 → 如实报错(最稳,AI/队列路径推荐) 2. sourceName 缺省:选区最上层对象(ShapeRange Item[1],z 序最前)为替换源。 ⚠️ COM 的 ActiveSelectionRange 枚举序 = z 序,不是点击/框选顺序,且 智能导入 落层受上下文影响——真机实测两轮方向相反,故默认契约仅作 回退,确定性场景务必传 sourceName(见 tests/live_niuwei_p1.py H2 复盘)。 其余 N-1 个 = 被替换对象(旧)。对每个旧对象: 1. 复制新对象 → 移到旧对象中心(fit=box 时等比缩放适配旧对象外接盒) 2. OrderFrontOf(旧) 紧贴旧对象前方占位 → 删除旧对象后新副本精确顶替其层位 3. deleteSource=0 时旧对象保留(副本仍紧贴其前方) 参数(AddonParams,AI/队列可传): sourceName : 替换源名字前缀(按选中对象 Name 前缀唯一匹配;最稳) fit : "none"(默认,只搬位置不改尺寸) | "b…
过滤条内部命令(从过滤条面板触发)
超大工具箱(独立命令) 背景:工具箱里的"合体"分类弹窗(标签页形式汇总所有分类命令)非常实用, 但它只能从工具箱进入。本命令把该功能提升为独立命令(command=超大工具箱), 绑定到饼菜单/RhoBar/智能面板后,即使设置中隐藏了工具箱,也能随时呼出 "超大工具箱",所有命令一个弹窗全部可用。 标签页内容/列数由配置编辑器在 PieMenuCPG.json 的 "_supertoolbox" 段独立配置; 未配置时自动汇总工具箱全部分类(去掉"最近/合体"特殊分类)。
超大工具箱:切换超大图标工具箱
内容收集器 — 收集文档中的位图、字体、颜色资源并生成 HTML 清单
收集文档里的位图/字体/颜色资源,生成清单
深层解组:递归解组所有嵌套群组 1. 主线程一次性 DFS 遍历选中对象树,收集所有群组 (StaticID, depth, ptr) 2. 将纯数据发送给 PieMenuWorker.exe 按 depth 从大到小排序 3. 主线程按排序结果,用之前保存的指针逐个解组(不依赖 ActiveSelectionRange 缓存)
深层解组:递归解开所有层级的群组;彻底解组
强力打开:CDR 文件打开前的诊断与修复 L4 备份找回:扫描同目录 Backup_of_*、FileRecovery、插件备份目录 L1 ZIP 修复:EOCD 缺失/损坏时从 local headers 重建 ZIP L2 缓存剔除:删除预览/缩略图缓存 + 清理颜色样式(同文件瘦身) L5 版本降级:V1 不做(只提示版本信息)
强力打开:跳过损坏内容强制打开文件;P1: force-open diagnose & repair
文件瘦身:清理 CDR 文件内部垃圾数据 S2 颜色样式清理(docPalette.xml,实验已验证安全) S3 预览缓存清理(previews/、metadata/thumbnails/,白名单) S1 视图样式(root.dat RIFF 修边 + 分析;块剔除 V1 保守不做)
清理文档冗余数据,减小文件体积(好命令);P1: reduce file size
对象统计:遍历当前页面所有形状,按类型统计数量,结果用 MessageBox 输出 参考:自动统计文本.gms 和 FileConverter VBA 遍历模式
统计选中对象的数量、类型、尺寸等数据
优排序
优排序(优排序)— 魔镜 #7,方案 §10.2 P8 功能:按对象位置重排 Z 序,控制切割顺序避免碰料移位。 0 = 从上到下(Y 降序) 1 = 从左到右(X 升序) 2 = 蛇形(按行从上到下扫描,奇数行反向) 对齐魔镜 BUG 的增强点: - 群组对象:按群组包围盒中心参与排序(魔镜群组逻辑混乱 → 我们按组中心) - PowerClip 内部不处理(顶层排序即可,切割以顶层为准) - 重排 Z 序:逆序 OrderToBack(复用 路径优化排序 已验证手法) 参数(AddonParams): mode : 0=从上到下 1=从左到右 2=蛇形(默认0) reorder: 1=重排Z序(默认1) 0=仅报告顺序
特殊镜像
特殊镜像(特殊镜像)— 魔镜超级模块 #2,方案 §8.2 P7 功能(用户先选择对象): - 多轴镜像:水平(X) / 垂直(Y) / 水平+垂直同时(XY) - 双模式:原地镜像(不复制)/ 复制-镜像(保留原对象) 相比现有 水平镜像复制(保留原对象)(仅水平复制)、垂直镜像复制(保留原对象)(仅垂直复制): - 新增 XY 同时镜像(cdrFlipBoth) - 新增原地镜像(不复制,直接翻转选中对象) - 面板 + AI 参数统一控制 参数(AddonParams): axis : 0=水平(X) 1=垂直(Y) 2=XY同时(默认0) copy : 1=复制-镜像(保留原对象) 0=原地镜像(默认1) silent : AI 静默
中心标记:在选中对象中心创建十字标记
给对象添加中心标记(十字线)
符号还原
符号还原递归(符号还原)— 方案 §3.7.2 P3 对标魔镜「符号还原」,增强点:递归处理嵌套符号(符号里套符号)。 原生 符号还原为对象(CMD_ENTRY4)对嵌套符号还原不彻底; 本命令用官方 COM API:IVGSymbol::RevertToShapes() 逐实例还原, 还原后检查结果是否仍含符号实例(sh->Symbol != null)→ 递归, 深度上限 10 防死循环。保留文档符号库不删除(对齐魔镜行为)。 参数(AddonParams):recursive = 1(默认) 递归嵌套 ; 0 仅还原一层
清空辅助线:删除当前页面所有辅助线
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
间距辅助线:显示间距参考线
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
等角辅助线:显示等角投影辅助线
网格切换:显示/隐藏网格
CMD_ENTRY4 显示/隐藏网格
等距排线 — 在选中对象包围盒内按固定间距画等距平行线 间距通过简单输入框获取,默认 5mm,记住上次输入值
生成一组等间距的平行线
效果字管理窗口(命令:效果字管理 / ID 316112000 / 16 文本) 布局:左 = 效果列表(ListView 表格:名称 / 目标 / 步数),右 = 按钮列。 双击列表项 = 直接应用;按钮:应用 / 录制(停止并保存) / 删除 / 重命名 / 上移 / 下移 / 导出选中 / 导入 / 全部导出 / 刷新。 窗口为 WS_POPUP 独立浮窗(owner = CDR 主窗口),可拖动、可调大小; 命令再次触发 = 显示/隐藏切换。内置效果仅是示例,可删除/重排/改名。
拆解特效(面板版)— 将 CDR 特效(轮廓/调和/立体化)结果拆解为独立对象 竞品对标:Inkscape Object to Path / Illustrator Expand Appearance 实现:检测 shape->GetEffects() → 拆分
拆解特效:效果转独立对象
路径弯曲(面板版)— 对选中对象应用封套变形 竞品对标:Inkscape Bend Path LPE / Illustrator Envelope Distort 实现:CreateEnvelope 对每个选中对象创建封套
路径弯曲:封套变形曲线
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
交互式工具面板大全(教学式聚合面板,2026-09-22) 定位:与「阵列面板大全」各种阵列:集成所有阵列命令 /「节点工具面板」节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) / 「测量面板大全」测量面板大全 同构的第四个聚合面板。 本面板专收 **交互式工具(ToolStates)** —— 点了之后接管鼠标、可连续操作、 Esc/右键退出的那类工具(仿 Rhino 的鼠标交互范式)。 与另三个聚合面板的分工(避免入口重复): 各种阵列:集成所有阵列命令 = 参数化阵列(弹窗填行列数,一次性出结果) 测量面板大全 = 测量/标注/报价(出读数或标注,不改对象) 节点工具面板(按钮式:类型/选中/手柄/工艺/角样式/修复) = 节点编辑辅助 工具面板大全(本) = 交互式工具总台:构造 / 阵列 / 笔刷 / 诊断 / 预览 / 导航 ⚠️ 派发路径与其它面板**不同**(这是本面板最容易踩的坑): ToolStates 工具 **不在** `Addons/AddonManager.h` 的 g_AllAddons[] 里, 它们是 main.cpp 里用 `ToolStateRegistry::Instance().Register(...)` 单独注册的。 所以 **不能** 用 AddonFindByCommand(cmd)->execute(a) 派发(必然找…
Addon registered in AddonManager.h
导出选中为PNG(2026-08-26 v6:诊断版) 已知事实链: - 直调 ExportBitmap(cdrSelection/cdrCurrentPage):自动化上下文静默空转(B5) - Evaluate(生产验证8参表达式):本插件内抛异常(v5 实测 errorCode40) 本版在关键步骤埋点,把 _com_error 描述写进报告 msg 字段,定位真实死因。 报告:C:\PieMenuCmd\export_last.json {"errorCode":N,"path":"...","bytes":N,"msg":"..."} 0=成功 40=异常 41=无文档 42=无选中 43=执行完但文件未产出
最小线长过滤 — 删除选中曲线中长度小于阈值的曲线 场景:Rhino/DXF 导入后,激光切割需过滤极短线(< 0.5mm 激光无法识别)
筛选出长度小于设定值的曲线段;;用户反馈:好像无效,待查;用户反馈:filter 中命令但打不开
删重线 — 删除选中区域中重叠的线条(位置+尺寸接近判定为重复) 来源:corelvba/整版裁切线.bas → RemoveDuplicates + Check_duplicate 算法:排序(先 Top 再 Left)→ 遍历比较相邻物件位置/尺寸差 < 0.3mm
删除重叠线:删掉完全重叠的线段(需先选中)
说明:本页为标准版解锁的二档工具箱命令详解;「参数(源码)」与「源码讲解」直接提取自 CdrPei 实现源码(CDR_PieMenu_CPG/Addons),与插件行为一致;标准版还包含全部免费版功能与命令大全、专项命令面板、配置编辑器等。专业版三档命令见专业版教程(tutorial-pro.html)。
本页由 docs/tools/gen-standard-tutorial.ps1 生成 · 更新于 2026-09-24 · 收录 92 条