Surpac 2026矿山设计工作流优化:UI面板化与宏自动化设计实战
升华洞察 2026-04-10
据统计,矿山工程师平均42%的日常工作时间耗费在重复性操作上——从地质断面绘制到坑道设计优化,再到报告生成。在Surpac用户中,仅18%的高级工程师会主动编写脚本或宏来自动化流程,其余82%要么依赖手动操作,要么受限于“录制宏”这种低效的线性自动化工具。这背后的根源在于:传统矿山设计软件缺乏“面板化”的交互范式,即将复杂操作封装为可视化模块,让非编程人员也能像搭积木一样定制工作流。在传统的露天矿设计中,工程师往往面临着“点击债务”的困扰:为了完成一个简单的坡道布置或台阶推演,可能需要进行数百次鼠标点击,并在数十个弹窗对话框之间反复切换。达索系统GEOVIA团队在Surpac 2026版本中,以UI面板化重构交互、以宏与自动化打通工作流,把工程师从重复劳动中解放出来。本文是GEOVIA CONNECT 25X实战系列第六篇,聚焦Glenn Barlow主讲的《Streamline your Mine Design Workflows with Surpac Macros》,本篇将进入矿山设计核心环节,用Surpac 2026全新工具,实现块模型高效处理、界面交互革新、露天坑一键化设计与参数跨项目继承。Glenn Barlow 不仅分享了软件的功能更新,更透视了矿山设计未来五年的技术走向,即从碎片化的命令操作进化为高度集成的智慧面板。本文将从底层块模型转换的性能革命谈起,穿过全新的用户界面交互逻辑,最后直抵那个令人振奋的“未来视界”——基于 Python 脚本定制的自动坑道设计原型。这是一次关于矿山设计效率边界的深度探索。一、块模型转换的革命——从“数据搬运”到“智能重构”
大家好,在接下来的时间里,我将向大家展示 Surpac 在 2026 版本中发生的根本性变革。这些变革的核心只有一个目标:通过精简矿山设计与工程流转中的每一个环节,把宝贵的时间还给设计师,让他们去思考更优的开采方案,而不是被琐碎的软件操作所束缚。今天的分享我打算分为三个核心章节来推进。首先,我们将深入探讨块模型处理的底层逻辑,特别是关于块模型转换器的重大性能优化,以及如何建立符合工业4.0标准的最佳实践。其次,我会带大家预览Surpac 2026中焕然一新的用户界面,理解“面板化”设计背后的交互逻辑。最后,我将展示一个面向未来的黑科技——自定义坑道设计面板,看我们如何利用Python脚本实现坑道设计的半自动化。让我们从矿山规划的核心——块模型(Block Model)谈起。在矿山设计的整个生命周期里,块模型是数据的最终汇聚地。无论是个地质资源模型还是开采规划模型,你都需要处理来自不同来源的海量数据。在现实的工业环境中,资源模型往往是由不同的部门、甚至不同的软件平台生成的。作为达索系统的核心产品,Surpac一直致力于构建一个开放的生态系统,让我们能够无缝接入这些多元数据。传统上,Surpac提供了非常强大的插件模块,支持直接“拖放”诸如Datamine、Vulcan、Micromine或Minesight等友商的格式。这种灵活性在早期极大地便利了数据交互,但随着矿山数字化程度的提高,这种模式的弊端也日益显现。当你直接在Surpac内部调用这些第三方格式时,虽然表面上能读取数据,但底层依然运行着非原生的驱动逻辑。这种“数据套壳”模式往往会导致模型体积臃肿,甚至达到几十个GB。这种臃肿的模型在实际操作中简直是工程师的噩梦。它反应迟钝、显示缓慢、报表输出极其困难,更致命的是,它无法完全调用Surpac顶层的全量高级功能。这就像是在一台超级计算机上运行模拟器来跑过时的程序,其整体效能(Throughput)被严重限制。因此,我们始终建议用户将外部模型转换为Surpac原生的.mdl格式,以解锁真正的性能巅峰。Surpac的原生.mdl格式之所以高效,是因为它采用了先进的块技术,如超级块(Super-blocking)和动态子块(Dynamicsub-blocking)。这意味着系统可以智能识别那些无需精细描述的区域,将它们合并为大块;而只在那些品位变化剧烈的薄脉区域,根据需要生成微型块。这种空间划分机制就像是计算机科学中的“四叉树”或“八叉树”算法在三维空间中的极致应用,极大地优化了存储和计算效率。然而,传统的转换过程往往充满挑战。当你试图将一个复杂的外部模型导入.mdl格式时,最大的恐惧莫过于“精度丢失”。我们不希望在合并块的过程中产生不必要的贫化(Dilution),尤其是在狭窄的矿脉附近。作为工程师,我们追求的是极高的对账精度(Reconciliation),希望转换后的模型能100%还原原始模型的资源量。但现实中,由于各个软件采用的子块架构(Sub-block Schemas)各异,这种匹配过程往往异常痛苦。这种痛苦的根源在于Surpac采用的八叉树子块架构(Octree Schema)。这意味着所有的子块必须是父块尺寸的偶数次细分。例如,如果父块是10米,那么子块可以是5米、2.5米、1.25米,或者是0.625米。如果你拿到的竞争对手模型包含1米或0.5米这种无法通过10米父块进行偶数划分的子块尺寸,软件底层就会出现逻辑冲突,导致转换后的边界无法精准贴合。在过去,为了解决这个几何逻辑上的矛盾,我们的最佳实践往往是先将模型导出为最小子块尺寸的文本文件,然后在Surpac中建立一套全新的、基于该最小尺寸的.mdl架构,最后再重新导入。这个过程虽然有效,但极其繁琐且冗长。特别是当你的模型拥有几十个甚至上百个属性属性(Attributes)时,中间生成的数据交换文件会变得极其庞大,整个过程就像是在进行一场数据迁移的马拉松。我们一直认为,工程师不应该在这些重复性的数据搬运上耗费精力。软件应该在底层自动处理这些复杂的逻辑转换。在旧版的块模型转换器中,由于采用了全内存加载机制,当处理超大规模模型时,经常会触发内存溢出错误。这是因为系统试图一次性加载所有属性并进行重构。这种贪婪的算法逻辑在现代超大规模矿山面前,往往显得力不从心,导致系统崩溃或长时间的无响应。为了彻底解决这一痛点,我们在Surpac2026中引入了一项划时代的功能:用户定义重新分块(User-Defined Reblocking)。这项新技术相比前代版本有两项质的飞跃。第一是引入了本地磁盘缓存机制(Local Disk Caching)。现在,系统不再试图一口气吞下整个模型,而是将模型按属性进行解构,一次只在一个属性上工作。这种“分而治之”的策略确保了内存占用的恒定,极大地提升了系统的稳健性。第二项飞跃则是对GPU加速的全面支持。长期以来,块模型的重构计算几乎全部依赖于CPU的单核或多核运算。而在2026版本中,我们成功解锁了图形处理器(GPU)的并行计算潜力。只要你的电脑配备了支持CUDA技术的NVIDIA显卡,转换速度将得到几何倍数的增长。这种变革就像是从单车道升级到了八车道的高速公路,即便是处理数十亿个块的大型模型,转换过程也能在几分钟内完成。在演示界面中,大家可以看到User-Defined Reblocking的激活流程非常直观。在输入端,我们不仅支持Datamine和Vulcan格式,还支持CSV以及Surpac自家格式的深度重构。在输出端,虽然主推.mdl格式,但我们也保留了向其他格式反向输出的灵活性。你可以自由设定最小块尺寸,系统会自动计算出转换后的块总数,让你对模型的规模有一个预先的量化评估。值得详细解释的是面板下方的三个高级选项。首先是“导出属性到磁盘缓存”,虽然这会增加一点磁盘I/O的时间,但它彻底终结了内存崩溃的问题。其次是“开启图形加速”,这是利用NVIDIA显卡算力的开关。最后是“多线程属性处理”,这是最暴力的加速模式,它会尝试将整个模型和所有属性的副本全部塞进内存。这个选项是为那些拥有海量内存(如128GB以上)的工作站准备的,能在极短的时间内产出结果。需要注意的是,这三者之间存在逻辑约束。一旦你勾选了磁盘缓存,系统就会自动禁用多线程全加载模式,以确保稳定性优先。在我的实际测试中,使用磁盘缓存配合GPU加速,是大多数工业场景下的最佳平衡点。在消息窗口中,你可以清晰地看到系统正在以毫秒级的速度写入和读取每个属性。这种透明度让工程师能清晰掌控数据重构的脉络,而不是面对一个死掉的进度条发呆。转换完成后,我们可以立即看到这个重构后的模型。得益于高效的超级块技术,即使在显示高分辨率边界时,系统的响应依然极其丝滑。此外,Surpac 2026的图层菜单也得到了增强,允许用户动态开启或关闭块的表面与棱边。这种视觉上的精细化控制,对于检查模型边界和内部结构至关重要。存储效率的提升不仅意味着更小的文件体积,更意味着在后续的品位分析和储量报表中,你能获得更快的响应速度。二、工作流的UI面板化革命——从“弹出表单”到“持久工作区”
现在,让我们进入第二个章节:Surpac 2026 UI面板化的革命。在矿山设计的日常工作中,工程师绝大部分的时间都花在了钻孔显示和块模型着色上。然而,传统的软件逻辑充斥着大量的“模态对话框”。当你想要修改钻孔显示的某个参数,比如将颜色映射从岩石编码改为岩石类型,你必须先运行功能,弹出表单,修改,点击确认,观察结果。如果发现不合适,你还得重复这一过程。这种往复式的操作流程在本质上是断裂的。每一次弹窗都是对工程师思维流(Flow)的一次打断。我们希望引入一种“持久化”的交互方式。在2026版本中,我们全面引入了“面板(Panels)”的概念。当你激活钻孔显示功能时,参数调整面板会出现在屏幕的一侧,并保持常驻。任何微小的参数变动——无论是显示半径的微调,还是过滤条件的改变——都会即时反馈在三维绘图窗口中。这种“所见即所得”的实时性极大地提升了决策的速度。更重要的是,我们引入了“显示属性项目文件(XML)”的存储机制。这意味着你可以将复杂的钻孔显示方案,包括颜色映射方案、标签格式、甚至是特定的三维过滤规则,一键保存并在团队内部共享。你可以直接在面板中加载这些XML配置文件,确保整个设计团队在同一个视觉语言下进行沟通。对于高级用户,这些XML文件甚至可以通过文本编辑器进行批量脚本化修改。说到过滤,Surpac 2026的约束功能也得到了史诗级的增强。过去,你可能需要编写复杂的逻辑语句来筛选钻孔。现在,你可以直接在持久化面板中利用钻孔的元数据或属性进行多维度叠加过滤。例如,你可以一键排除所有的探槽数据,只保留反循环(RC)和金刚石钻孔。甚至可以通过空间约束功能,利用一个地表的投影轮廓或一个特定的封闭三维实体,实现钻孔数据的空间裁剪。这种空间约束在实际应用中非常强大。比如,我只想看落入某个特定露天坑设计壳体内部的钻孔,我只需要将坑底表面加载为约束,系统就会智能地保留那些与该表面投影相交的部分。这种精细的“局部观察”能力,让工程师在进行局部开采计划设计时,能够剔除一切干扰信息,专注于眼前的核心目标。这种基于属性与空间的复合过滤逻辑,在行业内目前是处于领先地位的。同样的逻辑也被应用到了块模型的着色面板中。现在,你可以动态地加载多个块模型,并通过右键菜单快速切换它们的可见性、显示风格(如边框或填充)。在面板中,你可以通过简单的下拉菜单切换着色属性,比如从金品位切换到铜品位,系统会立即响应并刷新色阶。这种快速切换能力对于理解多金属矿床的分布特征,以及验证资源模型的准确性,具有不可替代的价值。此外,Surpac 2026的层管理器(Layer Manager)也经历了深刻的重塑。现在的层管理器不仅仅是一个列表,它更像是一个深入数据的导航窗格。你可以直接下钻到层内的每一个对象,甚至是具体到某一个三角网格或某一个线段段落。你可以在层管理器中直接看到每个元素的颜色、属性,并通过右键菜单执行诸如缩放、隐藏、校验、重命名甚至删除等核心操作。这种“就地操作”减少了工程师在各种深层菜单中寻找命令的时间。在处理包含数千个线文件的大型项目时,新引入的搜索与过滤功能简直是救命稻草。你可以通过关键词快速定位某个设计线,或者根据字母顺序、创建时间对图层进行重新排列。这些看起来像是细节上的“质量生活(Quality of Life)”改进,在长期的高强度工作中,能累积出惊人的效率增益。我们希望Surpac不仅仅是一个计算工具,更是一个懂工程师操作习惯的智能伴侣。三、面向未来的自定义设计面板——从“功能组装”到“意图驱动”
接下来,我要带大家进入今天演讲最激动人心的部分:自定义坑道设计面板(Custom Mine Design Panel)。这是一项关于“未来矿山设计”的视觉预览。长期以来,Surpac用户习惯于利用宏脚本(Macros)来定制工作流。而现在,随着Python脚本引擎的深度集成,我们正在将这一能力推向全新的维度。我们构建了一个原型面板,它将破碎的坑道设计命令整合到了一个一体化的流式界面中。传统的坑道设计是一个典型的多步骤、非线性过程。你需要加载壳体、生成平面剖面、手工数字化边坡线、调整平滑度、布置坡道入口、处理多台阶投影、设置平台宽度。每一个步骤都对应着不同的菜单和工具栏。据我们统计,完成一个完整的坑道推演,工程师可能需要点击鼠标上千次。这种高强度的手动操作不仅容易产生疲劳,更容易在处理复杂的坡道交汇点时引入几何拓扑错误。我们在Surpac 2026中推出的这个原型面板,旨在实现“参数化设计”与“交互式建模”的完美融合。面板的核心是一个被称为“设计项目(Design Project)”的元数据结构。它可以存储你当前设计的所有环境参数:台阶高度、坡道宽度、安全平台参数、目标坑底标高以及正在参考的优化壳体。这意味着当你因故中断工作,或者在第二天重新打开软件时,无需重新输入这些冗长的参数,系统会自动带入你之前的逻辑状态。在演示中,你可以看到自动设计工具的惊人威力。当我开始数字化第一条边坡线(Toe line)时,我不再需要小心翼翼地捕捉每一个点。我只需要大致勾勒出形状,系统内置的平滑算法会自动剔除那些尖锐的角度。更神奇的是坡道布置:你只需在设计线上指定一点,系统就会根据预设的宽度和坡度,自动在当前线段上切开缺口,插入坡道点,并生成符合几何规范的坡道模板。这种自动化极大地降低了坡道设计的门槛。在传统方法中,为了插入一个坡道,你需要手动断开线段、计算偏移量、生成辅助点,最后再重新闭合线。而在这个自定义面板中,一切都是瞬时完成的。系统不仅能自动生成当前的坡顶线,还能联动生成下一个台阶的坡底线。你可以选择“自动添加平台”模式,只要按一下“推演(Expand)”键,软件就会根据台阶参数,自动向上或向下推演出整个坑道雏形。更具突破性的是“平台扩展(Berm Expansion)”功能的革新。在传统的Surpac操作中,如果你需要为了拟合优化壳体而调整某段平台的宽度,过程极其痛苦。你得断开线、重新数字化、删除冗余点、合并、平滑。而在我们的新面板中,你只需简单地在那段需要调整的线上扫过,系统会自动检测交叉点,并智能地将新线段融合进原始拓扑结构中。这种操作逻辑非常接近于现代的图形编辑软件,极大地降低了操作的认知负荷。值得一提的是,这个工具解决了矿山设计中一个由来已久的难题:坡道点丢失。在传统的坐标索引模式下,一旦你修改了设计线的点序,坡道点往往会发生偏移甚至崩溃。而我们的新工具采用了基于坐标(Coordinates)的锚定逻辑。无论你如何平滑线段或重构平台,坡道点的核心地理位置始终受到保护。这确保了坑道设计在复杂的几何推演过程中,其开采技术条件的连贯性。在演示的最后,我仅用了不到五分钟时间,就从一个坑底起步线,完成了九个台阶的自动推演,并生成了包含完整坡道系统的复杂坑道三维表面。这一切的操作都是在同一个侧边面板中完成的,没有弹出任何干扰性的对话框。生成的表面可以直接进行品位报告、储量估算,或者与地形图进行布尔运算生成最终的施工图纸。虽然这目前还是一个原型阶段的定制化成果,但它代表了达索系统GEOVIA对未来矿山设计的思考。我们希望将矿山设计师从“绘图员”的角色中解放出来。未来的Surpac不仅仅是一个精准的测量和建模工具,它将进化为一个具备“设计感知”能力的智能引擎。通过深度定制的Python面板,每一个矿山都可以根据自己的开采技术规范,定义属于自己的自动化设计流。这就是我今天想分享给大家的Surpac 2026核心愿景:通过极致的性能优化夯实底座,通过持久化的面板逻辑优化交互,通过高度定制的自动化工具解放生产力。矿山设计不应是一项枯燥的重复劳动,而应是一场充满洞察力的探索之旅。如果您对这个自定义设计面板感兴趣,或者有更多的反馈和建议,欢迎在会后随时联系我。总结:从工具到平台,构建矿山设计的“自动驾驶”雏形
总结来说,Glenn Barlow为我们展示的不仅是Surpac 2026的新功能,更是一次矿山工程设计效率的“升维打击”。从支持GPU加速的User-Defined Reblocking,到彻底告别弹窗干扰的持久化UI面板,再到能够实现台阶自动推演的设计原型,Surpac正在从一个复杂的工具箱演变成一个流畅的、基于逻辑流的闭环系统。这种转变对于那些追求极致生产力的现代化矿山来说,无疑具有重大的战略意义。作为“从地质建模到智能矿山的全流程优化”系列文章的一部分,我们已经看到了数据如何从原始的钻孔信息转化为高精度的块模型,又如何通过自动化的设计手段转化为可落地的坑道方案。然而,设计仅仅是开始,如何将静态的设计方案转化为动态的生产指令?在下一篇文章中,我们将带您进入露天矿调度的核心领域,通过《MineSched露天矿高效调度:从战略规划到尾矿管理的闭环》,探索如何利用Easy Scheduling技术实现开采效益的最大化。敬请期待。附录:Glenn Barlow演讲完整原文(优化版)
Thank you to everyone for attending this session. It is great to see so many of you with us and I really appreciate the time that you are spending with us on this today. In this session, I am going to show you some of the changes that we have made to Surpac in the 2026 release to streamline the workflows within Surpac, particularly around the mine design and engineering workflows.Let us get started with that. I am going to take you through three different sections here. I am going to take you through one of them which is working with block models, the block model converter, and some of the best practices on what we should be doing with those block models. I am going to take you through some of the user interface changes that have come in Surpac in the 2026 release, and that are going to continue to come over the future releases. I am then going to give you a bit of a view to the future with custom panels, and what you can do with custom panels and scripts to improve your pit design workflows.Let us start with our block model and our block model conversion. Working with block models is a key aspect of mine planning and a key aspect of design within Surpac. You need to be able to bring your data from wherever it is generated, and typically resource models are built in a number of different packages, not always in Surpac, sometimes in competitor formats as well. We need to be able to bring those competitor formats into Surpac and to work with them.Surpac has always had and continues to have a very strong set of tools for how we work with our data coming from competitor formats. We have our plugin module. It allows us to drag and drop a wide range of different formats into Surpac and to work with it directly. That still works for block models today. If you want to drag and drop in a Datamine model, a Vulcan model, a Micromine model, or a Minesight model, then you can do so and it will come straight into Surpac and you can start working with it. But it will remain within that format. Even if you use an FBM model type to try and convert it, it is still under the hood a competitor format that is there, and that leads to some problems. By having this competitor format, we end up with a very large block model, often many gigabytes of a block model that we have to try and work with within Surpac. It is inefficient, slow, difficult to display, and difficult to report. We do not have a full suite of Surpac functionality that we can use over the top of it.Our recommendation in this space is normally to convert your block model, to change it from whatever format it is currently in into a Surpac .mdl format. The .mdl formats are very nice. They allow us to use advanced blocking tools such as super blocking and dynamic sub-blocking, which means that we only create small blocks where we need them, and we combine them back into larger blocks where we do not need that level of precision. But that is still fraught with difficulty because if we want to take a model from a competitor format and bring it into an .mdl format, then we need to be able to make sure we are not losing any precision. I do not want to join blocks together and add unnecessary dilution around narrow veins. I do not want to change the resource model that I was given. I want to have as close a reconciliation between my two formats as possible. And that is where the conversion steps take place to allow us to do things.The reason for the difficulty here is because of the sub-block schemas that we use. Within Surpac we use a sub-block schema which is called an octree sub-block schema. It means that you take your parent block size, let us say ten meters, and when we create a sub-block, that sub-block cannot be any size, it has to be an even subdivision of the parent block size. That means if we start with a ten-meter block size, we can divide it into a five-meter, we can divide that into a 2.5-meter, we can divide that into a 1.25-meter, we can divide that into a 0.625-meter, and so on and so forth. But we cannot turn it into a one-meter sub-block or turn it into a half-meter sub-block. The parent block size does not correlate to that and it does not allow us to do it. Often, that is what you get. You get a block model from a competitor format. That block model from a competitor format will have inside it a range of different block sizes.How do we work with them? In the past, the way that we would do that and our recommended best practice for it was to export at that minimum block size, to build a brand new .mdl model at that minimum block size with a suitable parent block size schema, and then to import the data back in. That works pretty well. There are some difficulties with it. Especially if you have a lot of attributes because you have to export everything, it can create a very large file to begin with and it is quite an onerous process to go through. You can script it and you can make that work pretty effectively, but we should not have to do that and we do not want to do that. What we want to do is to work within the tools that exist within the software itself.Let me give you an overview of what that looks like. Before, it would take a long and painful process of that export-import routine. If you get it wrong, then you end up combining blocks that you do not want to combine, and that leads to a poor reconciliation between the models and effectively a loss of precision. The size of the models and the number of attributes means that when you use the old block model converters inside of Surpac, you could often run out of memory. The reason for that was because it would load everything into memory in one go, then try and reblock all of those attributes at the same time. By doing that, you would take what was already quite a large model and blow it up into something enormous, which would inevitably overload the amount of memory you have got in your machine. Surpac could either crash or it would take a very long time to complete.What we have done now though is we have changed the way that our reblocking tool works, using a new function called User-Defined reblocking. This User-Defined reblocking has two major improvements over the previous revisions from the previous releases. The first one is the ability to use local disk caching. Local disk caching means that we can take that block model and instead of loading the whole thing into memory to process, we can break it out attribute by attribute and store those on our local drive and then work one at a time. What that means is that we never load the whole model into our memory. We instead just load one attribute of the model into our memory, and by doing it one attribute at a time, we do not overload the memory and we can still do it very quickly.We have also added the ability to utilize the power of your graphics card, your GPU. Previously, all processing took place on your CPU. By using your GPU, we are able to unlock some of that power of the graphics card to process it even faster than we could before. This is only compatible with NVIDIA cards, so if you are using an Intel-based card or some other graphical processing unit, it will not work. But if you are using an NVIDIA card that has CUDA technology, this will do it even faster than what you have been able to do before. It means that we can take enormous models and convert them down into .mdl files, which are very efficient and very quick to use, in a matter of minutes.Let us take a look and show you what that looks like. We are going to go here and activate the User-Defined reblocking. That is what we have here. We are going to go and find our block model that we want to use. For the import block model, we support a number of different formats here. We support Datamine format, we support Vulcan formats. We can take them from CSVs as well, we can take them from Surpac format, and there are a couple of others that are not listed here that will work as well. Once we open that model, we can then choose our output model. In this case, I want to output it to an .mdl, but there are other options if you want to go the other way. We can then within here look at our different block sizes. We can choose our user block size, what that smallest block size is going to be. We can choose our extents, which means we can expand or contract our block model at this point in time as well. And we can choose how we are going to work with our different attributes. Do we want all of them? Do we just want some of them? How are we going to calculate for blocks that are added together? If they are added together, we can use an average or an aggregate method. If they are a non-real or a non-float value, we can also use a highest frequency or a multi-fractional approach to it instead.As you change your block size, you will see here it telling you what your different block count is going to be, so you know roughly what you are going to create. If you go into here, you can choose that calculation method. There are some other additional flavors here and options for how to calculate that value. It is well documented within the help file.The real changes here are these three things down here. They are basically three different options. The first option will be to export the attributes to the disk cache. This is what I was saying about not loading the whole model at once, doing it one attribute at a time. It is a little bit slower, but it is dramatically more stable. It means that you will not get those out-of-memory errors that we have seen in the past performing reblocking. The second option is to enable graphical acceleration. That is going to use your GPU instead of your CPU, and it results in a much quicker processing time. The third option is multi-thread attribute processing. What that does is it loads the entire model into memory in one go and tries to process it all at once. That option is the fastest, but it is also the least stable because it is going to load the entire model into memory, and it is then going to try and create copies of that model for each attribute. In doing so, it is going to create a very large amount of memory utilization. If you have got a lot of memory or if you have a small model, it will work and it is the fastest possible route, especially if you turn on the graphical acceleration as well. But if you have a large model, that option is not going to work for you.If you enable this top option, that bottom option will automatically be disabled. You do not run them both at the same time; it is either run it one attribute at a time through the disk cache, or load them all into memory in one go. If you check this, you will see this gray out in just a second. In this case, I am going to use the disk caching just to show you what it looks like, and I am going to enable the graphics acceleration. When I do that, it is going to build a highly compressed folder to cache the data. It is then going to utilize my NVIDIA graphics card to do the processing because I have used the graphics acceleration. Because I already had a disk cache, I am going to tell it to overwrite it.The message window will update you on how long it is taking to process. You will see here that the writing times and the reading times for each of these attributes are fractions of a second for this particular model. Even on the very large models that I have used, it is a matter of seconds to do that writing. The reblocking and recombination do take a little bit longer though. On this particular model, it is extremely fast. Once it has generated that model, it will save it in your working directory or wherever you told it to save it. You can then work with that model as you see fit. In this case, I am just going to put on the constraint of that model and display that model. We are going to take a look at what it looks like from what we have done. Give it a second to display.There we go. The model has come up and that is our reblocked model. We have all of those blocks storing the data at the resolution of the competitor model. You also have some new functionality in the layer menu there, so you see I can turn off the faces or the edges of the blocks just to make it a little bit nicer. When we look into the block, we will see here the sizing of that block model. We will see the number of blocks and the storage efficiency. Keep in mind the storage efficiency here is how much it is super blocking those blocks back together. This is part of the technology of Surpac .mdl. That is why we want to use it. It is much more efficient even with very large numbers of blocks. It is much more efficient when we turn on that storage efficiency and when we work with it. We cannot get that with competitor formats. We cannot get that with FBM formats. That is why we are doing it. That is our new reblocking tool. We would very much like for you to utilize it and to provide us feedback on what you like about it, what you do not like about it, and what you would like us to change in it. We would be happy to look into that and see how we can change that and move it along for you to make it a better function.Moving along, we will go to the next section here, which is around streamlining our workflows by looking at the way that we display our data and the way that we handle that. One of the things that you are going to see in Surpac 2026, throughout the entire 2026 release cycle and into the 2027x release cycle, is a focus on streamlining workflows. We want to reduce the number of clicks that you have. We want to make it easier to get hold of your data, easier to show your data, and easier to work with that data. You are going to see a lot of UI refreshes coming along. We started with the block model coloring and the drillhole display functions because they are the most commonly used functions in Surpac, and so they are naturally our starting point.What we are trying to do here is to reduce the number of pop-up forms that you get. If we take a look at displaying our drillholes for instance, I have always been able to connect the database in, I have been able to hit the display function, I have been able to set up the parameters of display, and from that we get our drillholes displaying for us in our graphics. It works fine and has always worked pretty well. Doing that, I can add in labels, I can add in charts and graphs and that kind of thing. But the problem is if I want to make a change to it, if I have selected the wrong parameter, or if I just want to add an extra parameter, another label, a different coloring, that kind of thing, I have to rerun the function and show the form again, complete it, hit okay, and go again. Anytime I want to change it, I have to find that form again and have it show up for me, and that slows us down.We do not want to reload the form constantly. We want to have something that persists for as long as you are displaying that data type so that you can just quickly and easily make changes. That is what we are doing through the use of panels, to allow us to change those colors and displays dynamically and to have it persist across multiple screens and multiple viewports. The benefit of it is that you should be able to run those functions faster than you have before. It should be more interactive, it should make it faster to display, and it means that you will be able to see the update immediately. What we are also planning on doing is adding more functionality into those panels, so it does not just give you one function in that side panel, but we start to provide additional functionality across the top. You will see that in a second in the video, what we are doing there and how it works.This is a long-standing process. We are going to update a lot of the user interface in Surpac over the next year, and this is our starting point, but you will start to see more and more of this coming in. We are moving some of our key functionality. In this case, I am going to grab a drillhole database and connect it in. In previous releases of Surpac, we enabled the ability to have multiple databases. If you have multiple ones open, you will see them in the side panel, and we have some quick right-click functions to hide and display. When I choose to display it and display my drillholes, you will see this side panel appear. Within that side panel, I can now set up how I want to color things. This is the same as it has always been. I can sit there and color by rock code, give it a cylinder style that I want to have, and there is my data. But instead of closing the panel, the panel persists. If I got it wrong, for example, I put rock code and I meant to put rock type, I can change it to rock type and run it again. It will show you what we have got. Let us change the radius and reapply it. There we go, a quick change, no need to pop up the form repeatedly. It persists over here and I can work with it.The other thing that we are adding in here is the ability to store those settings so that you can reuse them and share them with other users. We have instituted this option here called a project name for display properties, and within that, you will store all of the settings that you have in this display so that you can record that as you need to. If I go and grab that display and hit refresh on here, it is going to redisplay all of my data, and I am going to apply it. It will then utilize the display that has been stored in that particular project file. The project file is an XML file, text-based. If you want to view it and look into it, you can edit it from a text editor. I would not recommend it, but it is possible. Instead, what you can do is just load it from here, make any changes you want, and save it using this output here. Then that file can be saved with the database and shared with different users.Everything persists, so labels persist across it. We are able to use those, and we are able to see all of that data coming through for us in one go. You will also notice that we have some core functionality across the top here. These are our commonly used drillhole functions, such as showing the display style. I can click on that, show my styles data, edit that styles data, and view it. We have also got constraints in here. The constraint function was updated a few releases ago in Surpac, but I wanted to take this opportunity just to refresh you on what we can do there. We have the ability within this constraint function to constrain based on any of the drillhole metadata or drillhole attributes. If I want to say I do not want to see any of my trenches, I just want to see my RC holes and my diamond drilling, then I can add that in here, use it as a constraint, and it will apply.You can also build complex constraints here. It means that if I want to manually remove a hole, I can use this option here to manually remove a hole. Then I can select the hole that I want to remove from my constraint, and it will remove it from the constraint. It does not remove it from the database, it is still there, but it takes it away from my view and from my constraints. That constraint can be saved, and we can utilize it downstream if we want it. You can also clear the constraints, either remove the last one or remove all constraints. You can do it one by one or all at once, your choice, and that allows us to show our data in different ways.Constraining based on an attribute in one of my tables is easy. What I want to show you now is something a bit more complicated. It is one of the spatial constraints that we added in. Spatial constraints allow us to utilize any of the different options that you have got here in that constraint table drop-down. That means I can constrain by a surface, I can constrain by a solid, I can constrain by a segment or a string if I wish to as well. Or I can combine these, save it into a constraint file, and use that constraint file as an additional constraint, exactly the same way that we always have done with our block model constraints. It means we can build some very complex constraints out of it. This one is going to be a simple one. I am basically going to constrain all the drilling within the silhouette of my pit surface. I am going to go and grab that pit, I am going to add it in, and I am going to use the option to keep the drillhole partially in the constraint. What "partially in the constraint" means is that if any part of that drillhole enters the silhouette of this surface, then I am going to retain that drillhole and use it. You will see that for these drillholes up here in the north, they are not intersecting the surface, but the bottom of it does intersect the silhouette of the surface, the boundary of that surface projected up and down. I can use that to show my data and to build more advanced constraints than ever before.The next one I wanted to show you was the panel for block model coloring. For the panel for block model coloring, you will see as of previous releases, you can load multiple block models now into Surpac, and if we right-click it, we are going to bring up some of the most commonly used functions. We have got here some visibility, some faces, some edges. We are looking to improve and add to this, but this is what we have got so far on it. If I choose, I can turn off the block edges quickly from here, I can show the block edges from here as well, and I can show all of my data. I can hide the block model dynamically from here and reshow it, and you can do that on a block model by block model basis.If I choose to color the block model, then I am going to get the block model color panel, and that panel is going to persist for me on the right-hand side here to allow me to make those changes as I see fit. If I want to scan it and display grade ranges by gold, I can do that. If I want to edit the grade range, I can do that. If I want to change it to a different attribute, I just choose a different attribute again, reapply the coloring that I want to use from that, and see the results straight away. The aim here is just to make it faster than having those forms popping up all the time.The last thing I wanted to show you on this in Surpac 2026 before I get onto some of the custom design tools, is to show you what has happened with the layer panel. The layer panel here has been upgraded with a lot more detail about what you have open in your active layer from your string or DTM or SDM file. In this case, when you dig into that layer, it is going to show you the objects of the layer. You can see all those coming through here. We can also see from here the TriObject and a trisolation. It means that I can dig into it in the layer manager and see its color. I can use the most commonly selected functions in here such as zooming it, hiding it, validating it, renumbering it, or deleting it. I can do all of that directly from that layer manager setup rather than having to do it from the functions. Same thing for strings and segments, I can show all of my strings, I can see the color for each of those strings and segments. I can right-click on them as well and do things like selecting it, hiding it, showing it, renumbering it, or deleting it. All of that functionality is there.Again, we are looking to improve the right-click menus, but this is what we have got for the moment. If you have got something you would really like us to have, please let us know. We will be happy to add it in. The other option that we have got here as well is if I open a large number of string files into this, we have the ability to search and to filter our layer manager and then from there we can change the display of it. We have also got the ability to reorder it so that we can order it alphabetically on the layer manager there. These are relatively small things, but they are quality of life improvements. It means that we should be faster and better with our processes by doing that. That is the main aim, but if there are other parts of your workload that you would like us to look at and try and improve and speed up, please let us know. We will be happy to take a look at it with you.On to the next one. The next thing that I wanted to show you and the last item on my presentation today is to look at the custom panels. We have always been able to use scripts to customize workflows within Surpac. We are able to daisy-chain different functions together, we are able to create brand new functions if we want to, and in recent releases, we have also added the ability to do Python scripting and to utilize that. What I wanted to show you here was a bit of a view to the future, because one of the things we want to do across the 2026 release cycle and the 2027 release cycle is to really improve the workflows for people, and one of the areas that we want to look to improve is in the pit design.I am going to show you a little bit about what we have done there. This is a prototype so it is not available for you to use at the moment, but if it is something that interests you, please let us know. I will be happy to share any of the scripts we have got to give you a chance to have a play around with it. Once we have tidied it up a little bit, and if it looks like we are going in the right direction, then please let us know because we would like to integrate this into the product as an out-of-the-box functionality.When we create pit designs in Surpac, it requires a number of different functions to create that design, and those functions are stored in different menus, in different forms, and in different toolbars, so that you can access the function that you need and work with it. It inevitably means a lot of clicking, a lot of searching around for the function you need, and it is a bit of a slow process to be honest. It is something that we have been looking to try and improve for a while. What we have done is built a customization, and that customization allows us to store a variety of our pit design functions altogether in one of these side panels, and to augment that standard functionality with some custom functionality.To give you an example of that, if we want to create our pit design, the basic way of doing it is that we load our pit shell. We section our pit shell onto a plane that we want to design on. We digitize around that pit shell. Once we have created that toe line, we then need to adjust it and smooth it to get rid of any sharp angles to make it look nice. Then we need to put in place our ramp entries. That means breaking the line, creating the correct ramp width, creating the points, and making sure nothing is in the way. Once we have done that, creating our ramps, setting the points, making sure that we have set our base angle that we want to use for the projection, and then we are able to project by bench height and create our next crest. That is a lot of clicking and a lot of functions to get one extra line out and a ramp. We want to be able to shortcut that and make it faster than we have been able to do it in the past. The way we do that is that we have added a load of automatic functions and scripts to be able to get us around that in this custom panel.The other thing then is once you have created that crest, you then need to expand it by a berm width. You may need to adjust that berm to take in the extra material of the pit shell. Then once you have done that, you have to make sure that your ramp points have not been lost and you then have to project up to your next crest. It is a bit of an inefficient process and it is an area of focus for us to try and improve over the 2026 release cycle. At the moment, what we have done is we put together this set of tools to try and streamline that and to give a bit of an idea and a prototype for what it will look like. Let me walk you through some of that.What we have developed here is a side panel which is called the Surface Design side panel. Within that, we have got the ability to resize it, to undock it, to move it to different viewports and different windows, to work in a multi-window environment if we want to, if you have got multiple screens, to be able to resize it, to be able to change what it is. This is why we created that as a panel, but also I want it to persist so that it is there constantly for us and able to work. We have also created the concept here of a pit design project. Within that pit design project, I am going to be able to create a name, and that pit design project is going to store some of my parameters that I will want to use later. The idea behind this is that we should be able to pick a design up and put it down without having to re-enter all of the parameters that we need for it. We should be able to load it, just start working, and go again.By having this project file, we can store all of that background metadata and utilize it. Things like the angles, the heights, the widths, the ramp widths, the optimization shell that we are working on, the elevation that we are working on, that kind of information. I am going to put that in, I am going to select my optimization shell, and I am going to tell it that we are starting at 20 meters RL. For this design, everything is centered around zero. I am going to choose that, make sure it is all turned on, and hit apply. What it will do is the function will go off and automatically section that pit shell and set me to the correct plane to work.Now what I am going to do is I am going to use the auto design tools to create my first toe. You do not need to worry about snapping to things too much because we are going to smooth all of this data anyway. The more points that you insert, the more it is going to control the shape in that area. The fewer points you insert, the more it is given freedom to smooth between them. By doing that, we then apply our smoothing algorithm and away it goes. You simply digitize it, press escape. The toe will be smoothed, any sharp corners will be removed based on the corner tolerance that we specify here, and it will generate the starting toe. Again, if I did not like the way that it looked, all I needed to do was to create a couple of extra points in the corner, and that would have sucked us in closer to this corner.Now that we have this shape and we are ready to go, we need to position where the ramp is going to be. The next option is to pick a point, and it will give us a view of the template. This width is based on the ramp width that we specified here. It is going to detect that point where it needs to project to be on the outside. It is going to then detect where it needs to bring the shape back to intersect. It is going to then detect that intersect for me, so I can choose it there or I can move it wherever I want it to be. I am going to have it here for this example. When I hit escape, it automatically inserts that shape into my toe. It will break the toe, add the points in, close the toe, and make sure that it is compliant for use in my design downstream.I will then get my standard ramp definition menu pop-up, it will be pre-populated with information from the panel, and at that point, I am ready to get started. If I hit apply on this, it will automatically go off and generate the ramp, and generate the crest and toe of the next bench. The toe of the next bench, crest of this bench. It goes off and generates that for me. Within this sidebar, you can apply smoothing at any time, but it will happen automatically anyway if you have got that box checked. You can also use it in the old-fashioned mode. If you want to just expand by a bench height and the berm width the way that we do normally, then simply turn off that auto berm addition and use these functions independently, and they will go off and do what we need to. But if we want to do it in an easy fashion, we have got this ability to turn on the auto berm addition, and as soon as we do that, it will generate the whole bench in one go. Let us go up two benches at a time. We turn on the auto berm addition, tell it to expand, and it will go off and generate those two benches for me.Now that I have generated those two benches, I now need to adjust out this toe line. I need to adjust the toe to take in this expansion of the pit shell. I do that by using a function here called berm expansion. You could do it the old-fashioned way: break the line, reactivate it, digitize around the edge, break the line here as well, delete the points in between, rejoin it, close the segment, smooth it to make sure it is a nice shape, and away you go. But it is a lot of clicks and a lot of functions for what we should be able to do as one. What we did here was create this custom script which will allow us to effectively digitize over. As long as I cross the line, it will detect its intersect, put in a few points down the bottom here, and then drag it up and intersect again.The smoothing will be applied automatically, the line will be broken, and the line will be incorporated into my new line. If I like it, I can just go as it is. If I do not like it, I can still move the points and edit the points within this. I will not lose my ramp points either, because the ramp points are assigned based on their coordinates and not based on a point order like it typically is in Surpac tools. By doing this, I have streamlined that process of not losing the ramps as often as we have done in the past. That is why you see these ramp point coordinates being published down the bottom here, just letting us know where we are from each point.Now what I am going to do is I am going to jump up by a single bench, so let us do that. It will project me up by one bench. I am going to need to expand the toe again here. I am going to go off and use my berm expansion method and I am going to tell it where to start from. I am going to digitize in a few points. More points will control the shape, fewer points allows it to smooth as it needs to. It is up to you to decide how much you want it to honor certain shapes. Then I can go off and make sure it crosses that toe line twice. If I hit escape, it will merge that in, and I will get my new option. Let us project up again, project up again. Now I think I am going to have a problem on the next projection.I think that we are going to have some issue with this sharp angle. It is going to give me a weird kink in the ramp, and I do not want that. What I am going to do now is I am going to use my standard point editing tools and segment editing tools. By doing that, I can come in and delete this point. It just so happens to be the first point, so it has opened the segment. That is bad luck, but it happens sometimes. In the older tools, if you had done that, you would have broken the ramp points at this stage. If you break the ramp points, then you have to reassign the ramp points before you can get going again. Not within this tool. It remembers the ramp points, so you are good to go. I could move the points, I could delete them.There are lots of different ways of doing this. I could redigitize if I want to. I could even use the berm expansion to just digitize something across here that might be a bit smoother and cleaner to do this. But for this example, I am just going to delete things and rejoin it just to show you that the point delete and the join tools work as expected. At that point, I closed the segment and I am ready to expand the bench height back up and off the way it goes. Now let us go up a large number, let us go for nine benches. It is going to generate nine benches up and beyond.Ideally, I should be checking each bench. I should be expanding the berms on each one correctly, but this is a preliminary example. I am just going to show you what it looks like quickly. We have gone off and generated that. It pulled it through pretty neat and tidy, and looks as we expect it to look. Now what I can do is triangulate that surface. I can display the triangle faces again; we disable them when we are clipping the pit shell so they do not get in the way. There you go, there is your design, there is your surface. You can then use that to report tonnages and grades from the block model, you can merge it with topographies, you can use it for clipping, whatever you want to do with it.The basic premise there is that we are trying to build a bit of a prototype for how we could streamline that workflow. These are some of the ideas that we have. If it looks like something you would be interested in trying, or giving us some advice about how you would like your workflow to look, please let us know. We will be happy to answer any questions, and happy to work with you on it. Thanks very much.洞察3D UNIV+RSES,洞察生成式经济,洞察体验经济,洞察循环经济,洞察可持续发展,洞察工业复兴,欢迎订阅《升华洞察》公众号!如有合作意向,请加主编微信号“pearapple”留言。