首页 > 其他 > 详细

使用规则重定义使civil 3d标签与视图平行

时间:2020-07-24 10:42:23      阅读:80      评论:0      收藏:0      [点我收藏+]

昨天同事提出了这样一个需求,

要让曲面的点位高程标签与屏幕平行,

以便于查看,

如下图:

技术分享图片

技术分享图片

其实这个实现起来很简单:

不知道大家对这个教程是否熟悉,

技术分享图片

如果熟悉的话,

问题就相当简单。

直接修改样例代码,

几行代码就搞定了。

 

    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);
        }
    }

 

这里需要注意的是,

标签样式中“方向引用”需要设置为“世界坐标系”,

否则标签有些时候显示会不符合需求。

技术分享图片

 

使用规则重定义使civil 3d标签与视图平行

原文:https://www.cnblogs.com/myzw/p/13369887.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!