lixiaojun
6 天以前 e3480050ec8569769745bb545df2b3ddb2c80d0f
优化水流方向功能
已修改24个文件
805 ■■■■ 文件已修改
Yw.WinFrmUI.Hydro.L3d2.Core/EditerL3d2.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/ViewerL3d2.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/Yw.WinFrmUI.Hydro.L3d2.Core.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/01-initial/DrawInitialHelper.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/11-billboard-text/BillboardTextDraw3D.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/DrawFlowDirectionHelper.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/FlowDirectionDraw3D.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/FlowDirectionGroupDraw3D.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/00-core/LinkDrawer.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/01-pipe/PipeLogicalDrawer.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/02-vipe/VipeLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/03-translation/TranslationLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/04-pump/PumpLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/05-valve/ValveLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/06-resistance/01-exchanger/ExchangerLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/06-resistance/02-compressor/CompressorLogicalDrawer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/02-draw3d/01-visual/VisualDraw3D.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/02-draw3d/03-link/00-core/LinkDraw3D.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawManager.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/EditerL3d.xaml.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/ViewerL3d.xaml.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WpfUI.Hydro.L3d.Core/Yw.WpfUI.Hydro.L3d.Core.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.WinFrmUI.Hydro.L3d2.Core/EditerL3d2.cs
@@ -517,6 +517,68 @@
        #endregion
        #region 水流方向
        /// <summary>
        /// 显示水流方向
        /// </summary>
        public void ShowFlowDirection()
        {
            _wpfViewer?.ShowFlowDirection();
        }
        /// <summary>
        /// 隐藏水流方向
        /// </summary>
        public void HideFlowDirection()
        {
            _wpfViewer?.HideFlowDirection();
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public bool FlowDirectionVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.FlowDirectionVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.FlowDirectionVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(FlowDirectionL3d item)
        {
            _wpfViewer.SetFlowDirection(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(List<FlowDirectionL3d> items)
        {
            _wpfViewer.SetFlowDirection(items);
        }
        /// <summary>
        /// 清理水流方向
        /// </summary>
        public void ClearFlowDirection()
        {
            _wpfViewer.ClearFlowDirection();
        }
        #endregion
        #region 添加模式
        /// <summary>
Yw.WinFrmUI.Hydro.L3d2.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -2,7 +2,7 @@
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
  <PropertyGroup>
    <History>True|2025-05-06T04:25:07.7448966Z||;True|2025-05-06T12:20:11.7083540+08:00||;True|2025-05-06T12:20:05.9513514+08:00||;True|2025-05-06T10:51:28.7337521+08:00||;True|2025-05-06T10:51:06.6456811+08:00||;True|2025-05-06T10:50:58.8911173+08:00||;True|2025-05-06T10:34:44.8136252+08:00||;True|2025-05-06T10:34:27.7212544+08:00||;True|2025-05-06T10:16:30.5074881+08:00||;True|2025-05-06T09:07:27.2170966+08:00||;True|2025-04-22T15:50:06.4794535+08:00||;True|2025-04-03T15:07:50.7868897+08:00||;True|2025-04-03T14:53:27.6125391+08:00||;True|2025-04-03T14:09:06.0738035+08:00||;</History>
    <History>True|2025-05-06T06:03:10.9343885Z||;True|2025-05-06T12:25:07.7448966+08:00||;True|2025-05-06T12:20:11.7083540+08:00||;True|2025-05-06T12:20:05.9513514+08:00||;True|2025-05-06T10:51:28.7337521+08:00||;True|2025-05-06T10:51:06.6456811+08:00||;True|2025-05-06T10:50:58.8911173+08:00||;True|2025-05-06T10:34:44.8136252+08:00||;True|2025-05-06T10:34:27.7212544+08:00||;True|2025-05-06T10:16:30.5074881+08:00||;True|2025-05-06T09:07:27.2170966+08:00||;True|2025-04-22T15:50:06.4794535+08:00||;True|2025-04-03T15:07:50.7868897+08:00||;True|2025-04-03T14:53:27.6125391+08:00||;True|2025-04-03T14:09:06.0738035+08:00||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
Yw.WinFrmUI.Hydro.L3d2.Core/ViewerL3d2.cs
@@ -518,5 +518,67 @@
        #endregion
        #region 水流方向
        /// <summary>
        /// 显示水流方向
        /// </summary>
        public void ShowFlowDirection()
        {
            _wpfViewer?.ShowFlowDirection();
        }
        /// <summary>
        /// 隐藏水流方向
        /// </summary>
        public void HideFlowDirection()
        {
            _wpfViewer?.HideFlowDirection();
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public bool FlowDirectionVisible
        {
            get
            {
                return _wpfViewer == null ? false : _wpfViewer.FlowDirectionVisible;
            }
            set
            {
                if (_wpfViewer != null)
                {
                    _wpfViewer.FlowDirectionVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(FlowDirectionL3d item)
        {
            _wpfViewer.SetFlowDirection(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(List<FlowDirectionL3d> items)
        {
            _wpfViewer.SetFlowDirection(items);
        }
        /// <summary>
        /// 清理水流方向
        /// </summary>
        public void ClearFlowDirection()
        {
            _wpfViewer.ClearFlowDirection();
        }
        #endregion
    }
}
Yw.WinFrmUI.Hydro.L3d2.Core/Yw.WinFrmUI.Hydro.L3d2.Core.csproj
@@ -8,11 +8,11 @@
    <OutputType>Library</OutputType>
    <UseWPF>True</UseWPF>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <Version>1.1.0</Version>
    <Version>1.1.1</Version>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Yw.WpfUI.Hydro.L3d.Core" Version="1.1.0" />
    <PackageReference Include="Yw.WpfUI.Hydro.L3d.Core" Version="1.1.1" />
  </ItemGroup>
  <ItemGroup>
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/01-initial/DrawInitialHelper.cs
@@ -142,6 +142,18 @@
        }
        /// <summary>
        /// 获取Link3D
        /// </summary>
        public List<LinkDraw3D> GetLink3D()
        {
            if (!Initialized)
            {
                return default;
            }
            return _allVisual3dDict.Values.Where(x => x is LinkDraw3D).Select(x => x as LinkDraw3D).ToList();
        }
        /// <summary>
        /// 添加Visual3D
        /// </summary>
        public bool AddVisual3D(VisualDraw3D visual3d)
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/11-billboard-text/BillboardTextDraw3D.cs
@@ -11,7 +11,7 @@
        public BillboardTextDraw3D(VisualDraw3D visual3d)
        {
            _visual3d = visual3d;
            _visual3d.Visual3DChangedEvent += Update;
            Attach();
            Update();
        }
@@ -30,12 +30,24 @@
            this.Position = new Point3D(center.X, center.Y, center.Z + size.Z / 2);
        }
        //附加
        private void Attach()
        {
            _visual3d.Visual3DChangedEvent += Update;
        }
        //分离
        private void Detach()
        {
            _visual3d.Visual3DChangedEvent -= Update;
        }
        /// <summary>
        /// 释放
        /// </summary>
        public void Dispose()
        {
            _visual3d.Visual3DChangedEvent -= Update;
            Detach();
        }
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/DrawFlowDirectionHelper.cs
@@ -5,34 +5,59 @@
    /// </summary>
    internal class DrawFlowDirectionHelper
    {
        /// <summary>
        /// 
        /// </summary>
        public DrawFlowDirectionHelper(HelixViewport3D viewport)
        public DrawFlowDirectionHelper
            (
                HelixViewport3D viewport,
                DrawInitialHelper initialHelper
            )
        {
            _viewport = viewport;
            _group3d = new FlowDirectionGroupDraw3D();
            _initialHelper = initialHelper;
            _group = new FlowDirectionGroupDraw3D(viewport, initialHelper);
        }
        private readonly HelixViewport3D _viewport = null;//三维组件
        private readonly FlowDirectionGroupDraw3D _group3d = null;//组
        private readonly Dictionary<string, FlowDirectionDraw3D> _cache = new();//缓存
        private readonly DrawInitialHelper _initialHelper = null;//绘制辅助类
        private readonly FlowDirectionGroupDraw3D _group = null;//组
        /// <summary>
        /// 可见性
        /// </summary>
        public bool Visible
        {
            get
            {
                return _visible;
            }
            set
            {
                if (value)
                {
                    Show();
                }
                else
                {
                    Hide();
                }
            }
        }
        private bool _visible = false;
        /// <summary>
        /// 显示
        /// </summary>
        public void Show()
        {
            var group3d = _viewport.Children.OfType<FlowDirectionGroupDraw3D>().FirstOrDefault();
            if (group3d == null)
            var group = _viewport.Children.OfType<FlowDirectionGroupDraw3D>().FirstOrDefault();
            if (group == null)
            {
                _viewport.Children.Add(_group3d);
                _viewport.Children.Add(_group);
            }
            //if (_cache.Count < 1)
            //{
            //    var all = GetAll();
            //    Set(all);
            //}
            _visible = true;
        }
        /// <summary>
@@ -40,11 +65,20 @@
        /// </summary>
        public void Hide()
        {
            var textGroup3d = _viewport.Children.OfType<FlowDirectionGroupDraw3D>().FirstOrDefault();
            if (textGroup3d != null)
            var group = _viewport.Children.OfType<FlowDirectionGroupDraw3D>().FirstOrDefault();
            if (group != null)
            {
                _viewport.Children.Remove(textGroup3d);
                _viewport.Children.Remove(group);
            }
            _visible = false;
        }
        /// <summary>
        /// 设置
        /// </summary>
        public void Set(FlowDirectionL3d item)
        {
            _group.Set(item);
        }
        /// <summary>
@@ -52,8 +86,7 @@
        /// </summary>
        public void Set(List<FlowDirectionL3d> items)
        {
            Clear();
            items?.ForEach(x => Add(x));
            _group.Set(items);
        }
        /// <summary>
@@ -61,90 +94,25 @@
        /// </summary>
        public void Clear()
        {
            if (_cache.Count > 0)
            {
                foreach (var item in _cache.Values)
                {
                    item.Dispose();
                }
                _cache.Clear();
                _group3d.Children.Clear();
            }
            _group.Clear();
        }
        /// <summary>
        /// 更新
        /// 释放
        /// </summary>
        public void Update(FlowDirectionL3d item)
        public void Dispose()
        {
            if (item == null)
            {
                return;
            }
            if (_cache.ContainsKey(item.Id))
            {
                var flowDirectionItem = _cache[item.Id];
                if (flowDirectionItem != null)
                {
                    flowDirectionItem.Positive = item.Positive;
                    flowDirectionItem.UpdateVisual();
                }
            }
            else
            {
                Add(item);
            }
            _group.Dispose();
        }
        /// <summary>
        /// 更新
        /// </summary>
        public void Update(List<FlowDirectionL3d> items)
        {
            items?.ForEach(x => Update(x));
        }
        //添加
        private void Add(FlowDirectionL3d item)
        {
            if (item == null)
            {
                return;
            }
            if (!_cache.ContainsKey(item.Id))
            {
                var flowDirectionItem = Create(item);
                if (flowDirectionItem != null)
                {
                    _cache.Add(item.Id, flowDirectionItem);
                    _group3d.Children.Add(flowDirectionItem);
                }
            }
        }
        //创建
        private FlowDirectionDraw3D Create(FlowDirectionL3d item)
        {
            if (item == null)
            {
                return default;
            }
            var link3d = _viewport.Children.OfType<LinkDraw3D>()
                .Where(x => x.Visual.Id == item.Id).FirstOrDefault();
            if (link3d == null)
            {
                return default;
            }
            var flowDirection = new FlowDirectionDraw3D(link3d);
            return flowDirection;
        }
        //获取所有
        private List<FlowDirectionL3d> GetAll()
        {
            var link3ds = _viewport.Children.OfType<LinkDraw3D>().ToList();
            return link3ds?.Select(x => new FlowDirectionL3d() { Id = x.Visual.Id, Positive = true }).ToList();
        }
    }
}
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/FlowDirectionDraw3D.cs
@@ -12,9 +12,7 @@
        {
            _link3d = link3d;
            _positive = positive;
            _link3d.Visual3DChangedEvent += UpdateVisual;
            UpdateVisual();
            Attach();
        }
        private readonly LinkDraw3D _link3d = null;//绘制管段
@@ -25,37 +23,57 @@
        public bool Positive
        {
            get { return _positive; }
            set { _positive = value; }
            set
            {
                _positive = value;
                Update();
            }
        }
        private bool _positive = true;
        /// <summary>
        /// 更新可是元素
        /// </summary>
        public void UpdateVisual()
        //更新
        private void Update()
        {
            var htmlColor = Yw.Settings.HydroL3dParasHelper.HydroL3d.Flow.Direction.HtmlColor;
            var color = htmlColor.ToMediaColor();
            this.Material = DrawMaterialHelper.GetMaterial(color);
            var center = _link3d.Drawer.StartPosition + (_link3d.Drawer.EndPosition - _link3d.Drawer.StartPosition) / 2d;
            var start = _link3d.Drawer.StartPosition + (center - _link3d.Drawer.StartPosition) / 2d;
            var end = center + (_link3d.Drawer.EndPosition - center) / 2d;
            if (this.Positive)
            var start = _link3d.GetStartPosition();
            var end = _link3d.GetEndPosition();
            if (start.HasValue && end.HasValue)
            {
                //this.Point1 = start;
                //this.Point2 = end;
            }
            else
            {
                //this.Point1 = start;
                //this.Point2 = end;
            }
                var center = start.Value + (end.Value - start.Value) / 2d;
                var sp = start.Value + (center - start.Value) / 2d;
                var ep = center + (end.Value - center) / 2d;
            //this.Diameter = Yw.Settings.HydroL3dParasHelper.HydroL3d.Flow.Direction.Diameter;
                if (this.Positive)
                {
                    this.Point1 = sp;
                    this.Point2 = ep;
                }
                else
                {
                    this.Point1 = ep;
                    this.Point2 = sp;
                }
                var htmlColor = Yw.Settings.HydroL3dParasHelper.HydroL3d.Flow.Direction.HtmlColor;
                var color = htmlColor.ToMediaColor();
                this.Material = DrawMaterialHelper.GetMaterial(color);
                var diameter = _link3d.GetDiameter();
                this.Diameter = diameter;
            }
        }
        //附加
        private void Attach()
        {
            _link3d.Visual3DChangedEvent += Update;
        }
        //分离
        private void Detach()
        {
            _link3d.Visual3DChangedEvent -= Update;
        }
        /// <summary>
@@ -63,7 +81,7 @@
        /// </summary>
        public void Dispose()
        {
            _link3d.Visual3DChangedEvent -= UpdateVisual;
            Detach();
        }
    }
Yw.WpfUI.Hydro.L3d.Core/03-draw/00-core/12-flow-direction/FlowDirectionGroupDraw3D.cs
@@ -3,8 +3,186 @@
    /// <summary>
    /// 水流方向组绘制元素
    /// </summary>
    internal class FlowDirectionGroupDraw3D : ModelVisual3D
    internal class FlowDirectionGroupDraw3D : ModelVisual3D, IDisposable
    {
        /// <summary>
        ///
        /// </summary>
        public FlowDirectionGroupDraw3D
            (
                HelixViewport3D viewport,
                DrawInitialHelper initialHelper
            )
        {
            _viewport = viewport;
            _initialHelper = initialHelper;
            Attach();
        }
        private readonly HelixViewport3D _viewport = null;//三维组件
        private readonly DrawInitialHelper _initialHelper = null;//初始化辅助类
        private readonly Dictionary<string, FlowDirectionDraw3D> _cache = new();//缓存
        /// <summary>
        /// 是否初始化
        /// </summary>
        public bool Initialized
        {
            get { return _initialized; }
            private set { _initialized = value; }
        }
        private bool _initialized = false;
        //初始化
        private void Initialize()
        {
            if (!_initialHelper.Initialized)
            {
                return;
            }
            _initialized = true;
        }
        /// <summary>
        /// 设置
        /// </summary>
        public void Set(FlowDirectionL3d item)
        {
            if (!Initialized)
            {
                return;
            }
            if (item == null)
            {
                return;
            }
            if (_cache.ContainsKey(item.Id))
            {
                var text = _cache[item.Id];
                if (text != null)
                {
                    text.Positive = item.Positive;
                }
            }
            else
            {
                AddItem(item);
            }
        }
        /// <summary>
        /// 设置
        /// </summary>
        public void Set(List<FlowDirectionL3d> items)
        {
            if (!Initialized)
            {
                return;
            }
            if (items == null || items.Count < 1)
            {
                return;
            }
            items.ForEach(x => Set(x));
        }
        /// <summary>
        /// 清除
        /// </summary>
        public void Clear()
        {
            if (!Initialized)
            {
                return;
            }
            if (_cache.Count > 0)
            {
                foreach (var item in _cache.Values)
                {
                    item.Dispose();
                }
                _cache.Clear();
            }
            if (this.Children != null && this.Children.Count > 0)
            {
                this.Children.Clear();
            }
        }
        //添加项
        private void AddItem(FlowDirectionL3d item)
        {
            if (!Initialized)
            {
                return;
            }
            if (item == null)
            {
                return;
            }
            if (!_cache.ContainsKey(item.Id))
            {
                var flowDirection = CreateItem(item);
                if (flowDirection != null)
                {
                    _cache.Add(item.Id, flowDirection);
                    this.Children.Add(flowDirection);
                }
            }
        }
        //创建项
        private FlowDirectionDraw3D CreateItem(FlowDirectionL3d item)
        {
            if (!Initialized)
            {
                return default;
            }
            if (item == null)
            {
                return default;
            }
            var visual3d = _initialHelper.GetVisual3D(item.Id);
            if (visual3d == null)
            {
                return default;
            }
            var link3d = visual3d as LinkDraw3D;
            if (link3d == null)
            {
                return default;
            }
            var flowDirection = new FlowDirectionDraw3D(link3d);
            flowDirection.Positive = item.Positive;
            return flowDirection;
        }
        //处理初始化完成
        private void OnInitialCompleted()
        {
            Initialize();
        }
        //附加
        private void Attach()
        {
            _initialHelper.InitialCompletedEvent += OnInitialCompleted;
        }
        //分离
        private void Detach()
        {
            _initialHelper.InitialCompletedEvent -= OnInitialCompleted;
        }
        /// <summary>
        /// 释放
        /// </summary>
        public void Dispose()
        {
            Clear();
            Detach();
        }
    }
}
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/00-core/LinkDrawer.cs
@@ -1,5 +1,4 @@

namespace Yw.WpfUI.Hydro
namespace Yw.WpfUI.Hydro
{
    /// <summary>
    /// 管段绘制器
@@ -32,6 +31,11 @@
        /// 结束位置
        /// </summary>
        public Point3D? EndPosition { get; set; }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        /// <summary>
        /// 更新位置
@@ -93,5 +97,7 @@
            return list;
        }
    }
}
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/01-pipe/PipeLogicalDrawer.cs
@@ -14,11 +14,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/02-vipe/VipeLogicalDrawer.cs
@@ -13,12 +13,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/03-translation/TranslationLogicalDrawer.cs
@@ -13,12 +13,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/04-pump/PumpLogicalDrawer.cs
@@ -13,12 +13,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/05-valve/ValveLogicalDrawer.cs
@@ -14,12 +14,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/06-resistance/01-exchanger/ExchangerLogicalDrawer.cs
@@ -13,12 +13,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/01-drawer/03-link/06-resistance/02-compressor/CompressorLogicalDrawer.cs
@@ -13,12 +13,6 @@
        }
        /// <summary>
        /// 直径
        /// </summary>
        public double Diameter { get; set; }
        //初始化
        protected override void Initialize()
        {
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/02-draw3d/01-visual/VisualDraw3D.cs
@@ -123,6 +123,17 @@
        #endregion
        #region 属性处理
        /// <summary>
        /// 获取Id
        /// </summary>
        public string GetId()
        {
            return this.Visual.Id;
        }
        #endregion
Yw.WpfUI.Hydro.L3d.Core/03-draw/01-draw/02-draw3d/03-link/00-core/LinkDraw3D.cs
@@ -168,6 +168,20 @@
        #endregion
        #region 直径
        /// <summary>
        /// 获取直接
        /// </summary>
        public virtual double GetDiameter()
        {
            return this.Drawer.Diameter;
        }
        #endregion
    }
Yw.WpfUI.Hydro.L3d.Core/03-draw/02-manager/DrawManager.cs
@@ -21,11 +21,8 @@
            _colorHelper = new DrawColorHelper(viewport, _initialHelper);
            _opacityHelper = new DrawOpacityHelper(viewport, _initialHelper);
            _visibleHelper = new DrawVisibleHelper(viewport, _initialHelper);
            _billboardTextHelper = new DrawBillboardTextHelper(viewport, _initialHelper);
            _flowDirectionHelper = new DrawFlowDirectionHelper(viewport);
            _flowDirectionHelper = new DrawFlowDirectionHelper(viewport, _initialHelper);
        }
        #region 事件集合
@@ -50,10 +47,7 @@
        protected readonly DrawColorHelper _colorHelper = null;//颜色辅助类
        protected readonly DrawOpacityHelper _opacityHelper = null;//透明度辅助类
        protected readonly DrawVisibleHelper _visibleHelper = null;//可见性辅助类
        protected readonly DrawBillboardTextHelper _billboardTextHelper = null;//公告文本辅助类
        protected readonly DrawFlowDirectionHelper _flowDirectionHelper = null;//水流方向辅助类
        #endregion
@@ -964,6 +958,41 @@
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public virtual bool FlowDirectionVisible
        {
            get
            {
                if (!Initialized)
                {
                    return false;
                }
                return _flowDirectionHelper.Visible;
            }
            set
            {
                if (!Initialized)
                {
                    return;
                }
                _flowDirectionHelper.Visible = value;
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public virtual void SetFlowDirection(FlowDirectionL3d item)
        {
            if (!Initialized)
            {
                return;
            }
            _flowDirectionHelper.Set(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public virtual void SetFlowDirection(List<FlowDirectionL3d> items)
@@ -973,30 +1002,6 @@
                return;
            }
            _flowDirectionHelper.Set(items);
        }
        /// <summary>
        /// 更新水流方向
        /// </summary>
        public virtual void UpdateFlowDirection(FlowDirectionL3d item)
        {
            if (!Initialized)
            {
                return;
            }
            _flowDirectionHelper.Update(item);
        }
        /// <summary>
        /// 更新水流方向
        /// </summary>
        public virtual void UpdateFlowDirection(List<FlowDirectionL3d> items)
        {
            if (!Initialized)
            {
                return;
            }
            _flowDirectionHelper.Update(items);
        }
        /// <summary>
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/EditerL3d.xaml.cs
@@ -553,27 +553,34 @@
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public bool FlowDirectionVisible
        {
            get { return _manager?.FlowDirectionVisible ?? false; }
            set
            {
                if (_manager != null)
                {
                    _manager.FlowDirectionVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(FlowDirectionL3d item)
        {
            _manager.SetFlowDirection(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(List<FlowDirectionL3d> items)
        {
            _manager.SetFlowDirection(items);
        }
        /// <summary>
        /// 更新水流方向
        /// </summary>
        public void UpdateFlowDirection(FlowDirectionL3d item)
        {
            _manager.UpdateFlowDirection(item);
        }
        /// <summary>
        /// 更新水流方向
        /// </summary>
        public void UpdateFlowDirection(List<FlowDirectionL3d> items)
        {
            _manager.UpdateFlowDirection(items);
        }
        /// <summary>
Yw.WpfUI.Hydro.L3d.Core/03-draw/03-control/ViewerL3d.xaml.cs
@@ -545,6 +545,65 @@
        #endregion
        #region 水流方向
        /// <summary>
        /// 显示水流方向
        /// </summary>
        public void ShowFlowDirection()
        {
            _manager?.ShowFlowDirection();
        }
        /// <summary>
        /// 隐藏水流方向
        /// </summary>
        public void HideFlowDirection()
        {
            _manager?.HideFlowDirection();
        }
        /// <summary>
        /// 水流方向可见性
        /// </summary>
        public bool FlowDirectionVisible
        {
            get { return _manager?.FlowDirectionVisible ?? false; }
            set
            {
                if (_manager != null)
                {
                    _manager.FlowDirectionVisible = value;
                }
            }
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(FlowDirectionL3d item)
        {
            _manager.SetFlowDirection(item);
        }
        /// <summary>
        /// 设置水流方向
        /// </summary>
        public void SetFlowDirection(List<FlowDirectionL3d> items)
        {
            _manager.SetFlowDirection(items);
        }
        /// <summary>
        /// 清理水流方向
        /// </summary>
        public void ClearFlowDirection()
        {
            _manager.ClearFlowDirection();
        }
        #endregion
        /// <summary>
        /// 卸载
        /// </summary>
Yw.WpfUI.Hydro.L3d.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -2,7 +2,7 @@
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
  <PropertyGroup>
    <History>True|2025-05-06T04:24:06.1275328Z||;True|2025-05-06T12:17:30.5477075+08:00||;True|2025-05-06T12:09:02.1715202+08:00||;True|2025-05-06T10:48:14.2754277+08:00||;True|2025-05-06T10:31:56.4341238+08:00||;True|2025-05-06T10:11:06.0348707+08:00||;True|2025-05-06T10:11:00.3082825+08:00||;False|2025-05-06T10:10:39.1136970+08:00||;True|2025-05-06T09:05:16.4695917+08:00||;True|2025-04-22T15:43:19.8599243+08:00||;True|2025-04-03T14:51:22.5389895+08:00||;True|2025-04-03T13:39:16.2049845+08:00||;</History>
    <History>True|2025-05-06T05:56:55.7963451Z||;False|2025-05-06T13:56:30.4192182+08:00||;True|2025-05-06T12:24:06.1275328+08:00||;True|2025-05-06T12:17:30.5477075+08:00||;True|2025-05-06T12:09:02.1715202+08:00||;True|2025-05-06T10:48:14.2754277+08:00||;True|2025-05-06T10:31:56.4341238+08:00||;True|2025-05-06T10:11:06.0348707+08:00||;True|2025-05-06T10:11:00.3082825+08:00||;False|2025-05-06T10:10:39.1136970+08:00||;True|2025-05-06T09:05:16.4695917+08:00||;True|2025-04-22T15:43:19.8599243+08:00||;True|2025-04-03T14:51:22.5389895+08:00||;True|2025-04-03T13:39:16.2049845+08:00||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
Yw.WpfUI.Hydro.L3d.Core/Yw.WpfUI.Hydro.L3d.Core.csproj
@@ -7,7 +7,7 @@
        <UseWPF>true</UseWPF>
        <ImplicitUsings>enable</ImplicitUsings>
        <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
        <Version>1.1.0</Version>
        <Version>1.1.1</Version>
    </PropertyGroup>
    <ItemGroup>