feat:调整3D相关内容,修改Base窗口标题

master
Tongg 7 months ago
parent cf281c69bd
commit ca6eb18070
  1. 5
      App.xaml.cs
  2. 1
      Language/zh_CN.xaml
  3. 8
      MainWindow.xaml.cs
  4. BIN
      Resource/Images/UIResource/03-0.jpg
  5. 4
      SparkClient.csproj
  6. 1
      SparkClient.sln.DotSettings.user
  7. BIN
      SparkDB.db
  8. 13
      Views/BaseWindow/BaseControl.xaml
  9. 5
      Views/UserControl/Viewport3D.xaml
  10. 20
      Views/UserControl/Viewport3D.xaml.cs
  11. 77
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
  12. 6
      Views/UserControl/ViewportData/Helper/ViewportManager.cs

@ -2,6 +2,8 @@
using System.Data;
using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Threading;
using log4net.Config;
using SparkClient.Model.Helper;
@ -19,5 +21,8 @@ public partial class App : Application
XmlConfigurator.Configure(new FileInfo("log4net.config"));
//运行是否需要归档
Log4NetHelper.ArchiveOldLogs();
//打开数据库连接
//读取数据库多语言配置
}
}

@ -141,6 +141,7 @@
<sys:String x:Key="ViewportRightMenuSelectFaceFrame">显示选择面的边框</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceLengthText">显示选择面边框长度文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceAngleText">显示选择面夹角角度文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceText">显示关联信息文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceKind">显示选择面的同类面</sys:String>
<sys:String x:Key="ViewportRightMenuShowDefectFace">显示瑕疵面</sys:String>
<sys:String x:Key="ViewportRightMenuShowFront">显示正方向标识</sys:String>

@ -3,6 +3,7 @@ using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Animation;
using HandyControl.Controls;
@ -37,7 +38,14 @@ public partial class MainWindow
this.WindowState = WindowState.Minimized;
};
}
// 强制设置应用窗口大小为 1920x1080
this.Width = 1920;
this.Height = 1080;
}
public static extern int GetDpiForSystem();
protected override void OnContentRendered(EventArgs e)
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -74,7 +74,7 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="SparkDB.db">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Remove="Resource\Images\config_3x.png" />
<None Remove="Resource\Images\diam_3x.png" />
@ -181,6 +181,8 @@
<Resource Include="Resource\Images\UIResource\08-4.png" />
<None Remove="Resource\Images\UIResource\08-5.jpg" />
<Resource Include="Resource\Images\UIResource\08-5.jpg" />
<None Remove="Resource\Images\UIResource\03-0.jpg" />
<Resource Include="Resource\Images\UIResource\03-0.jpg" />
</ItemGroup>
<ItemGroup>

@ -34,6 +34,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMessageBox_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffdc001c928464b80ad45ffa09b838a3a15e200_003F55_003F1a844f6e_003FMessageBox_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARoutedEventArgs_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F1a88b4a860176dd5f825206bbebf3ee3d44ff3f058ceed9eb693c1eaa018_003FRoutedEventArgs_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002ECoreCLR_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F955ec549fe664629353c3b5424b6ad6c7dfcec4ab59bae709ab962c228cf45_003FRuntimeType_002ECoreCLR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteCommand_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc7a59cb727594ed7a94648b2d66dbf702aa28_003F2f_003Fdc5f3094_003FSqliteCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskCompletionSource_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5147b10c5a8c4522b56fba0a889139cfc8f908_003Ffc_003Fe9092391_003FTaskCompletionSource_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F68d37d16685244cf9996bf767117a771210200_003F3a_003Ff14dd285_003FTextInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcca5cfb955e146648d91eb22ffe4627a84930_003F7a_003F2d86be72_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

Binary file not shown.

@ -45,14 +45,15 @@
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Height="50" VerticalAlignment="Top" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
<Grid Grid.Row="0" Height="80" VerticalAlignment="Top" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
<!-- 渐变背景 -->
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="#e8eaf7" Offset="0" />
<GradientStop Color="#e8eaf7" Offset="0.5" />
<GradientStop Color="#d5d7f0" Offset="1" />
</LinearGradientBrush>
<ImageBrush ImageSource="../../Resource/Images/UIResource/03-0.jpg"></ImageBrush>
<!-- <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> -->
<!-- <GradientStop Color="#e8eaf7" Offset="0" /> -->
<!-- <GradientStop Color="#e8eaf7" Offset="0.7" /> -->
<!-- <GradientStop Color="#d5d7f0" Offset="1" /> -->
<!-- </LinearGradientBrush> -->
</Grid.Background>
<!-- 顶部布局 -->
<Grid.ColumnDefinitions>

@ -63,8 +63,9 @@
<Separator />
<MenuItem Header="{StaticResource ViewportRightMenuSelectFace}" x:Name="ViewportRightMenuSelectFace" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceFrame}" x:Name="ViewportRightMenuSelectFaceFrame" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceLengthText}" x:Name="ViewportRightMenuSelectFaceLengthText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceAngleText}" x:Name="ViewportRightMenuSelectFaceAngleText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceText}" x:Name="ViewportRightMenuSelectFaceText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceLengthText}" x:Name="ViewportRightMenuSelectFaceLengthText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
<!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceAngleText}" x:Name="ViewportRightMenuSelectFaceAngleText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceKind}" x:Name="ViewportRightMenuSelectFaceKind" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
</ContextMenu>
</Border.ContextMenu>

@ -44,16 +44,18 @@ public partial class Viewport3D
//选项初始化 显示-后端-管理类 一致
ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
// ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
// ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceText.IsCheckable = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuShowModelFace.IsChecked = true;
ViewportRightMenuShowModelFrame.IsChecked = true;
ViewportRightMenuShowLighting.IsChecked = true;
ViewportRightMenuSelectFace.IsChecked = ViewportManager.DoubleClickSelect;
ViewportRightMenuSelectFaceFrame.IsChecked = ViewportManager.DoubleClickSelectShowBorder;
ViewportRightMenuSelectFaceLengthText.IsChecked = ViewportManager.DoubleClickSelectShowBorderLength;
ViewportRightMenuSelectFaceAngleText.IsChecked = ViewportManager.DoubleClickSelectShowBorderAngle;
// ViewportRightMenuSelectFaceLengthText.IsChecked = ViewportManager.DoubleClickSelectShowBorderLength;
// ViewportRightMenuSelectFaceAngleText.IsChecked = ViewportManager.DoubleClickSelectShowBorderAngle;
ViewportRightMenuSelectFaceText.IsChecked = ViewportManager.DoubleClickSelectShowInfoText;
ViewportRightMenuSelectFaceKind.IsChecked = ViewportManager.DoubleClickSelectShowPlaneType;
@ -262,8 +264,9 @@ public partial class Viewport3D
private void MenuItem_OnCheckedChanged(object sender, RoutedEventArgs e)
{
ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
// ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
// ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceText.IsCheckable = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
var controlName = ((MenuItem)sender).Name.ToString();
@ -313,6 +316,11 @@ public partial class Viewport3D
ViewportManager.DoubleClickSelectShowBorderLength = checkResult;
ViewportManager.ResetChooseAddModels();
break;
case "ViewportRightMenuSelectFaceText":
//双击选择面的边框长度文字
ViewportManager.DoubleClickSelectShowInfoText = checkResult;
ViewportManager.ResetChooseAddModels();
break;
case "ViewportRightMenuSelectFaceAngleText":
//双击选择面的边框夹角文字
ViewportManager.DoubleClickSelectShowBorderAngle = checkResult;

@ -431,8 +431,11 @@ public class ViewportHelperPro
public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities,
Color4? textColor = null,bool showAll = false)
{
var selFacet = entities;
var selFacetType = entities.First().PlaneType;
var result = new List<GeometryModel3D>();
if (entities.Count > 0 && entities[0].PlaneType == PlaneType.Girdle)
if (selFacetType == PlaneType.Girdle)
{
if (ViewportManager.MainModelGirdleMaxLines != null || ViewportManager.MainModelGirdleMinLines != null ||
ViewportManager.MainModelGirdleAvgLines != null)
@ -447,30 +450,52 @@ public class ViewportHelperPro
}
else
{
var selFaceVector = entities
.SelectMany(entity => new[] { entity.Point1, entity.Point2, entity.Point3 })
.Distinct()
.ToList();
var uniqueLines = new HashSet<string>();
var sortedVectors = VectorClockwiseSort(selFaceVector);
for (int i = 0; i < sortedVectors.Count; i++)
{
var current = sortedVectors[i];
var next = sortedVectors[(i + 1) % sortedVectors.Count];
//查找同类面
List<Viewport3DTriangleEntity> facetTypeAll =
ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == selFacetType);
var groupedDic = facetTypeAll.GroupBy(entity => entity.PlaneCode)
.ToDictionary(group => group.Key, group => group.ToList());
/***
*
* 1181664other
* 2
* 1
* 80-7 -> 1-8
* 161-23-45-67-89-1011-1213-1415-0
* 64else里的东西来
* 3
* 4Manager里制定面-
* 5
* 6
* -id的文本
* +0.1"个单位 显示文本
*/
double length = (next - current).Length();
string lineKey = $"{length:F2}";
if (showAll == false)
{
if (uniqueLines.Contains(lineKey)) continue;
uniqueLines.Add(lineKey);
}
var midPoint = (current + next) / 2;
var text = $"{length:F2}mm";
var textY = midPoint.Y > ViewportManager.CenterVector.Y ? midPoint.Y + 0.3f : midPoint.Y - 0.3f;
var lengthTextModel = DisplayText3D(text, new Vector3(midPoint.X, textY, midPoint.Z),next - current, textColor);
result.Add(lengthTextModel);
}
// var selFaceVector = entities
// .SelectMany(entity => new[] { entity.Point1, entity.Point2, entity.Point3 })
// .Distinct()
// .ToList();
// var uniqueLines = new HashSet<string>();
// var sortedVectors = VectorClockwiseSort(selFaceVector);
// for (int i = 0; i < sortedVectors.Count; i++)
// {
// var current = sortedVectors[i];
// var next = sortedVectors[(i + 1) % sortedVectors.Count];
//
// double length = (next - current).Length();
// string lineKey = $"{length:F2}";
// if (showAll == false)
// {
// if (uniqueLines.Contains(lineKey)) continue;
// uniqueLines.Add(lineKey);
// }
// var midPoint = (current + next) / 2;
// var text = $"{length:F2}mm";
// var textY = midPoint.Y > ViewportManager.CenterVector.Y ? midPoint.Y + 0.3f : midPoint.Y - 0.3f;
// var lengthTextModel = DisplayText3D(text, new Vector3(midPoint.X, textY, midPoint.Z),next - current, textColor);
// result.Add(lengthTextModel);
// }
}
@ -1106,11 +1131,11 @@ public class ViewportHelperPro
avgLine = lineLengths.OrderBy(l => Math.Abs(l.Length - lineLengths.Average(ll => ll.Length)))
.First().Line;
}
private static float CalculateLength(Tuple<Vector3, Vector3> line)
private static double CalculateLength(Tuple<Vector3, Vector3> line)
{
Vector3 startPoint = line.Item1;
Vector3 endPoint = line.Item2;
return Vector3.Distance(startPoint, endPoint);
return Math.Round(Vector3.Distance(startPoint, endPoint), 2);
}
#endregion

@ -91,6 +91,8 @@ public class ViewportManager
public static bool DoubleClickSelectShowBorderLength = false;
//选中边框夹角文字
public static bool DoubleClickSelectShowBorderAngle = false;
public static bool DoubleClickSelectShowInfoText = false;
//选中同类面
public static bool DoubleClickSelectShowPlaneType = true;
//选中三角形代码
@ -112,8 +114,8 @@ public class ViewportManager
HashSet<SelShowType> models = new HashSet<SelShowType>();
models.Add(SelShowType.SelPanel);
if(DoubleClickSelectShowBorder) models.Add(SelShowType.Border);
if (DoubleClickSelectShowBorderLength) models.Add(SelShowType.LengthText);
if (DoubleClickSelectShowBorderAngle) models.Add(SelShowType.BorderAngle);
if (DoubleClickSelectShowInfoText) models.Add(SelShowType.LengthText);
// if (DoubleClickSelectShowBorderAngle) models.Add(SelShowType.BorderAngle);
if (DoubleClickSelectShowPlaneType) models.Add(SelShowType.IsTypePanel);
ChooseAddModels.AddRange( ViewportHelperPro.GentrateChosenView(ChooseTriangleCode, models.ToArray()));
ChooseAddModels.ForEach(e => _viewport.Items.Add(e));

Loading…
Cancel
Save