使用规则重定义使civil 3d标签与视图平行
昨天同事提出了这样一个需求,
要让曲面的点位高程标签与屏幕平行,
以便于查看,
如下图:
其实这个实现起来很简单:
不知道大家对这个教程是否熟悉,
如果熟悉的话,
问题就相当简单。
直接修改样例代码,
几行代码就搞定了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class LabelOverrule : DrawableOverrule { public override bool WorldDraw(Autodesk.AutoCAD.GraphicsInterface.Drawable drawable, Autodesk.AutoCAD.GraphicsInterface.WorldDraw wd) { return false ; } public override void ViewportDraw(Autodesk.AutoCAD.GraphicsInterface.Drawable drawable, Autodesk.AutoCAD.GraphicsInterface.ViewportDraw vd) { SurfaceElevationLabel label = (SurfaceElevationLabel)drawable; Point3d org = label.LabelLocation; Matrix3d m = Matrix3d.PlaneToWorld( new Plane(org, vd.Viewport.ViewDirection)) * Matrix3d.WorldToPlane( new Plane(org, label.GetPlane().Normal)) * Matrix3d.Rotation(-label.RotationAngle, label.GetPlane().Normal, org); vd.Geometry.PushModelTransform(m); base .ViewportDraw(drawable, vd); vd.Geometry.PopModelTransform(); } public override int SetAttributes(Autodesk.AutoCAD.GraphicsInterface.Drawable drawable, Autodesk.AutoCAD.GraphicsInterface.DrawableTraits traits) { return ( base .SetAttributes(drawable, traits)|2048); } } |
这里需要注意的是,
标签样式中“方向引用”需要设置为“世界坐标系”,
否则标签有些时候显示会不符合需求。
如何调用上面的代码,
还可以参照这个链接中文章。
标签:
Civil3d
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?