浏览代码

添加等高线过密处裁剪工具,浩辰工具新增计曲线注记和示坡线标注功能

qyx 1 天前
父节点
当前提交
6f532f8838
共有 100 个文件被更改,包括 65657 次插入0 次删除
  1. 二进制
      加密后软件工具/CAD插件工具/CutDGX/.vs/CutDGX/v16/.suo
  2. 25
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX.sln
  3. 969
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Class1.cs
  4. 169
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/CutDGX.csproj
  5. 10
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/CutDGX.csproj.user
  6. 622
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd.cs
  7. 176
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.Designer.cs
  8. 96
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.cs
  9. 120
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.resx
  10. 3
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/FodyWeavers.xml
  11. 176
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/FodyWeavers.xsd
  12. 156
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.Designer.cs
  13. 96
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.cs
  14. 120
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.resx
  15. 204
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/MainClass.cs
  16. 44
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Menu.cs
  17. 36
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/Properties/AssemblyInfo.cs
  18. 185
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCut.cs
  19. 111
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.Designer.cs
  20. 271
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.cs
  21. 120
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.resx
  22. 11
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/app.config
  23. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.dll
  24. 11
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.dll.config
  25. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.pdb
  26. 3
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing2.dwl
  27. 7
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing2.dwl2
  28. 3
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing3.dwl
  29. 7
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing3.dwl2
  30. 52362
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/NetTopologySuite.xml
  31. 173
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Buffers.xml
  32. 3489
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Memory.xml
  33. 3451
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Numerics.Vectors.xml
  34. 353
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml
  35. 36
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/acad.err
  36. 110
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.Designer.cs
  37. 1246
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.cs
  38. 120
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.resx
  39. 4
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/.NETFramework,Version=v4.5.2.AssemblyAttributes.cs
  40. 4
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
  41. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/028E9832F421F11F9497C610F1734E0F3D868037.costura.costura.dll.compressed.compressed
  42. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/5919B552E2C2DF33C9698503912F6D51D3E20980.costura.autodesk.autocad.interop.dll.compressed.compressed
  43. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/806F4C19B2D7FD9E3B836269EC07647019A29E95.costura.costura.pdb.compressed.compressed
  44. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/854B457BEEC353FD20BD195521FF03D7E7BB138C.costura.nettopologysuite.dll.compressed.compressed
  45. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed
  46. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed
  47. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed
  48. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed
  49. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.Dgxthrorvrd_Form.resources
  50. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.Form1.resources
  51. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.TKCuts.resources
  52. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.AssemblyReference.cache
  53. 0
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.CopyComplete
  54. 1
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.CoreCompileInputs.cache
  55. 20
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.FileListAbsolute.txt
  56. 5
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.Fody.CopyLocal.cache
  57. 0
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.Fody.RuntimeCopyLocal.cache
  58. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.GenerateResource.cache
  59. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.dll
  60. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.joinedge.resources
  61. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.pdb
  62. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  63. 二进制
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  64. 11
    0
      加密后软件工具/CAD插件工具/CutDGX/CutDGX/packages.config
  65. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/.signature.p7s
  66. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/Costura.Fody.6.0.0.nupkg
  67. 15
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/build/Costura.Fody.props
  68. 13
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/build/Costura.Fody.targets
  69. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/icon.png
  70. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.dll
  71. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.pdb
  72. 23
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.xml
  73. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netclassicweaver/Costura.Fody.dll
  74. 150
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netclassicweaver/Costura.Fody.xcf
  75. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netstandardweaver/Costura.Fody.dll
  76. 150
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netstandardweaver/Costura.Fody.xcf
  77. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/.signature.p7s
  78. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/Fody.6.9.2.nupkg
  79. 21
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/License.txt
  80. 149
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/build/Fody.targets
  81. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Fody.dll
  82. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyCommon.dll
  83. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyHelpers.dll
  84. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyIsolated.dll
  85. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Pdb.dll
  86. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Pdb.pdb
  87. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Rocks.dll
  88. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Rocks.pdb
  89. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.dll
  90. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.pdb
  91. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Fody.dll
  92. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyCommon.dll
  93. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyHelpers.dll
  94. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyIsolated.dll
  95. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Pdb.dll
  96. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Pdb.pdb
  97. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Rocks.dll
  98. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Rocks.pdb
  99. 二进制
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.dll
  100. 0
    0
      加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.pdb

二进制
加密后软件工具/CAD插件工具/CutDGX/.vs/CutDGX/v16/.suo 查看文件


+ 25
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX.sln 查看文件

@@ -0,0 +1,25 @@
1
+
2
+Microsoft Visual Studio Solution File, Format Version 12.00
3
+# Visual Studio Version 16
4
+VisualStudioVersion = 16.0.33130.400
5
+MinimumVisualStudioVersion = 10.0.40219.1
6
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CutDGX", "CutDGX\CutDGX.csproj", "{D2BCAF31-33BF-4DC1-A711-B545BA172963}"
7
+EndProject
8
+Global
9
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
10
+		Debug|Any CPU = Debug|Any CPU
11
+		Release|Any CPU = Release|Any CPU
12
+	EndGlobalSection
13
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
14
+		{D2BCAF31-33BF-4DC1-A711-B545BA172963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15
+		{D2BCAF31-33BF-4DC1-A711-B545BA172963}.Debug|Any CPU.Build.0 = Debug|Any CPU
16
+		{D2BCAF31-33BF-4DC1-A711-B545BA172963}.Release|Any CPU.ActiveCfg = Release|Any CPU
17
+		{D2BCAF31-33BF-4DC1-A711-B545BA172963}.Release|Any CPU.Build.0 = Release|Any CPU
18
+	EndGlobalSection
19
+	GlobalSection(SolutionProperties) = preSolution
20
+		HideSolutionNode = FALSE
21
+	EndGlobalSection
22
+	GlobalSection(ExtensibilityGlobals) = postSolution
23
+		SolutionGuid = {3113C30D-3FE6-4595-AD09-90490A9703FE}
24
+	EndGlobalSection
25
+EndGlobal

+ 969
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Class1.cs 查看文件

@@ -0,0 +1,969 @@
1
+using NetTopologySuite.Geometries;
2
+using Autodesk.AutoCAD.DatabaseServices;
3
+using NetTopologySuite.Operation.Buffer;
4
+using Autodesk.AutoCAD.EditorInput;
5
+using Autodesk.AutoCAD.Runtime;
6
+using System;
7
+using System.Collections.Generic;
8
+using System.Linq;
9
+using System.Text;
10
+using System.Threading.Tasks;
11
+using Autodesk.AutoCAD.Geometry;
12
+using NetTopologySuite.Index.Strtree;
13
+using Autodesk.AutoCAD.ApplicationServices;
14
+using Autodesk.AutoCAD.Colors;
15
+using NetTopologySuite.Operation.Polygonize;
16
+using System.IO;
17
+
18
+namespace CutDGX
19
+{
20
+    public class Class1
21
+    {
22
+        
23
+        public struct ContourData
24
+        {
25
+            public Polyline CadPolyline { get; set; }
26
+            public LineString NtsLine { get; set; }
27
+            public double Elevation { get; set; } // 高程值
28
+        }
29
+
30
+        public struct CutInfo
31
+        {
32
+            public List<Point3d> Pt { get; set; }
33
+            public Polyline CadPolyline { get; set; }
34
+        }
35
+
36
+        public class LineDistanceResult
37
+        {
38
+            public bool IsWithinDistance { get; set; }
39
+            public Geometry Intersection { get; set; }
40
+            public Geometry Buffer { get; set; }
41
+        }
42
+
43
+
44
+        public void CutDgx(string jqx,string sqx,double cj,double ignore)
45
+        {
46
+            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
47
+            Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
48
+            var contours = new List<Polyline>();
49
+            dynamic acadApp = Application.AcadApplication;
50
+            acadApp.ZoomExtents();
51
+            ed.Regen();
52
+            TypedValue[] typedvalue = new TypedValue[2];
53
+            typedvalue.SetValue(new TypedValue((int)DxfCode.LayerName, jqx), 0);
54
+            typedvalue.SetValue(new TypedValue((int)DxfCode.Start, "LWPolyline"), 1);
55
+            SelectionFilter selectionfilter = new SelectionFilter(typedvalue);
56
+            PromptSelectionResult psr = ed.SelectAll(selectionfilter);
57
+            if (psr.Status == PromptStatus.OK)
58
+            {
59
+                SelectionSet ss = psr.Value;
60
+                ObjectId[] obj = new ObjectId[ss.Count];
61
+                obj = ss.GetObjectIds();
62
+                for (int i = 0; i < obj.Length; i++)
63
+                {
64
+                    //获取计曲线
65
+                    using (Transaction tr = db.TransactionManager.StartTransaction())
66
+                    {
67
+                        Polyline pll = tr.GetObject(obj[i], OpenMode.ForRead) as Polyline;
68
+                        contours.Add(pll);
69
+                        tr.Commit();
70
+                    }
71
+                }
72
+                // 按高程排序
73
+                contours = contours.OrderBy(p => p.Elevation).ToList();
74
+                // 按高程分组
75
+                var groupedByEle = contours.GroupBy(p => p.Elevation);
76
+                List<List<Polyline>> pllist = new List<List<Polyline>>();
77
+                List<CutInfo> cutinfo = new List<CutInfo>();
78
+                foreach (var group in groupedByEle)
79
+                {
80
+                    List<Polyline> pls = new List<Polyline>();
81
+                    foreach (var pl in group)
82
+                    {
83
+                        pls.Add(pl);
84
+                    }
85
+                    pllist.Add(pls);
86
+                }
87
+                // 相邻高程的等高线进行距离对比
88
+                for (int i = 0; i < pllist.Count - 1; i++)
89
+                {
90
+                    List<Polyline> templist = pllist[i].Union(pllist[i + 1]).ToList();
91
+                    List<ContourData> dgxs = LoadContours(templist);
92
+                    var spatialIndex = new STRtree<ContourData>();
93
+                    foreach (var contour in dgxs)
94
+                    {
95
+                        spatialIndex.Insert(contour.NtsLine.EnvelopeInternal, contour);
96
+                    }
97
+                    spatialIndex.Build(); // 调用 Build 完成索引构建
98
+                    double ele = dgxs[0].Elevation;
99
+                    foreach(ContourData ct in dgxs)
100
+                    {
101
+                        if (ct.Elevation == ele)
102
+                        {
103
+                            //获取相邻等高线
104
+                            List<ContourData> neighb = FindNeighbors(ct, spatialIndex, cj);
105
+                            if (neighb.Count != 0&&neighb!=null)
106
+                            {
107
+                                foreach (ContourData neighbdgx in neighb)
108
+                                {
109
+                                    List<ObjectId> erase = new List<ObjectId>();
110
+                                    // 检查距离并获取交点
111
+                                    var result = CheckLineDistanceWithIntersection(ct.NtsLine, neighbdgx.NtsLine, cj);
112
+                                    if(result.Intersection != null && !result.Intersection.IsEmpty)
113
+                                    {
114
+                                        List<List<Line>> inter1 = GetItsInfo(db, result.Intersection, neighbdgx.CadPolyline, ct.CadPolyline,ignore);
115
+                                        //List<SortInfo> stinfo = SortLinrByPt(inter1, ct.CadPolyline, neighbdgx.CadPolyline);
116
+                                        List<int> cutnum = new List<int>();
117
+                                        if (inter1.Count != 0)
118
+                                        {
119
+                                            erase = Cut(inter1, db, ignore, sqx, jqx,ct.CadPolyline,neighbdgx.CadPolyline);
120
+                                        }
121
+                                    }
122
+
123
+                                    foreach (var item in erase)
124
+                                    {
125
+                                        DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
126
+                                        using (Transaction tr = db.TransactionManager.StartTransaction())
127
+                                        {
128
+                                            Polyline pll = tr.GetObject(item, OpenMode.ForWrite) as Polyline;
129
+                                            pll.Erase();
130
+                                            tr.Commit();
131
+                                        }
132
+                                        doclock.Dispose();
133
+                                    }
134
+                                }
135
+                            }
136
+                        }
137
+                    }
138
+                }
139
+
140
+            }
141
+        }
142
+
143
+        // 将 CAD 多段线转换为 NTS 的 LineString,并提取高程
144
+        private List<ContourData> LoadContours(List<Polyline> pllist)
145
+        {
146
+            List<ContourData> contours = new List<ContourData>();
147
+            foreach (Polyline pll in pllist)
148
+            {
149
+                double elevation = pll.Elevation;
150
+                // 转换为 NTS LineString
151
+                var vertices = new Coordinate[pll.NumberOfVertices];
152
+                for (int i = 0; i < pll.NumberOfVertices; i++)
153
+                {
154
+                    Point3d pt = pll.GetPoint3dAt(i);
155
+                    vertices[i] = new Coordinate(pt.X, pt.Y);
156
+                }
157
+                LineString ntsLine = new LineString(vertices);
158
+                contours.Add(new ContourData
159
+                {
160
+                    CadPolyline = pll,
161
+                    NtsLine = ntsLine,
162
+                    Elevation = elevation
163
+                });
164
+
165
+            }
166
+            return contours;
167
+        }
168
+
169
+
170
+        // 查询指定等高线的相邻等高线
171
+        private List<ContourData> FindNeighbors(ContourData target, STRtree<ContourData> spatialIndex,
172
+                                               double distanceThreshold)
173
+        {
174
+            // 扩展目标等高线的包围盒以覆盖搜索范围
175
+            Envelope searchEnv = target.NtsLine.EnvelopeInternal;
176
+            searchEnv.ExpandBy(distanceThreshold);
177
+
178
+            // 查询候选等高线
179
+            var candidates = spatialIndex.Query(searchEnv);
180
+
181
+            // 精确筛选
182
+            List<ContourData> neighbors = new List<ContourData>();
183
+            foreach (var candidate in candidates)
184
+            {
185
+                // 排除自身
186
+                if (candidate.CadPolyline.ObjectId == target.CadPolyline.ObjectId) 
187
+                    continue;
188
+                //排除相同高程
189
+                if (candidate.CadPolyline.Elevation == target.CadPolyline.Elevation)
190
+                    continue;
191
+                // 计算最小距离
192
+                double minDistance = target.NtsLine.Distance(candidate.NtsLine);
193
+                if (minDistance <= distanceThreshold)
194
+                {
195
+                    neighbors.Add(candidate);
196
+                }
197
+            }
198
+            return neighbors;
199
+        }
200
+
201
+        //裁剪等高线
202
+        private List<ObjectId> Cut(List<List<Line>> stinfo, Database db, double ignore, string sqx, string jqx,
203
+                                    Polyline pll_self,Polyline pll_neighb)
204
+        {
205
+            List<ObjectId> erase = new List<ObjectId>();//需要删除的等高线
206
+            List<CutInfo> cutline = new List<CutInfo>();//待裁剪区域的起点和终点
207
+            for (int i = 0; i < stinfo.Count; i++)
208
+            {
209
+                //cutline = SeleCut(i, stinfo, db, sqx, cutline, ignore, pll_self, pll_neighb);
210
+                Line cutline1 = stinfo[i][0];
211
+                Line cutline2 = stinfo[i][1];
212
+                CreatePolygon(pll_self, pll_neighb, cutline1, cutline2, sqx, cutline);
213
+            }
214
+            //按多段线分组
215
+            var groupedBypl = cutline.GroupBy(p => p.CadPolyline);
216
+            foreach (var group in groupedBypl)
217
+            {
218
+                Polyline pll = group.Key;
219
+                List<Point3d> pt_list = new List<Point3d>();
220
+                //将待裁剪区域按离起点距离排序
221
+                group.OrderBy(p => pll.GetParameterAtPoint(p.Pt[0]));
222
+                foreach (var ctinfo in group)
223
+                {
224
+                    if (ctinfo.Pt.Count == 2)
225
+                    {
226
+                        if (!pt_list.Contains(ctinfo.Pt[0]))
227
+                            pt_list.Add(ctinfo.Pt[0]);
228
+                        if (!pt_list.Contains(ctinfo.Pt[1]))
229
+                            pt_list.Add(ctinfo.Pt[1]);
230
+                    }
231
+                }
232
+                if (pt_list.Count == 0)
233
+                    continue;
234
+                var pt_list_sort= pt_list.OrderBy(p => pll.GetParameterAtPoint(p));
235
+                var ptcoll = new Point3dCollection(pt_list_sort.ToArray());
236
+
237
+                Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
238
+                Extents3d extents3D = pll.GeometricExtents;
239
+                ZoomView(ed, extents3D.MinPoint, extents3D.MaxPoint);
240
+                DBObjectCollection dbobjcoll = pll.GetSplitCurves(ptcoll);
241
+                for (int i = 0; i < dbobjcoll.Count; i++)
242
+                {
243
+                    DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
244
+                    using (Transaction tr = db.TransactionManager.StartTransaction())
245
+                    {
246
+                        BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
247
+                        BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
248
+
249
+                        LayerTable lt = tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
250
+                        if (!lt.Has("裁剪部分"))
251
+                        {
252
+                            LayerTableRecord layertablerecord = new LayerTableRecord();
253
+                            layertablerecord.Name = "裁剪部分";
254
+                            layertablerecord.Color = Color.FromRgb(255, 0, 0);
255
+                            lt.Add(layertablerecord);
256
+                            tr.AddNewlyCreatedDBObject(layertablerecord, true);
257
+                        }
258
+
259
+                        Polyline pl = (Polyline)dbobjcoll[i];
260
+
261
+                        bool save = true;
262
+                        foreach (var ctinfo in group)
263
+                        {
264
+                            if ((ctinfo.Pt.Contains(pl.StartPoint) && ctinfo.Pt.Contains(pl.EndPoint))||
265
+                                pl.Length <= ignore)
266
+                            {
267
+                                save = false;
268
+                                pl.Layer = "裁剪部分";
269
+                                pl.Color = Color.FromColorIndex(ColorMethod.ByLayer, 256);
270
+                                btr.AppendEntity(pl);
271
+                                tr.AddNewlyCreatedDBObject(pl, true);
272
+                                break;
273
+                            }
274
+                        }
275
+                        if (save)
276
+                        {
277
+                            btr.AppendEntity(pl);
278
+                            tr.AddNewlyCreatedDBObject(pl, true);
279
+                        }
280
+                        if (!erase.Contains(pll.ObjectId))
281
+                            erase.Add(pll.ObjectId);
282
+                        tr.Commit();
283
+                    }
284
+                    doclock.Dispose();
285
+                }
286
+            }
287
+
288
+            return erase;
289
+        }
290
+
291
+        //private List<CutInfo> SeleCut(int cutnum, List<List<Line>> stinfo, Database db, string sqx, List<CutInfo> cutline,
292
+        //                               double ignore, Polyline pll_self, Polyline pll_neighb)
293
+        //{
294
+        //    Line cutline1 = stinfo[cutnum][0];
295
+        //    Line cutline2 = stinfo[cutnum][1];
296
+        //    //Point3d pt1 = new Point3d(cutline1.EndPoint.X, cutline1.EndPoint.Y, 0);
297
+        //    //Point3d pt2 = new Point3d(cutline1.StartPoint.X, cutline1.StartPoint.Y, 0);
298
+        //    //Point3d pt3 = new Point3d(cutline2.EndPoint.X, cutline2.EndPoint.Y, 0);
299
+        //    //Point3d pt4 = new Point3d(cutline2.StartPoint.X, cutline2.StartPoint.Y, 0);
300
+        //    //Vector3d bisectorDir = pt1 - pt2;
301
+        //    //Vector3d bisectorDir1 = pt3 - pt4;
302
+        //    //pt1 = cutline1.StartPoint - bisectorDir.GetNormal() * 0.00002;
303
+        //    //pt2 = cutline1.EndPoint + bisectorDir.GetNormal() * 0.00002;
304
+        //    //Point3dCollection ptcoll1 = new Point3dCollection(new Point3d[] { pt1, pt2 });
305
+        //    //pt3 = cutline2.StartPoint - bisectorDir1.GetNormal() * 0.00002;
306
+        //    //pt4 = cutline2.EndPoint + bisectorDir1.GetNormal() * 0.00002;
307
+        //    //Point3dCollection ptcoll2 = new Point3dCollection(new Point3d[] { pt3, pt4 });
308
+
309
+        //    //Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
310
+        //    //TypedValue[] typedvalue = new TypedValue[2];
311
+        //    //typedvalue.SetValue(new TypedValue((int)DxfCode.LayerName, sqx), 0);
312
+        //    //typedvalue.SetValue(new TypedValue((int)DxfCode.Start, "LWPolyline"), 1);
313
+        //    //SelectionFilter selectionfilter = new SelectionFilter(typedvalue);
314
+        //    //Extents3d extents3D1 = cutline2.GeometricExtents;
315
+        //    //ZoomView(ed, extents3D1.MinPoint, extents3D1.MaxPoint);
316
+        //    //PromptSelectionResult psr2 = ed.SelectFence(ptcoll2, selectionfilter);
317
+
318
+        //    //Extents3d extents3D = cutline1.GeometricExtents;
319
+        //    //ZoomView(ed, extents3D.MinPoint, extents3D.MaxPoint);
320
+        //    //PromptSelectionResult psr1 = ed.SelectFence(ptcoll1, selectionfilter);
321
+        //    //if (psr1.Status == PromptStatus.OK || psr2.Status == PromptStatus.OK)
322
+        //    //{
323
+        //    //List<ObjectId> objids = new List<ObjectId>();
324
+        //    //if (psr1.Status == PromptStatus.OK)
325
+        //    //{
326
+        //    //    SelectionSet ss1 = psr1.Value;
327
+        //    //    ObjectId[] obj1 = new ObjectId[ss1.Count];
328
+        //    //    obj1 = ss1.GetObjectIds();
329
+        //    //    objids.AddRange(obj1.ToList());
330
+        //    //}
331
+
332
+        //    //if (psr2.Status == PromptStatus.OK)
333
+        //    //{
334
+        //    //    SelectionSet ss2 = psr2.Value;
335
+        //    //    foreach (var item in ss2.GetObjectIds().ToList())
336
+        //    //    {
337
+        //    //        if (!objids.Contains(item))
338
+        //    //            objids.Add(item);
339
+        //    //    }
340
+        //    //}
341
+
342
+        //    CreatePolygon(pll_self, pll_neighb, cutline1, cutline2, sqx, cutline);
343
+        //        //foreach (var item in objids)
344
+        //        //{
345
+        //        //    DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
346
+        //        //    using (Transaction tr = db.TransactionManager.StartTransaction())
347
+        //        //    {
348
+        //        //        List<Point3d> ptcoll = new List<Point3d>();
349
+        //        //        Polyline dgx = tr.GetObject(item, OpenMode.ForWrite) as Polyline;
350
+        //        //        List<Point3d> interpt2 = GetIntersections(dgx, cutline2);
351
+        //        //        List<Point3d> interpt1 = GetIntersections(dgx, cutline1);
352
+        //        //        if (interpt1.Count != 0)
353
+        //        //            ptcoll.Add(interpt1[0]);
354
+        //        //        if (interpt2.Count != 0)
355
+        //        //            ptcoll.Add(interpt2[0]);
356
+        //        //        if (ptcoll.Count > 1)
357
+        //        //        {
358
+        //        //            var dist1 = dgx.GetDistAtPoint(interpt1[0]);
359
+        //        //            var dist2 = dgx.GetDistAtPoint(interpt2[0]);
360
+        //        //            if (Math.Abs(dist2 - dist1) <= ignore)
361
+        //        //                continue;
362
+        //        //            else
363
+        //        //            {
364
+        //        //                foreach (var polygon in polygons)
365
+        //        //                {
366
+
367
+        //        //                    GetLineInsidePolygon(polygon, dgx, cutline);
368
+        //        //                }
369
+        //        //            }
370
+        //        //        }
371
+        //        //        else
372
+        //        //        {
373
+        //        //            foreach (var polygon in polygons)
374
+        //        //            {
375
+
376
+        //        //                GetLineInsidePolygon(polygon, dgx, cutline);
377
+        //        //            }
378
+        //        //        }
379
+        //        //        tr.Commit();
380
+        //        //    }
381
+        //        //    doclock.Dispose();
382
+        //        //}
383
+
384
+        //    //}
385
+
386
+        //    return cutline;
387
+        //}
388
+
389
+        /// <summary>
390
+        /// 根据待裁剪区域的首尾线确定待裁剪范围并创建多边形面进行相交检查
391
+        /// </summary>
392
+        private List<Polygon> CreatePolygon(Polyline pl1,Polyline pl2,Line cutline1,Line cutline2,string sqx, List<CutInfo> cutline)
393
+        {
394
+            List<Polygon> polygonlist = new List<Polygon>();
395
+
396
+            //获取裁剪范围
397
+            double param1, param2, param3, param4;
398
+            DBObjectCollection splitCurves1;
399
+            DBObjectCollection splitCurves2;
400
+            Polyline pl_split1;
401
+            Polyline pl_split2;
402
+            //通过高程判断范围线的起点是否在等高线上
403
+            if (pl1.Elevation == cutline1.StartPoint.Z)
404
+            {
405
+                // 获取范围线和等高线的交点距等高线起点的距离
406
+                param1 = pl1.GetParameterAtPoint(cutline1.StartPoint);
407
+                param2 = pl1.GetParameterAtPoint(cutline2.StartPoint);
408
+                if (param1 > param2)
409
+                {
410
+                    (param1, param2) = (param2, param1);
411
+                }
412
+                //得到待裁剪区域
413
+                splitCurves1 = pl1.GetSplitCurves(new DoubleCollection { param1, param2 });
414
+                if (param1 == 0)
415
+                    pl_split1 = splitCurves1[0] as Polyline;
416
+                else if (param2 == pl1.EndParam)
417
+                    pl_split1 = splitCurves1[splitCurves1.Count - 1] as Polyline;
418
+                else
419
+                    pl_split1 = splitCurves1[1] as Polyline;
420
+                param3 = pl2.GetParameterAtPoint(cutline1.EndPoint);
421
+                param4 = pl2.GetParameterAtPoint(cutline2.EndPoint);
422
+                if (param3 > param4)
423
+                {
424
+                    (param3, param4) = (param4, param3);
425
+                }
426
+                splitCurves2 = pl2.GetSplitCurves(new DoubleCollection { param3, param4 });
427
+                if (param3 == 0)
428
+                    pl_split2 = splitCurves2[0] as Polyline;
429
+                else if (param4 == pl2.EndParam)
430
+                    pl_split2 = splitCurves2[splitCurves2.Count - 1] as Polyline;
431
+                else
432
+                    pl_split2 = splitCurves2[1] as Polyline;
433
+            }
434
+            else
435
+            {
436
+                param1 = pl2.GetParameterAtPoint(cutline1.StartPoint);
437
+                param2 = pl2.GetParameterAtPoint(cutline2.StartPoint);
438
+                if (param1 > param2)
439
+                {
440
+                    (param1, param2) = (param2, param1);
441
+                }
442
+                splitCurves1 = pl2.GetSplitCurves(new DoubleCollection { param1, param2 });
443
+                if (param1 == 0)
444
+                    pl_split1 = splitCurves1[0] as Polyline;
445
+                else if (param2 == pl1.EndParam)
446
+                    pl_split1 = splitCurves1[splitCurves1.Count - 1] as Polyline;
447
+                else
448
+                    pl_split1 = splitCurves1[1] as Polyline;
449
+                param3 = pl1.GetParameterAtPoint(cutline1.EndPoint);
450
+                param4 = pl1.GetParameterAtPoint(cutline2.EndPoint);
451
+                if (param3 > param4)
452
+                {
453
+                    (param3, param4) = (param4, param3);
454
+                }
455
+                splitCurves2 = pl1.GetSplitCurves(new DoubleCollection { param3, param4 });
456
+                if (param3 == 0)
457
+                    pl_split2 = splitCurves2[0] as Polyline;
458
+                else if (param4 == pl2.EndParam)
459
+                    pl_split2 = splitCurves2[splitCurves2.Count - 1] as Polyline;
460
+                else
461
+                    pl_split2 = splitCurves2[1] as Polyline;
462
+            }
463
+            //判断两线的首尾点距彼此的距离,以便之后进行裁剪区域的节点收集排序
464
+            var pl1_2start = pl_split1.StartPoint.DistanceTo(pl_split2.StartPoint);
465
+            var pl1_2end = pl_split1.StartPoint.DistanceTo(pl_split2.EndPoint);
466
+            //检查裁剪区域等高线是否相交
467
+            List<Point3d> splitplinterse = GetIntersections(pl_split1, pl_split2);
468
+            Point3dCollection splitpts = new Point3dCollection();
469
+            //获取交点
470
+            foreach (var item in splitplinterse)
471
+            {
472
+                splitpts.Add(item);
473
+            }
474
+            //如果等高线有相交,则每个区域需要单独计算
475
+            if (splitplinterse.Count > 0)
476
+            {
477
+                var pl_split1s = pl_split1.GetSplitCurves(splitpts);
478
+                var pl_split2s = pl_split2.GetSplitCurves(splitpts);
479
+
480
+                for (int j = 0; j < pl_split1s.Count; j++)
481
+                {
482
+                    Polyline pl_temp1 = pl_split1s[j] as Polyline;
483
+                    Polyline pl_temp2 = pl_split2s[j] as Polyline;
484
+                    //获取两等高线在阈值内的节点并创建一个面用于相交
485
+                    var vertices = new Coordinate[pl_temp1.NumberOfVertices + pl_temp2.NumberOfVertices];
486
+                    Point3dCollection plspts = new Point3dCollection();
487
+                    for (int i = 0; i < pl_temp1.NumberOfVertices; i++)
488
+                    {
489
+                        Point3d pt = pl_temp1.GetPoint3dAt(i);
490
+                        vertices[i] = new Coordinate(pt.X, pt.Y);
491
+                        plspts.Add(pt);
492
+                    }
493
+                    if (pl1_2start > pl1_2end)
494
+                    {
495
+                        for (int i = 1; i < pl_temp2.NumberOfVertices; i++)
496
+                        {
497
+                            Point3d pt = pl_temp2.GetPoint3dAt(i);
498
+                            vertices[i + pl_temp1.NumberOfVertices] = new Coordinate(pt.X, pt.Y);
499
+                            plspts.Add(pt);
500
+                        }
501
+                    }
502
+                    else
503
+                    {
504
+                        int l = 0;
505
+                        for (int i = pl_temp2.NumberOfVertices - 2; i >= 0; i--)
506
+                        {
507
+                            Point3d pt = pl_temp2.GetPoint3dAt(i);
508
+                            vertices[l + pl_temp1.NumberOfVertices] = new Coordinate(pt.X, pt.Y);
509
+                            l++;
510
+                            plspts.Add(pt);
511
+                        }
512
+                    }
513
+
514
+                    vertices[pl_temp1.NumberOfVertices + pl_temp2.NumberOfVertices - 1] = new Coordinate(pl_temp1.StartPoint.X, pl_temp1.StartPoint.Y);
515
+                    plspts.Add(pl_temp1.StartPoint);
516
+                    LineString ntsLine = new LineString(vertices);
517
+                    var geometryFactory = new GeometryFactory();
518
+                    var polygon = geometryFactory.CreatePolygon(ntsLine.Coordinates);
519
+                    polygonlist.Add(polygon);
520
+
521
+                    var env = polygon.Envelope;
522
+                    var pt1 = new Point3d(env.Coordinates.Min().X, env.Coordinates.Min().Y, 0);
523
+                    var pt2 = new Point3d(env.Coordinates.Max().X, env.Coordinates.Max().Y, 0);
524
+                    DeleCrossingJqx(polygon, pt1, pt2, sqx, plspts, cutline);
525
+                }
526
+            }
527
+
528
+            else
529
+            {
530
+                //获取两等高线在阈值内的节点并创建一个面用于相交
531
+                var vertices = new Coordinate[pl_split1.NumberOfVertices + pl_split2.NumberOfVertices + 1];
532
+                Point3dCollection plspts = new Point3dCollection();
533
+                for (int i = 0; i < pl_split1.NumberOfVertices; i++)
534
+                {
535
+                    Point3d pt = pl_split1.GetPoint3dAt(i);
536
+                    vertices[i] = new Coordinate(pt.X, pt.Y);
537
+                    plspts.Add(pt);
538
+                }
539
+                if (pl1_2start > pl1_2end)
540
+                {
541
+                    for (int i = 0; i < pl_split2.NumberOfVertices; i++)
542
+                    {
543
+                        Point3d pt = pl_split2.GetPoint3dAt(i);
544
+                        vertices[i + pl_split1.NumberOfVertices] = new Coordinate(pt.X, pt.Y);
545
+                        plspts.Add(pt);
546
+                    }
547
+                }
548
+                else
549
+                {
550
+                    int j = 0;
551
+                    for (int i = pl_split2.NumberOfVertices - 1; i >= 0; i--)
552
+                    {
553
+                        Point3d pt = pl_split2.GetPoint3dAt(i);
554
+                        vertices[j + pl_split1.NumberOfVertices] = new Coordinate(pt.X, pt.Y);
555
+                        j++;
556
+                        plspts.Add(pt);
557
+                    }
558
+                }
559
+
560
+                vertices[pl_split1.NumberOfVertices + pl_split2.NumberOfVertices] = new Coordinate(pl_split1.StartPoint.X, pl_split1.StartPoint.Y);
561
+                LineString ntsLine = new LineString(vertices);
562
+                var geometryFactory = new GeometryFactory();
563
+                var polygon = geometryFactory.CreatePolygon(ntsLine.Coordinates);
564
+                polygonlist.Add(polygon);
565
+
566
+                var env = polygon.Envelope;
567
+                var pt1 = new Point3d(env.Coordinates.Min().X, env.Coordinates.Min().Y, 0);
568
+                var pt2 = new Point3d(env.Coordinates.Max().X, env.Coordinates.Max().Y, 0);
569
+                DeleCrossingJqx(polygon, pt1, pt2, sqx, plspts, cutline);
570
+            }
571
+            return polygonlist;
572
+        }
573
+
574
+        /// <summary>
575
+        /// 将等高线与待裁剪区域相交的部分打断,归入“裁剪部分”图层
576
+        /// </summary>
577
+        private void DeleCrossingJqx(Polygon polygon,Point3d selept1,Point3d selept2,string sqx, 
578
+                                     Point3dCollection searchfw, List<CutInfo> cutline)
579
+        {
580
+            CutInfo ctinfo = new CutInfo();//裁剪区域信息
581
+            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
582
+            TypedValue[] typedvalue = new TypedValue[2];
583
+            typedvalue.SetValue(new TypedValue((int)DxfCode.LayerName, sqx), 0);
584
+            typedvalue.SetValue(new TypedValue((int)DxfCode.Start, "LWPolyline"), 1);
585
+            SelectionFilter selectionfilter = new SelectionFilter(typedvalue);
586
+            ZoomView(ed, selept1, selept2);
587
+            //搜索与待裁剪区域相交的首曲线
588
+            PromptSelectionResult psr = ed.SelectCrossingPolygon(searchfw, selectionfilter);
589
+            if (psr.Status == PromptStatus.OK)
590
+            {
591
+                Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
592
+                var objids = new List<ObjectId>();
593
+                SelectionSet ss1 = psr.Value;
594
+                objids.AddRange(ss1.GetObjectIds().ToList());
595
+
596
+                foreach (var item in objids)
597
+                {
598
+                    DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
599
+                    using (Transaction tr = doc.Database.TransactionManager.StartTransaction())
600
+                    {
601
+                        Polyline pl_interse = tr.GetObject(item, OpenMode.ForWrite) as Polyline;
602
+                        //将Polyline转换为LineString以便之后进行相交判断获取等高线位于区域内部分
603
+                        var vertices_interse = new Coordinate[pl_interse.NumberOfVertices];
604
+                        for (int i = 0; i < pl_interse.NumberOfVertices; i++)
605
+                        {
606
+                            Point3d pt = pl_interse.GetPoint3dAt(i);
607
+                            vertices_interse[i] = new Coordinate(pt.X, pt.Y);
608
+                        }
609
+                        LineString interse_ntsLine = new LineString(vertices_interse);
610
+                        if (interse_ntsLine.Intersection(polygon).IsEmpty)
611
+                            continue;
612
+                        if (interse_ntsLine.Intersection(polygon) is LineString lString)
613
+                        {
614
+                            var splitpt1 = new Point3d(lString.StartPoint.X, lString.StartPoint.Y, pl_interse.StartPoint.Z);
615
+                            var splitpt2 = new Point3d(lString.EndPoint.X, lString.EndPoint.Y, pl_interse.StartPoint.Z);
616
+                            var split_pts = new List<Point3d>();
617
+                            split_pts.Add(splitpt1);
618
+                            split_pts.Add(splitpt2);
619
+                            ctinfo.CadPolyline = pl_interse;
620
+                            ctinfo.Pt = split_pts;
621
+
622
+                            if (!cutline.Any(p => p.Pt.Contains(split_pts[0]) && p.Pt.Contains(split_pts[1]) &&
623
+                                            p.CadPolyline == pl_interse))
624
+                                cutline.Add(ctinfo);
625
+                        }
626
+                        else if (interse_ntsLine.Intersection(polygon) is MultiLineString multiLine)
627
+                        {
628
+                            for (int i = 0; i < multiLine.NumGeometries; i++)
629
+                            {
630
+                                var ls = (LineString)multiLine.GetGeometryN(i);
631
+                                var splitpt1 = new Point3d(ls.StartPoint.X, ls.StartPoint.Y, pl_interse.StartPoint.Z);
632
+                                var splitpt2 = new Point3d(ls.EndPoint.X, ls.EndPoint.Y, pl_interse.StartPoint.Z);
633
+                                var split_pts = new List<Point3d>();
634
+                                split_pts.Add(splitpt1);
635
+                                split_pts.Add(splitpt2);
636
+                                ctinfo.CadPolyline = pl_interse;
637
+                                ctinfo.Pt = split_pts;
638
+                                if (!cutline.Any(p => p.Pt.Contains(split_pts[0]) && p.Pt.Contains(split_pts[1]) &&
639
+                                                p.CadPolyline == pl_interse))
640
+                                    cutline.Add(ctinfo);
641
+                            }
642
+                        }
643
+                        tr.Commit();
644
+                    }
645
+                    doclock.Dispose();
646
+                }
647
+            }
648
+        }
649
+
650
+        //private void GetLineInsidePolygon(Polygon polygon, Polyline dgx, List<CutInfo> cutline)
651
+        //{
652
+        //    CutInfo ctinfo = new CutInfo();
653
+        //    //将等高线转换为nts的linestring
654
+        //    var vertices_dgx = new Coordinate[dgx.NumberOfVertices];
655
+        //    for (int i = 0; i < dgx.NumberOfVertices; i++)
656
+        //    {
657
+        //        Point3d pt = dgx.GetPoint3dAt(i);
658
+        //        vertices_dgx[i] = new Coordinate(pt.X, pt.Y);
659
+        //    }
660
+        //    LineString dgx_ntsLine = new LineString(vertices_dgx);
661
+        //    var clippedLine = dgx_ntsLine.Intersection(polygon);
662
+
663
+        //    if (clippedLine.IsEmpty)
664
+        //        return;
665
+        //    if (clippedLine is LineString lineString)
666
+        //    {
667
+        //        var pl = ConvertLinestring2Pl(lineString, dgx);
668
+        //        var split_pts = new List<Point3d>();
669
+        //        split_pts.Add(pl.StartPoint);
670
+        //        split_pts.Add(pl.EndPoint);
671
+        //        ctinfo.CadPolyline = dgx;
672
+        //        ctinfo.Pt = split_pts;
673
+        //        if (!cutline.Any(p => p.Pt.Contains(split_pts[0]) && p.Pt.Contains(split_pts[1]) &&
674
+        //                         p.CadPolyline == dgx))
675
+        //            cutline.Add(ctinfo);
676
+        //        //DBObjectCollection objcol = dgx.GetSplitCurves(split_pts);
677
+        //        //for (int j = 0; j < objcol.Count; j++)
678
+        //        //{
679
+        //        //    Polyline pll_split = objcol[j] as Polyline;
680
+        //        //    if (j == 1)
681
+        //        //    {
682
+        //        //        pll_split.Layer = "裁剪部分";
683
+        //        //        btr.AppendEntity(pll_split);
684
+        //        //        tr.AddNewlyCreatedDBObject(pll_split, true);
685
+        //        //    }
686
+        //        //    else
687
+        //        //    {
688
+        //        //        btr.AppendEntity(pll_split);
689
+        //        //        tr.AddNewlyCreatedDBObject(pll_split, true);
690
+        //        //    }
691
+        //        //}
692
+        //        //var pl = ConvertLinestring2Pl(lineString, dgx);
693
+        //        //pl.Layer = "裁剪部分";
694
+        //        //btr.AppendEntity(pl);
695
+        //        //tr.AddNewlyCreatedDBObject(pl, true);
696
+        //        //dgx.Erase();
697
+        //    }
698
+        //    else if (clippedLine is MultiLineString multiLine)
699
+        //    {
700
+        //        for (int i = 0; i < multiLine.NumGeometries; i++)
701
+        //        {
702
+        //            var pl = ConvertLinestring2Pl((LineString)multiLine.GetGeometryN(i), dgx);
703
+        //            var split_pts = new List<Point3d>();
704
+        //            split_pts.Add(pl.StartPoint);
705
+        //            split_pts.Add(pl.EndPoint);
706
+        //            ctinfo.CadPolyline = dgx;
707
+        //            ctinfo.Pt = split_pts;
708
+        //            if (!cutline.Any(p => p.Pt.Contains(split_pts[0]) && p.Pt.Contains(split_pts[1]) &&
709
+        //                p.CadPolyline == dgx))
710
+        //                cutline.Add(ctinfo);
711
+        //        }
712
+
713
+        //    }
714
+        //}
715
+
716
+        //private Polyline ConvertLinestring2Pl(LineString ntsline,Polyline pl)
717
+        //{
718
+        //    Polyline newpl = new Polyline();
719
+        //    for (int i = 0; i < ntsline.Coordinates.Length; i++)
720
+        //    {
721
+        //        var coord = ntsline.Coordinates[i];
722
+        //        newpl.AddVertexAt(i, new Point2d(coord.X, coord.Y), 0, 0, 0);
723
+        //    }
724
+        //    newpl.Layer = pl.Layer;
725
+        //    newpl.Color = pl.Color;
726
+        //    newpl.Elevation = pl.Elevation;
727
+        //    newpl.Linetype = pl.Linetype;
728
+        //    newpl.Plinegen = pl.Plinegen;
729
+        //    newpl.ConstantWidth = pl.ConstantWidth;
730
+        //    return newpl;
731
+        //}
732
+
733
+        /// <summary>
734
+        /// 检查是否需要裁剪
735
+        /// </summary>
736
+        private static LineDistanceResult CheckLineDistanceWithIntersection(Geometry line1, Geometry line2, double threshold)
737
+        {
738
+            // 1. 创建第一条线的缓冲区
739
+            Geometry buffer = line1.Buffer(threshold);
740
+
741
+            // 2. 检查第二条线是否与缓冲区相交
742
+            bool intersects = buffer.Intersects(line2);
743
+
744
+            // 3. 获取交点
745
+            Geometry intersection = intersects ? line2.Intersection(buffer) : null;
746
+
747
+            return new LineDistanceResult
748
+            {
749
+                IsWithinDistance = intersects,
750
+                Intersection = intersection,
751
+                Buffer = buffer
752
+            };
753
+        }
754
+
755
+        /// <summary>
756
+        /// 获取待裁剪部分范围
757
+        /// </summary>
758
+        private List<List<Line>> GetItsInfo(Database db, Geometry intersection, Polyline pll_self, Polyline pll_neighb, double ignore)
759
+        {
760
+            List<List<Line>> result = new List<List<Line>>();//相交信息
761
+
762
+            var pts = new List<List<Point3d>>();//待裁剪范围的节点
763
+            if (intersection is MultiLineString multiLine)
764
+            {
765
+                for (int i = 0;i<multiLine.NumGeometries;i++)
766
+                {
767
+                    LineString ls = multiLine.GetGeometryN(i) as LineString;
768
+                    Point3d pt1 = new Point3d();
769
+                    Point3d pt2 = new Point3d();
770
+                    if (ls.Length <= ignore)
771
+                        continue;
772
+                    //判断两个待裁剪范围在等高线上的距离,如果小于可忽略值,则将两处合并
773
+                    bool ifignore = false;
774
+                    if (i <= multiLine.NumGeometries - 2)
775
+                    {
776
+                        LineString ls2 = multiLine.GetGeometryN(i + 1) as LineString;
777
+                        pt1 = new Point3d(ls.EndPoint.X, ls.EndPoint.Y, pll_self.Elevation);
778
+                        pt2 = new Point3d(ls2.StartPoint.X, ls2.StartPoint.Y, pll_self.Elevation);
779
+                        var dist = Math.Abs(pll_self.GetDistAtPoint(pt1) - pll_self.GetDistAtPoint(pt2));
780
+                        if (dist <= ignore)
781
+                            ifignore = true;
782
+                    }
783
+                    var temp = new List<Point3d>();
784
+                    Point3d pt = new Point3d(ls.StartPoint.X, ls.StartPoint.Y, pll_self.Elevation);
785
+                    temp.Add(pt);
786
+                    if (!ifignore)
787
+                        temp.Add(new Point3d(ls.EndPoint.X, ls.EndPoint.Y, pll_self.Elevation));
788
+                    else
789
+                        temp.Add(pt2);
790
+                    pts.Add(temp);
791
+
792
+                }
793
+            }
794
+            else if (intersection is LineString singleLine)
795
+            {
796
+                if (singleLine.Length <= ignore)
797
+                    return result;
798
+                var temp = new List<Point3d>();
799
+                Point3d pt = new Point3d(singleLine.StartPoint.X, singleLine.StartPoint.Y, pll_self.Elevation);
800
+                temp.Add(pt);
801
+                pt = new Point3d(singleLine.EndPoint.X, singleLine.EndPoint.Y, pll_self.Elevation);
802
+                temp.Add(pt);
803
+                pts.Add(temp);
804
+            }
805
+            foreach (var points in pts)
806
+            {
807
+                var temp_lines = new List<Line>();
808
+                List<Point3d> templist = new List<Point3d>();
809
+                foreach (var point in points)
810
+                {
811
+                    DocumentLock doclock = Application.DocumentManager.MdiActiveDocument.LockDocument();
812
+                    using (Transaction trans = db.TransactionManager.StartTransaction())
813
+                    {
814
+                        BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
815
+                        BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
816
+
817
+                        Point3d pt_self = point;
818
+                        //获取缓冲区与相邻等高线的交点与等高线上最近点作为裁剪范围的点
819
+                        Point3d pt_neighb = pll_neighb.GetClosestPointTo(point, false);
820
+                        templist.Add(pt_neighb);
821
+                        var self_dist = pll_self.GetDistAtPoint(point);
822
+                        var neighb_dist = pll_neighb.GetDistAtPoint(pt_neighb);
823
+                        if (self_dist <= ignore)
824
+                            pt_self = pll_self.StartPoint;
825
+                        else if (pll_self.Length - self_dist <= ignore)
826
+                            pt_self = pll_self.EndPoint;
827
+                        if (neighb_dist <= ignore)
828
+                            pt_neighb = pll_neighb.StartPoint;
829
+                        else if (pll_neighb.Length - neighb_dist <= ignore)
830
+                            pt_neighb = pll_neighb.EndPoint;
831
+                        
832
+                        Line line = new Line(pt_self, pt_neighb);
833
+                        var self_interse = GetIntersections(pll_self,line);
834
+                        var neighb_interse = GetIntersections(pll_neighb,line);
835
+                        if (self_interse.Count > 1)
836
+                        {
837
+                            double distance = double.MinValue;
838
+                            foreach (var item in self_interse)
839
+                            {
840
+                                var pt_dist = line.GetDistAtPoint(line.GetClosestPointTo(item,false));
841
+                                if (pt_dist > distance)
842
+                                {
843
+                                    line.StartPoint = item;
844
+                                    distance = pt_dist;
845
+                                }
846
+                            }
847
+                        }
848
+                        if (neighb_interse.Count > 1)
849
+                        {
850
+                            double distance = double.MaxValue;
851
+                            foreach (var item in neighb_interse)
852
+                            {
853
+                                var pt_dist = line.GetDistAtPoint(line.GetClosestPointTo(item, false));
854
+                                if (pt_dist < distance)
855
+                                {
856
+                                    line.EndPoint = item;
857
+                                    distance = pt_dist;
858
+                                }
859
+                            }
860
+                        }
861
+
862
+                        //btr.AppendEntity(line);
863
+                        //trans.AddNewlyCreatedDBObject(line, true);
864
+                        temp_lines.Add(line);
865
+                        trans.Commit();
866
+                    }
867
+                    doclock.Dispose();
868
+                }
869
+                var dist = Math.Abs(pll_neighb.GetDistAtPoint(templist[0])- pll_neighb.GetDistAtPoint(templist[1]));
870
+                if (dist > ignore)
871
+                    result.Add(temp_lines);
872
+                else
873
+                    continue;
874
+            }
875
+            return result;
876
+        }
877
+
878
+        /// <summary>
879
+        /// 缩放视图以便搜索
880
+        /// </summary>
881
+        private void ZoomView(Editor edit, Point3d pt1, Point3d pt2)
882
+        {
883
+            var x_min = Math.Min(pt1.X, pt2.X);
884
+            var y_min = Math.Min(pt1.Y, pt2.Y);
885
+            using (ViewTableRecord currview1 = edit.GetCurrentView())
886
+            {
887
+                currview1.CenterPoint = new Point2d(Math.Abs((pt2.X - pt1.X) / 2) + x_min,
888
+                                                    Math.Abs((pt2.Y - pt1.Y) / 2) + y_min);
889
+                currview1.Width = Math.Abs(pt2.X - pt1.X + 1);
890
+                currview1.Height = Math.Abs(pt2.Y - pt1.Y+1);
891
+                edit.SetCurrentView(currview1);
892
+            }
893
+        }
894
+
895
+        /// <summary>
896
+        /// 为保证精度,将待获取相交情况的线移到原点处再进行相交检查
897
+        /// </summary>
898
+        private List<Point3d> GetIntersections(Polyline pll, Line line)
899
+        {
900
+            List<Point3d> result = new List<Point3d>();
901
+
902
+            // 创建临时副本
903
+            Polyline tempLine1 = (Polyline)pll.Clone();
904
+            Line tempLine2 = (Line)line.Clone();
905
+
906
+            // 计算平移向量(以线1起点为基准,移动至原点)
907
+            Vector3d translation = -tempLine1.StartPoint.GetAsVector();
908
+            Matrix3d translateMatrix = Matrix3d.Displacement(translation);
909
+
910
+            // 应用平移变换
911
+            tempLine1.TransformBy(translateMatrix);
912
+            tempLine2.TransformBy(translateMatrix);
913
+
914
+            Point3dCollection translatedPoints = new Point3dCollection();
915
+            var plane = new Plane(Point3d.Origin, Vector3d.ZAxis);
916
+            tempLine1.IntersectWith(tempLine2, Intersect.OnBothOperands,plane, translatedPoints, IntPtr.Zero, IntPtr.Zero);
917
+
918
+            // 计算逆平移矩阵
919
+            Matrix3d inverseMatrix = Matrix3d.Displacement(-translation);
920
+            if (translatedPoints.Count > 0)
921
+            {
922
+                // 获取平移后的交点
923
+                foreach (Point3d item in translatedPoints)
924
+                {
925
+                    // 恢复交点坐标
926
+                    var pt = item.TransformBy(inverseMatrix);
927
+                    result.Add(pt);
928
+                }
929
+            }
930
+            return result;
931
+        }
932
+
933
+        private List<Point3d> GetIntersections(Polyline pll1, Polyline pll2)
934
+        {
935
+            List<Point3d> result = new List<Point3d>();
936
+
937
+            // 创建临时副本
938
+            Polyline tempLine1 = (Polyline)pll1.Clone();
939
+            Polyline tempLine2 = (Polyline)pll2.Clone();
940
+
941
+            // 计算平移向量(以线1起点为基准,移动至原点)
942
+            Vector3d translation = -tempLine1.StartPoint.GetAsVector();
943
+            Matrix3d translateMatrix = Matrix3d.Displacement(translation);
944
+
945
+            // 应用平移变换
946
+            tempLine1.TransformBy(translateMatrix);
947
+            tempLine2.TransformBy(translateMatrix);
948
+
949
+            Point3dCollection translatedPoints = new Point3dCollection();
950
+            var plane = new Plane(Point3d.Origin, Vector3d.ZAxis);
951
+            tempLine1.IntersectWith(tempLine2, Intersect.OnBothOperands, plane, translatedPoints, IntPtr.Zero, IntPtr.Zero);
952
+
953
+            // 计算逆平移矩阵
954
+            Matrix3d inverseMatrix = Matrix3d.Displacement(-translation);
955
+            if (translatedPoints.Count > 0)
956
+            {
957
+                // 获取平移后的交点
958
+                foreach (Point3d item in translatedPoints)
959
+                {
960
+                    // 恢复交点坐标
961
+                    var pt = item.TransformBy(inverseMatrix);
962
+                    result.Add(pt);
963
+                }
964
+            }
965
+            return result;
966
+        }
967
+
968
+    }
969
+}

+ 169
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/CutDGX.csproj 查看文件

@@ -0,0 +1,169 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+  <Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" />
4
+  <Import Project="..\packages\ILMerge.3.0.41\build\ILMerge.props" Condition="Exists('..\packages\ILMerge.3.0.41\build\ILMerge.props')" />
5
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
6
+  <PropertyGroup>
7
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9
+    <ProjectGuid>{D2BCAF31-33BF-4DC1-A711-B545BA172963}</ProjectGuid>
10
+    <OutputType>Library</OutputType>
11
+    <AppDesignerFolder>Properties</AppDesignerFolder>
12
+    <RootNamespace>CutDGX</RootNamespace>
13
+    <AssemblyName>CutDGX</AssemblyName>
14
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
15
+    <FileAlignment>512</FileAlignment>
16
+    <Deterministic>true</Deterministic>
17
+    <NuGetPackageImportStamp>
18
+    </NuGetPackageImportStamp>
19
+    <TargetFrameworkProfile />
20
+  </PropertyGroup>
21
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
22
+    <DebugSymbols>true</DebugSymbols>
23
+    <DebugType>full</DebugType>
24
+    <Optimize>false</Optimize>
25
+    <OutputPath>bin\Debug\</OutputPath>
26
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
27
+    <ErrorReport>prompt</ErrorReport>
28
+    <WarningLevel>4</WarningLevel>
29
+  </PropertyGroup>
30
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
31
+    <DebugType>pdbonly</DebugType>
32
+    <Optimize>true</Optimize>
33
+    <OutputPath>bin\Release\</OutputPath>
34
+    <DefineConstants>TRACE</DefineConstants>
35
+    <ErrorReport>prompt</ErrorReport>
36
+    <WarningLevel>4</WarningLevel>
37
+  </PropertyGroup>
38
+  <PropertyGroup>
39
+    <StartupObject />
40
+  </PropertyGroup>
41
+  <ItemGroup>
42
+    <Reference Include="accoremgd">
43
+      <HintPath>E:\AutoDesk\AutoCAD 2016\accoremgd.dll</HintPath>
44
+      <Private>False</Private>
45
+    </Reference>
46
+    <Reference Include="acdbmgd">
47
+      <HintPath>E:\AutoDesk\AutoCAD 2016\acdbmgd.dll</HintPath>
48
+      <Private>False</Private>
49
+    </Reference>
50
+    <Reference Include="acdbmgdbrep">
51
+      <HintPath>E:\AutoDesk\AutoCAD 2016\acdbmgdbrep.dll</HintPath>
52
+      <Private>False</Private>
53
+    </Reference>
54
+    <Reference Include="acmgd">
55
+      <HintPath>E:\AutoDesk\AutoCAD 2016\acmgd.dll</HintPath>
56
+      <Private>False</Private>
57
+    </Reference>
58
+    <Reference Include="Autodesk.AutoCAD.Interop">
59
+      <HintPath>E:\AutoDesk\AutoCAD 2016\Autodesk.AutoCAD.Interop.dll</HintPath>
60
+      <EmbedInteropTypes>False</EmbedInteropTypes>
61
+    </Reference>
62
+    <Reference Include="Costura, Version=6.0.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
63
+      <HintPath>..\packages\Costura.Fody.6.0.0\lib\netstandard2.0\Costura.dll</HintPath>
64
+    </Reference>
65
+    <Reference Include="NetTopologySuite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f580a05016ebada1, processorArchitecture=MSIL">
66
+      <HintPath>..\packages\NetTopologySuite.2.6.0\lib\netstandard2.0\NetTopologySuite.dll</HintPath>
67
+    </Reference>
68
+    <Reference Include="System" />
69
+    <Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
70
+      <HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
71
+      <Private>True</Private>
72
+    </Reference>
73
+    <Reference Include="System.Core" />
74
+    <Reference Include="System.Drawing" />
75
+    <Reference Include="System.Management" />
76
+    <Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
77
+      <HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
78
+      <Private>True</Private>
79
+    </Reference>
80
+    <Reference Include="System.Numerics" />
81
+    <Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
82
+      <HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
83
+      <Private>True</Private>
84
+    </Reference>
85
+    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
86
+      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
87
+      <Private>True</Private>
88
+    </Reference>
89
+    <Reference Include="System.Windows.Forms" />
90
+    <Reference Include="System.Xml.Linq" />
91
+    <Reference Include="System.Data.DataSetExtensions" />
92
+    <Reference Include="Microsoft.CSharp" />
93
+    <Reference Include="System.Data" />
94
+    <Reference Include="System.Net.Http" />
95
+    <Reference Include="System.Xml" />
96
+  </ItemGroup>
97
+  <ItemGroup>
98
+    <Compile Include="Class1.cs" />
99
+    <Compile Include="Dgxthrorvrd.cs" />
100
+    <Compile Include="Dgxthrorvrd_Form.cs">
101
+      <SubType>Form</SubType>
102
+    </Compile>
103
+    <Compile Include="Dgxthrorvrd_Form.Designer.cs">
104
+      <DependentUpon>Dgxthrorvrd_Form.cs</DependentUpon>
105
+    </Compile>
106
+    <Compile Include="Form1.cs">
107
+      <SubType>Form</SubType>
108
+    </Compile>
109
+    <Compile Include="Form1.Designer.cs">
110
+      <DependentUpon>Form1.cs</DependentUpon>
111
+    </Compile>
112
+    <Compile Include="joinedge.cs">
113
+      <SubType>Form</SubType>
114
+    </Compile>
115
+    <Compile Include="joinedge.Designer.cs">
116
+      <DependentUpon>joinedge.cs</DependentUpon>
117
+    </Compile>
118
+    <Compile Include="MainClass.cs" />
119
+    <Compile Include="Menu.cs" />
120
+    <Compile Include="Properties\AssemblyInfo.cs" />
121
+    <Compile Include="TKCut.cs" />
122
+    <Compile Include="TKCuts.cs">
123
+      <SubType>Form</SubType>
124
+    </Compile>
125
+    <Compile Include="TKCuts.Designer.cs">
126
+      <DependentUpon>TKCuts.cs</DependentUpon>
127
+    </Compile>
128
+  </ItemGroup>
129
+  <ItemGroup>
130
+    <EmbeddedResource Include="Dgxthrorvrd_Form.resx">
131
+      <DependentUpon>Dgxthrorvrd_Form.cs</DependentUpon>
132
+    </EmbeddedResource>
133
+    <EmbeddedResource Include="Form1.resx">
134
+      <DependentUpon>Form1.cs</DependentUpon>
135
+    </EmbeddedResource>
136
+    <EmbeddedResource Include="joinedge.resx">
137
+      <DependentUpon>joinedge.cs</DependentUpon>
138
+    </EmbeddedResource>
139
+    <EmbeddedResource Include="TKCuts.resx">
140
+      <DependentUpon>TKCuts.cs</DependentUpon>
141
+    </EmbeddedResource>
142
+  </ItemGroup>
143
+  <ItemGroup>
144
+    <None Include="app.config" />
145
+    <None Include="FodyWeavers.xsd">
146
+      <SubType>Designer</SubType>
147
+    </None>
148
+    <None Include="packages.config" />
149
+  </ItemGroup>
150
+  <ItemGroup>
151
+    <Content Include="FodyWeavers.xml" />
152
+  </ItemGroup>
153
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
154
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
155
+    <PropertyGroup>
156
+      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
157
+    </PropertyGroup>
158
+    <Error Condition="!Exists('..\packages\ILMerge.3.0.41\build\ILMerge.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\ILMerge.3.0.41\build\ILMerge.props'))" />
159
+    <Error Condition="!Exists('..\packages\Fody.6.9.2\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.9.2\build\Fody.targets'))" />
160
+    <Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props'))" />
161
+    <Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets'))" />
162
+  </Target>
163
+  <PropertyGroup>
164
+    <PostBuildEvent>
165
+    </PostBuildEvent>
166
+  </PropertyGroup>
167
+  <Import Project="..\packages\Fody.6.9.2\build\Fody.targets" Condition="Exists('..\packages\Fody.6.9.2\build\Fody.targets')" />
168
+  <Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" />
169
+</Project>

+ 10
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/CutDGX.csproj.user 查看文件

@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+  <PropertyGroup>
4
+    <ProjectView>ProjectFiles</ProjectView>
5
+  </PropertyGroup>
6
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
7
+    <StartAction>Program</StartAction>
8
+    <StartProgram>E:\AutoDesk\AutoCAD 2016\acad.exe</StartProgram>
9
+  </PropertyGroup>
10
+</Project>

+ 622
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd.cs 查看文件

@@ -0,0 +1,622 @@
1
+using Autodesk.AutoCAD.ApplicationServices;
2
+using Autodesk.AutoCAD.DatabaseServices;
3
+using Autodesk.AutoCAD.EditorInput;
4
+using Autodesk.AutoCAD.Geometry;
5
+using Autodesk.AutoCAD.Runtime;
6
+using System;
7
+using System.Collections.Generic;
8
+using System.Linq;
9
+using System.Text;
10
+using System.Threading.Tasks;
11
+
12
+namespace CutDGX
13
+{
14
+    public struct colorgb
15
+    {
16
+        public byte red;
17
+        public byte green;
18
+        public byte blue;
19
+
20
+        public colorgb(byte r, byte g, byte b)
21
+        {
22
+            this.red = r;
23
+            this.green = g;
24
+            this.blue = b;
25
+        }
26
+    }
27
+    class Dgxthrorvrd
28
+    {
29
+        public static List<string> dgxlist;
30
+        public static List<string> rvrdlist;
31
+        public static List<string> kzlist;
32
+        public static int blc;
33
+
34
+        
35
+        public void Dgxbreak()
36
+        {
37
+            string dgxname = "";
38
+            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
39
+
40
+            for (int i = 0; i < dgxlist.Count; i++)
41
+            {
42
+                if (i == 0)
43
+                    dgxname = dgxlist[i];
44
+                else
45
+                    dgxname = dgxname + "," + dgxlist[i];
46
+            }
47
+            TypedValue[] value = new TypedValue[]
48
+            {
49
+                    new TypedValue((int)DxfCode.LayerName,dgxname)
50
+            };
51
+            SelectionFilter filter = new SelectionFilter(value);
52
+            //dynamic acadApp = AutoCAD.ApplicationServices.Application.AcadApplication;
53
+            //acadApp.ZoomExtents();
54
+            PromptSelectionResult psr = ed.SelectAll(filter);
55
+            if (psr.Status == PromptStatus.OK)
56
+            {
57
+                SelectionSet ss = psr.Value;
58
+                ObjectIdCollection idcoll = new ObjectIdCollection(ss.GetObjectIds());
59
+                for (int ii = 0; ii < idcoll.Count; ii++)
60
+                {
61
+                    //using (Transaction trans = db.TransactionManager.StartTransaction())
62
+                    //{
63
+                        Intersectcheck(idcoll[ii], ed);
64
+                        //trans.Commit();
65
+                    //}
66
+                }
67
+            }
68
+            dgxlist.Clear();
69
+            if (rvrdlist != null)
70
+                rvrdlist.Clear();
71
+            if (kzlist != null)
72
+                kzlist.Clear();
73
+        }
74
+
75
+        private void Intersectcheck(ObjectId id, Editor ed)
76
+        {
77
+            var plane = new Plane(Point3d.Origin, Vector3d.ZAxis);
78
+            Point3dCollection pts = new Point3dCollection();
79
+            Point3dCollection pts1 = new Point3dCollection();
80
+            Point3dCollection kz_pts = new Point3dCollection();
81
+            string rvrdname = "";
82
+            string kzname = "";
83
+            //为坎子让出的长度
84
+            double cut_dist = 0.5;
85
+            if (blc == 1000)
86
+                cut_dist = cut_dist * 2;
87
+            if (blc == 2000)
88
+                cut_dist = cut_dist * 4;
89
+            if (blc == 5000)
90
+                cut_dist = cut_dist * 10;
91
+            if (blc == 10000)
92
+                cut_dist = cut_dist * 20;
93
+
94
+            Database db = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
95
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
96
+            using (Transaction trans = db.TransactionManager.StartTransaction())
97
+            {
98
+                Entity ent = trans.GetObject(id, OpenMode.ForWrite) as Entity;
99
+                Polyline pll = new Polyline();
100
+                if (ent is Polyline)
101
+                    pll = (Polyline)ent;
102
+                else
103
+                    return;
104
+                //添加道路河流房屋的图层名并搜索相应图层上的实体
105
+                if (rvrdlist != null)
106
+                {
107
+                    //if (kzlist != null)
108
+                    //{
109
+                    //    rvrdlist.AddRange(kzlist);
110
+                    //}
111
+                    Point3dCollection ptcoll = new Point3dCollection();
112
+                    for (int i = 0; i < pll.NumberOfVertices; i++)
113
+                    {
114
+                        ptcoll.Add(pll.GetPoint3dAt(i));
115
+                    }
116
+                    List<string> lyrname = rvrdlist;
117
+                    for (int i = 0; i < lyrname.Count; i++)
118
+                    {
119
+                        if (i == 0)
120
+                            rvrdname = lyrname[i];
121
+                        else
122
+                            rvrdname = rvrdname + "," + lyrname[i];
123
+                    }
124
+                    TypedValue[] value = new TypedValue[]
125
+                    {
126
+                        new TypedValue((int)DxfCode.LayerName,rvrdname)
127
+                    };
128
+                    SelectionFilter filter = new SelectionFilter(value);
129
+                    ZoomView(ed, pll.Bounds.Value.MinPoint, pll.Bounds.Value.MaxPoint);
130
+                    PromptSelectionResult psr = ed.SelectFence(ptcoll,filter);
131
+                    if (psr.Status == PromptStatus.OK)
132
+                    {
133
+                        SelectionSet ss = psr.Value;
134
+                        ObjectIdCollection idcoll = new ObjectIdCollection(ss.GetObjectIds());
135
+                        for (int i = 0; i < idcoll.Count; i++)
136
+                        {
137
+                            Entity ent1 = trans.GetObject(idcoll[i], OpenMode.ForWrite) as Entity;
138
+                            Polyline pll_rvrd = new Polyline();
139
+                            if (ent1 is Polyline)
140
+                                pll_rvrd = (Polyline)ent1;
141
+                            else
142
+                                continue;
143
+                            Point3dCollection intersectionPoints = new Point3dCollection();
144
+                            intersectionPoints = GetIntersections(pll, pll_rvrd);
145
+                            //pll.IntersectWith(pll_rvrd, Intersect.OnBothOperands, plane, intersectionPoints, IntPtr.Zero, IntPtr.Zero);
146
+                            if (intersectionPoints.Count > 0)
147
+                            {
148
+                                foreach (Point3d pt in intersectionPoints)
149
+                                {
150
+                                    if (pts.Contains(pll.GetClosestPointTo(pt, false)))
151
+                                        continue;
152
+                                    else
153
+                                        pts.Add(pll.GetClosestPointTo(pt, false));
154
+                                }
155
+                            }
156
+                        }
157
+                    }
158
+                }
159
+
160
+
161
+
162
+                //添加坎子图层名并搜索相应图层上的实体
163
+                if (kzlist != null)
164
+                {
165
+                    for (int i = 0; i < kzlist.Count; i++)
166
+                    {
167
+                        if (i == 0)
168
+                            kzname = kzlist[i];
169
+                        else
170
+                            kzname = kzname + "," + kzlist[i];
171
+                    }
172
+                    TypedValue[] value_kz = new TypedValue[]
173
+                    {
174
+                    new TypedValue((int)DxfCode.LayerName,kzname)
175
+                    };
176
+                    SelectionFilter filter_kz = new SelectionFilter(value_kz);
177
+                    PromptSelectionResult psr_kz = ed.SelectAll(filter_kz);
178
+                    if (psr_kz.Status == PromptStatus.OK)
179
+                    {
180
+                        SelectionSet ss = psr_kz.Value;
181
+                        ObjectIdCollection idcoll = new ObjectIdCollection(ss.GetObjectIds());
182
+                        List<Point3d> ptlist = new List<Point3d>();
183
+                        for (int i = 0; i < idcoll.Count; i++)
184
+                        {
185
+                            Entity ent1 = trans.GetObject(idcoll[i], OpenMode.ForWrite) as Entity;
186
+                            Polyline pll_rvrd = new Polyline();
187
+                            if (ent1 is Polyline)
188
+                                pll_rvrd = (Polyline)ent1;
189
+                            else
190
+                                continue;
191
+                            Point3dCollection intersectionPoints = new Point3dCollection();
192
+                            intersectionPoints = GetIntersections(pll, pll_rvrd);
193
+                            //pll.IntersectWith(pll_rvrd, Intersect.OnBothOperands, plane, intersectionPoints, IntPtr.Zero, IntPtr.Zero);
194
+
195
+                            foreach (var item in intersectionPoints)
196
+                            {
197
+                                ptlist.Add((Point3d)item);
198
+                            }
199
+                        }
200
+                        if (ptlist.Count > 0)
201
+                        {
202
+                            var sortedlist = ptlist.OrderBy(x => pll.GetParameterAtPoint(x)).ToList();
203
+                            for (int j = 0; j < sortedlist.Count; j++)
204
+                            {
205
+                                Point3d pt;
206
+                                Point3d bkpt = pll.GetClosestPointTo(sortedlist[j], false);
207
+                                if (j % 2 == 0 || j == 0)
208
+                                {
209
+                                    pt = pll.GetPointAtDist(pll.GetDistAtPoint(bkpt) - cut_dist);
210
+                                }
211
+                                else
212
+                                    pt = pll.GetPointAtDist(pll.GetDistAtPoint(bkpt) + cut_dist);
213
+                                //foreach (Point3d pt in intersectionPoints)
214
+                                //{
215
+                                //    pts1.Add(pt);
216
+                                //}
217
+                                pts.Add(pt);
218
+                            }
219
+                        }
220
+
221
+                        #region
222
+                        //if (pts.Count > 0)
223
+                        //{
224
+                        //    //按参数值排序交点
225
+                        //    List<double> paramList = new List<double>();
226
+                        //    foreach (Point3d breakPoint in pts)
227
+                        //    {
228
+                        //        double param = pll.GetParameterAtPoint(breakPoint);
229
+                        //        paramList.Add(param);
230
+                        //    }
231
+                        //    paramList.Sort();
232
+
233
+                        //    //存储分割后的多段线
234
+                        //    List<Polyline> newPlls = new List<Polyline>();
235
+
236
+                        //    // 初始化第一条多段线
237
+                        //    Polyline currentPline = new Polyline();
238
+                        //    currentPline.SetDatabaseDefaults();
239
+                        //    currentPline.Layer = pll.Layer;
240
+                        //    currentPline.Color = pll.Color;
241
+
242
+                        //    // 遍历多段线的节点
243
+                        //    for (int i = 0; i < pll.NumberOfVertices; i++)
244
+                        //    {
245
+                        //        Point2d point = pll.GetPoint2dAt(i);
246
+                        //        double bulge = pll.GetBulgeAt(i);
247
+
248
+                        //        // 添加节点到当前多段线
249
+                        //        currentPline.AddVertexAt(currentPline.NumberOfVertices, point, bulge, 0, 0);
250
+
251
+                        //        // 检查是否需要分割
252
+                        //        if (paramList.Count > 0 && i == (int)paramList[0])
253
+                        //        {
254
+                        //            // 检查当前节点和下一个节点之间是否有交点
255
+                        //            while (paramList.Count > 0 && paramList[0] >= i && paramList[0] < i + 1)
256
+                        //            {
257
+                        //                // 计算交点处的精确位置
258
+                        //                double param = paramList[0];
259
+                        //                double dist = pll.GetDistanceAtParameter(param)- cut_dist;
260
+                        //                Point3d splitPoint3d = pll.GetPointAtDist(dist);
261
+                        //                Point2d splitPoint = new Point2d(splitPoint3d.X, splitPoint3d.Y);
262
+                        //                kz_pts.Add(splitPoint3d);
263
+
264
+                        //                // 添加当前多段线到结果列表
265
+                        //                currentPline.AddVertexAt(currentPline.NumberOfVertices, splitPoint, 0, 0, 0);
266
+                        //                BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));
267
+                        //                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
268
+                        //                btr.AppendEntity(currentPline);
269
+                        //                trans.AddNewlyCreatedDBObject(currentPline, true);
270
+                        //                newPlls.Add(currentPline);
271
+
272
+                        //                // 初始化下一条多段线
273
+                        //                currentPline = new Polyline();
274
+                        //                currentPline.SetDatabaseDefaults();
275
+                        //                currentPline.Layer = pll.Layer;
276
+                        //                currentPline.Color = pll.Color;
277
+
278
+                        //                // 添加分割点作为下一条多段线的起点
279
+                        //                double dist1 = pll.GetDistanceAtParameter(param) + cut_dist;
280
+                        //                Point3d splitPoint3d1 = pll.GetPointAtDist(dist1);
281
+                        //                Point2d splitPoint1 = new Point2d(splitPoint3d1.X, splitPoint3d1.Y);
282
+                        //                kz_pts.Add(splitPoint3d1);
283
+                        //                currentPline.AddVertexAt(0, splitPoint1, 0, 0, 0);
284
+
285
+                        //                // 移除已处理的交点
286
+                        //                paramList.RemoveAt(0);
287
+                        //            }
288
+                        //        }
289
+                        //    }
290
+
291
+                        //    if (currentPline.NumberOfVertices > 0)
292
+                        //    {
293
+                        //        BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));
294
+                        //        BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
295
+                        //        btr.AppendEntity(currentPline);
296
+                        //        trans.AddNewlyCreatedDBObject(currentPline, true);
297
+                        //        newPlls.Add(currentPline);
298
+                        //    }
299
+                        //    pll.Erase();
300
+
301
+
302
+                        //    for (int i = 0; i < newPlls.Count; i++)
303
+                        //    {
304
+                        //        if (kz_pts.Contains(newPlls[i].StartPoint) &&
305
+                        //            kz_pts.Contains(newPlls[i].EndPoint) &&
306
+                        //            i % 2 == 1)
307
+                        //            newPlls[i].Layer = "待删除等高线";
308
+                        //        else if (newPlls.Count == 2)
309
+                        //        {
310
+                        //            if (newPlls[0].Length < newPlls[1].Length)
311
+                        //                newPlls[0].Layer = "待删除等高线";
312
+                        //            else
313
+                        //                newPlls[1].Layer = "待删除等高线";
314
+                        //        }
315
+                        //    }
316
+                        //}
317
+                        #endregion
318
+                    }
319
+                }
320
+
321
+
322
+
323
+                if (pts.Count > 0)
324
+                {
325
+                    //创建新图层
326
+                    string layname = "待删除等高线";
327
+                    if (!haslayername(layname))
328
+                    {
329
+                        colorgb col = new colorgb(255, 0, 255);
330
+                        creatlayer(layname, col);
331
+                        movelayertofront(layname);
332
+                    }
333
+                    else
334
+                        movelayertofront(layname);
335
+
336
+
337
+                    //按参数值排序交点
338
+                    List<double> paramList = new List<double>();
339
+                    List<double> kzparam = new List<double>();
340
+                    foreach (Point3d breakPoint in pts)
341
+                    {
342
+                        double param = pll.GetParameterAtPoint(breakPoint);
343
+                        if (pts1.Contains(breakPoint))
344
+                            kzparam.Add(param);
345
+                        paramList.Add(param);
346
+                    }
347
+                    paramList.Sort();
348
+
349
+                    //存储分割后的多段线
350
+                    List<Polyline> newPlls = new List<Polyline>();
351
+
352
+                    // 初始化第一条多段线
353
+                    Polyline currentPline = new Polyline();
354
+                    currentPline.SetDatabaseDefaults();
355
+                    currentPline.Layer = pll.Layer;
356
+                    currentPline.Color = pll.Color;
357
+
358
+                    // 遍历多段线的节点
359
+                    //for (int i = 0; i < pll.NumberOfVertices; i++)
360
+                    //{
361
+                    //    Point2d point = pll.GetPoint2dAt(i);
362
+                    //    double bulge = pll.GetBulgeAt(i);
363
+
364
+                    //    // 添加节点到当前多段线
365
+                    //    currentPline.AddVertexAt(currentPline.NumberOfVertices, point, bulge, 0, 0);
366
+
367
+                    //    // 检查是否需要分割
368
+                    //    if (paramList.Count > 0 && i == (int)paramList[0])
369
+                    //    {
370
+                    //        // 检查当前节点和下一个节点之间是否有交点
371
+                    //        while (paramList.Count > 0 && paramList[0] >= i && paramList[0] < i + 1)
372
+                    //        {
373
+                    //            // 计算交点处的精确位置
374
+                    //            double param = paramList[0];
375
+                    //            double dist;
376
+                    //            if (kzparam.Contains(param))
377
+                    //            {
378
+                    //                dist = pll.GetDistanceAtParameter(param) - cut_dist;
379
+                    //                kz_pts.Add(pll.GetPointAtDist(dist));
380
+                    //            }
381
+                    //            else
382
+                    //                dist = pll.GetDistanceAtParameter(param);
383
+                    //            Point3d splitPoint3d = pll.GetPointAtDist(dist);
384
+                    //            Point2d splitPoint = new Point2d(splitPoint3d.X, splitPoint3d.Y);
385
+
386
+                    //            // 添加当前多段线到结果列表
387
+                    //            currentPline.AddVertexAt(currentPline.NumberOfVertices, splitPoint, 0, 0, 0);
388
+                    //            BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));
389
+                    //            BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
390
+                    //            btr.AppendEntity(currentPline);
391
+                    //            trans.AddNewlyCreatedDBObject(currentPline, true);
392
+                    //            newPlls.Add(currentPline);
393
+
394
+                    //            // 初始化下一条多段线
395
+                    //            currentPline = new Polyline();
396
+                    //            currentPline.SetDatabaseDefaults();
397
+                    //            currentPline.Layer = pll.Layer;
398
+                    //            currentPline.Color = pll.Color;
399
+
400
+                    //            // 添加分割点作为下一条多段线的起点
401
+                    //            if (kzparam.Contains(param))
402
+                    //            {
403
+                    //                double dist1 = pll.GetDistanceAtParameter(param) + cut_dist;
404
+                    //                Point3d splitPoint3d1 = pll.GetPointAtDist(dist1);
405
+                    //                Point2d splitPoint1 = new Point2d(splitPoint3d1.X, splitPoint3d1.Y);
406
+                    //                kz_pts.Add(splitPoint3d1);
407
+                    //                currentPline.AddVertexAt(0, splitPoint1, 0, 0, 0);
408
+                    //            }
409
+                    //            else
410
+                    //                currentPline.AddVertexAt(0, splitPoint, 0, 0, 0);
411
+
412
+                    //            // 移除已处理的交点
413
+                    //            paramList.RemoveAt(0);
414
+                    //        }
415
+                    //    }
416
+                    //}
417
+
418
+                    //if (currentPline.NumberOfVertices > 0)
419
+                    //{
420
+                    //    BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));
421
+                    //    BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
422
+                    //    btr.AppendEntity(currentPline);
423
+                    //    trans.AddNewlyCreatedDBObject(currentPline, true);
424
+                    //    newPlls.Add(currentPline);
425
+                    //}
426
+                    List<Point3d> pts_list = new List<Point3d>();
427
+                    foreach (var item in pts)
428
+                    {
429
+                        pts_list.Add((Point3d)item);
430
+                    }
431
+                    var pts_sorted = pts_list.OrderBy(x => pll.GetParameterAtPoint(x));
432
+                    pts.Clear();
433
+                    foreach (var item in pts_sorted)
434
+                    {
435
+                        pts.Add(item);
436
+                    }
437
+                    foreach (var item in pll.GetSplitCurves(pts))
438
+                    {
439
+                        BlockTable bt = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForRead));
440
+                        BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
441
+                        btr.AppendEntity((Polyline)item);
442
+                        trans.AddNewlyCreatedDBObject((Polyline)item, true);
443
+                        newPlls.Add((Polyline)item);
444
+                    }
445
+                    pll.Erase();
446
+
447
+
448
+                    for (int i = 0; i < newPlls.Count; i++)
449
+                    {
450
+                        if (newPlls.Count == 2)
451
+                        {
452
+                            if (newPlls[0].Length < newPlls[1].Length)
453
+                                newPlls[0].Layer = "待删除等高线";
454
+                            else
455
+                                newPlls[1].Layer = "待删除等高线";
456
+                        }
457
+                        else if (pts.Contains(newPlls[i].StartPoint) &&
458
+                            pts.Contains(newPlls[i].EndPoint) &&
459
+                            i % 2 == 1)
460
+                            newPlls[i].Layer = "待删除等高线";
461
+                        else if (kz_pts.Contains(newPlls[i].StartPoint) &&
462
+                            kz_pts.Contains(newPlls[i].EndPoint) &&
463
+                            i % 2 == 1)
464
+                            newPlls[i].Layer = "待删除等高线";
465
+                    }
466
+                }
467
+
468
+                trans.Commit();
469
+            }
470
+            doclock.Dispose();
471
+        }
472
+
473
+        /// <summary>
474
+        /// 缩放视图以便搜索
475
+        /// </summary>
476
+        private void ZoomView(Editor edit, Point3d pt1, Point3d pt2)
477
+        {
478
+            var x_min = Math.Min(pt1.X, pt2.X);
479
+            var y_min = Math.Min(pt1.Y, pt2.Y);
480
+            using (ViewTableRecord currview1 = edit.GetCurrentView())
481
+            {
482
+                currview1.CenterPoint = new Point2d(Math.Abs((pt2.X - pt1.X) / 2) + x_min,
483
+                                                    Math.Abs((pt2.Y - pt1.Y) / 2) + y_min);
484
+                currview1.Width = Math.Abs(pt2.X - pt1.X + 1);
485
+                currview1.Height = Math.Abs(pt2.Y - pt1.Y + 1);
486
+                edit.SetCurrentView(currview1);
487
+            }
488
+        }
489
+
490
+
491
+
492
+        /// <summary>
493
+        /// 创建高程点错误标记层
494
+        /// </summary>
495
+        /// <param name="layername">要创建的图层的名字</param>
496
+        /// <param name="colo">RGB三原色</param>
497
+        public void creatlayer(string layername, colorgb colo)
498
+        {
499
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
500
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
501
+            Transaction traction = database.TransactionManager.StartTransaction();
502
+            LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;
503
+            try
504
+            {
505
+                LayerTableRecord layertablerecord = new LayerTableRecord();
506
+                layertablerecord.Name = layername;//设置层表记录的名字
507
+                layertablerecord.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(colo.red, colo.green, colo.blue);//为层表记录赋颜色紫色
508
+                //layertablerecord.Color = GrxCAD.Colors.Color.FromColor(System.Drawing.Color.Magenta);
509
+
510
+
511
+                lt.Add(layertablerecord);
512
+                traction.AddNewlyCreatedDBObject(layertablerecord, true);
513
+                traction.Commit();
514
+            }
515
+            catch (Autodesk.AutoCAD.Runtime.Exception)
516
+            {
517
+                traction.Abort();
518
+            }
519
+            finally
520
+            {
521
+                traction.Dispose();
522
+                doclock.Dispose();
523
+            }
524
+        }
525
+
526
+
527
+        /// <summary>
528
+        /// 将指定图层设置为当前图层
529
+        /// </summary>
530
+        /// <param name="layername">要设置为当前图层的图层名字</param>
531
+        public void movelayertofront(string layername)
532
+        {
533
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
534
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
535
+            Transaction traction = database.TransactionManager.StartTransaction();
536
+            try
537
+            {
538
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
539
+                database.Clayer = layertable[layername];//把图层选为当前图层
540
+                traction.Commit();
541
+            }
542
+            catch (Autodesk.AutoCAD.Runtime.Exception)
543
+            {
544
+                traction.Abort();
545
+            }
546
+            finally
547
+            {
548
+                traction.Dispose();
549
+                doclock.Dispose();
550
+            }
551
+        }
552
+        /// <summary>
553
+        /// 判断所命图层名是否已经存在
554
+        /// </summary>
555
+        /// <param name="layername">要判断的图层名字</param>
556
+        /// <returns>返回true表示在层表中存在要判断的图层名,
557
+        /// 返回false表示层表中不存在判断的图层名</returns>
558
+        public bool haslayername(string layername)
559
+        {
560
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
561
+            using (Transaction traction = database.TransactionManager.StartTransaction())
562
+            {
563
+                LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
564
+
565
+                if (lt.Has(layername))
566
+                {
567
+                    traction.Commit();
568
+                    return true;
569
+                }
570
+                else
571
+                {
572
+                    traction.Commit();
573
+                    return false;
574
+                }
575
+            }
576
+
577
+
578
+
579
+        }
580
+
581
+        private static Point3dCollection GetIntersections(Polyline pll1, Polyline pll2)
582
+        {
583
+            List<Point3d> sort = new List<Point3d>();
584
+            Point3dCollection result = new Point3dCollection();
585
+
586
+            // 创建临时副本
587
+            Polyline tempLine1 = (Polyline)pll1.Clone();
588
+            Polyline tempLine2 = (Polyline)pll2.Clone();
589
+
590
+            // 计算平移向量(以线1起点为基准,移动至原点)
591
+            Vector3d translation = -tempLine1.StartPoint.GetAsVector();
592
+            Matrix3d translateMatrix = Matrix3d.Displacement(translation);
593
+
594
+            // 应用平移变换
595
+            tempLine1.TransformBy(translateMatrix);
596
+            tempLine2.TransformBy(translateMatrix);
597
+
598
+            Point3dCollection translatedPoints = new Point3dCollection();
599
+            var plane = new Plane(Point3d.Origin, Vector3d.ZAxis);
600
+            tempLine1.IntersectWith(tempLine2, Intersect.OnBothOperands, plane, translatedPoints, IntPtr.Zero, IntPtr.Zero);
601
+
602
+            // 计算逆平移矩阵
603
+            Matrix3d inverseMatrix = Matrix3d.Displacement(-translation);
604
+            if (translatedPoints.Count > 0)
605
+            {
606
+                // 获取平移后的交点
607
+                foreach (Point3d item in translatedPoints)
608
+                {
609
+                    // 恢复交点坐标
610
+                    var pt = item.TransformBy(inverseMatrix);
611
+                    sort.Add(pt);
612
+                }
613
+            }
614
+            var sorted = sort.OrderBy(x => pll1.GetParameterAtPoint(x));
615
+            foreach (var item in sorted)
616
+            {
617
+                result.Add(item);
618
+            }
619
+            return result;
620
+        }
621
+    }
622
+}

+ 176
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.Designer.cs 查看文件

@@ -0,0 +1,176 @@
1
+
2
+namespace CutDGX
3
+{
4
+    partial class Dgxthrorvrd_Form
5
+    {
6
+        /// <summary>
7
+        /// Required designer variable.
8
+        /// </summary>
9
+        private System.ComponentModel.IContainer components = null;
10
+
11
+        /// <summary>
12
+        /// Clean up any resources being used.
13
+        /// </summary>
14
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
15
+        protected override void Dispose(bool disposing)
16
+        {
17
+            if (disposing && (components != null))
18
+            {
19
+                components.Dispose();
20
+            }
21
+            base.Dispose(disposing);
22
+        }
23
+
24
+        #region Windows Form Designer generated code
25
+
26
+        /// <summary>
27
+        /// Required method for Designer support - do not modify
28
+        /// the contents of this method with the code editor.
29
+        /// </summary>
30
+        private void InitializeComponent()
31
+        {
32
+            this.label1 = new System.Windows.Forms.Label();
33
+            this.label2 = new System.Windows.Forms.Label();
34
+            this.checkedListBox_dgx = new System.Windows.Forms.CheckedListBox();
35
+            this.checkedListBox_rvrd = new System.Windows.Forms.CheckedListBox();
36
+            this.button_OK = new System.Windows.Forms.Button();
37
+            this.button_Cancel = new System.Windows.Forms.Button();
38
+            this.label3 = new System.Windows.Forms.Label();
39
+            this.checkedListBox_kz = new System.Windows.Forms.CheckedListBox();
40
+            this.label4 = new System.Windows.Forms.Label();
41
+            this.comboBox_blc = new System.Windows.Forms.ComboBox();
42
+            this.SuspendLayout();
43
+            // 
44
+            // label1
45
+            // 
46
+            this.label1.AutoSize = true;
47
+            this.label1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
48
+            this.label1.Location = new System.Drawing.Point(44, 75);
49
+            this.label1.Name = "label1";
50
+            this.label1.Size = new System.Drawing.Size(127, 15);
51
+            this.label1.TabIndex = 0;
52
+            this.label1.Text = "等高线所在图层:";
53
+            // 
54
+            // label2
55
+            // 
56
+            this.label2.AutoSize = true;
57
+            this.label2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
58
+            this.label2.Location = new System.Drawing.Point(196, 75);
59
+            this.label2.Name = "label2";
60
+            this.label2.Size = new System.Drawing.Size(172, 15);
61
+            this.label2.TabIndex = 1;
62
+            this.label2.Text = "河流道路房屋所在图层:";
63
+            // 
64
+            // checkedListBox_dgx
65
+            // 
66
+            this.checkedListBox_dgx.FormattingEnabled = true;
67
+            this.checkedListBox_dgx.Location = new System.Drawing.Point(47, 103);
68
+            this.checkedListBox_dgx.Name = "checkedListBox_dgx";
69
+            this.checkedListBox_dgx.Size = new System.Drawing.Size(124, 164);
70
+            this.checkedListBox_dgx.TabIndex = 2;
71
+            // 
72
+            // checkedListBox_rvrd
73
+            // 
74
+            this.checkedListBox_rvrd.FormattingEnabled = true;
75
+            this.checkedListBox_rvrd.Location = new System.Drawing.Point(211, 103);
76
+            this.checkedListBox_rvrd.Name = "checkedListBox_rvrd";
77
+            this.checkedListBox_rvrd.Size = new System.Drawing.Size(124, 164);
78
+            this.checkedListBox_rvrd.TabIndex = 3;
79
+            // 
80
+            // button_OK
81
+            // 
82
+            this.button_OK.Location = new System.Drawing.Point(175, 295);
83
+            this.button_OK.Name = "button_OK";
84
+            this.button_OK.Size = new System.Drawing.Size(75, 31);
85
+            this.button_OK.TabIndex = 4;
86
+            this.button_OK.Text = "确 认";
87
+            this.button_OK.UseVisualStyleBackColor = true;
88
+            this.button_OK.Click += new System.EventHandler(this.button_OK_Click);
89
+            // 
90
+            // button_Cancel
91
+            // 
92
+            this.button_Cancel.Location = new System.Drawing.Point(333, 295);
93
+            this.button_Cancel.Name = "button_Cancel";
94
+            this.button_Cancel.Size = new System.Drawing.Size(75, 30);
95
+            this.button_Cancel.TabIndex = 5;
96
+            this.button_Cancel.Text = "取 消";
97
+            this.button_Cancel.UseVisualStyleBackColor = true;
98
+            // 
99
+            // label3
100
+            // 
101
+            this.label3.AutoSize = true;
102
+            this.label3.Location = new System.Drawing.Point(385, 75);
103
+            this.label3.Name = "label3";
104
+            this.label3.Size = new System.Drawing.Size(112, 15);
105
+            this.label3.TabIndex = 6;
106
+            this.label3.Text = "坎子所在图层:";
107
+            // 
108
+            // checkedListBox_kz
109
+            // 
110
+            this.checkedListBox_kz.FormattingEnabled = true;
111
+            this.checkedListBox_kz.Location = new System.Drawing.Point(388, 103);
112
+            this.checkedListBox_kz.Name = "checkedListBox_kz";
113
+            this.checkedListBox_kz.Size = new System.Drawing.Size(124, 164);
114
+            this.checkedListBox_kz.TabIndex = 7;
115
+            // 
116
+            // label4
117
+            // 
118
+            this.label4.AutoSize = true;
119
+            this.label4.Location = new System.Drawing.Point(47, 26);
120
+            this.label4.Name = "label4";
121
+            this.label4.Size = new System.Drawing.Size(67, 15);
122
+            this.label4.TabIndex = 8;
123
+            this.label4.Text = "比例尺:";
124
+            // 
125
+            // comboBox_blc
126
+            // 
127
+            this.comboBox_blc.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
128
+            this.comboBox_blc.FormattingEnabled = true;
129
+            this.comboBox_blc.Items.AddRange(new object[] {
130
+            "1:500",
131
+            "1:1000",
132
+            "1:2000",
133
+            "1:5000",
134
+            "1:10000"});
135
+            this.comboBox_blc.Location = new System.Drawing.Point(120, 23);
136
+            this.comboBox_blc.Name = "comboBox_blc";
137
+            this.comboBox_blc.Size = new System.Drawing.Size(156, 23);
138
+            this.comboBox_blc.TabIndex = 9;
139
+            // 
140
+            // Dgxthrorvrd_Form
141
+            // 
142
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
143
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
144
+            this.ClientSize = new System.Drawing.Size(598, 349);
145
+            this.Controls.Add(this.comboBox_blc);
146
+            this.Controls.Add(this.label4);
147
+            this.Controls.Add(this.checkedListBox_kz);
148
+            this.Controls.Add(this.label3);
149
+            this.Controls.Add(this.button_Cancel);
150
+            this.Controls.Add(this.button_OK);
151
+            this.Controls.Add(this.checkedListBox_rvrd);
152
+            this.Controls.Add(this.checkedListBox_dgx);
153
+            this.Controls.Add(this.label2);
154
+            this.Controls.Add(this.label1);
155
+            this.Name = "Dgxthrorvrd_Form";
156
+            this.Text = "过河流道路的等高线裁剪";
157
+            this.Load += new System.EventHandler(this.Dgxthrorvrd_Form_Load);
158
+            this.ResumeLayout(false);
159
+            this.PerformLayout();
160
+
161
+        }
162
+
163
+        #endregion
164
+
165
+        private System.Windows.Forms.Label label1;
166
+        private System.Windows.Forms.Label label2;
167
+        private System.Windows.Forms.CheckedListBox checkedListBox_dgx;
168
+        private System.Windows.Forms.CheckedListBox checkedListBox_rvrd;
169
+        private System.Windows.Forms.Button button_OK;
170
+        private System.Windows.Forms.Button button_Cancel;
171
+        private System.Windows.Forms.Label label3;
172
+        private System.Windows.Forms.CheckedListBox checkedListBox_kz;
173
+        private System.Windows.Forms.Label label4;
174
+        private System.Windows.Forms.ComboBox comboBox_blc;
175
+    }
176
+}

+ 96
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.cs 查看文件

@@ -0,0 +1,96 @@
1
+using Autodesk.AutoCAD.DatabaseServices;
2
+using System;
3
+using System.Collections.Generic;
4
+using System.ComponentModel;
5
+using System.Data;
6
+using System.Drawing;
7
+using System.Linq;
8
+using System.Text;
9
+using System.Threading.Tasks;
10
+using System.Windows.Forms;
11
+
12
+namespace CutDGX
13
+{
14
+    public partial class Dgxthrorvrd_Form : Form
15
+    {
16
+        public Dgxthrorvrd_Form()
17
+        {
18
+            InitializeComponent();
19
+        }
20
+
21
+        private void Dgxthrorvrd_Form_Load(object sender, EventArgs e)
22
+        {
23
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
24
+            using (Transaction traction = database.TransactionManager.StartTransaction())
25
+            {
26
+                //存放所有图层名
27
+                List<string> alllayername = new List<string>();
28
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
29
+                foreach (ObjectId objid in layertable)
30
+                {
31
+                    LayerTableRecord layertablerecord = traction.GetObject(objid, OpenMode.ForRead) as LayerTableRecord;
32
+                    alllayername.Add(layertablerecord.Name);
33
+                }
34
+                alllayername.Sort();
35
+
36
+                for (int i = 0; i < alllayername.Count; i++)
37
+                {
38
+                    this.checkedListBox_dgx.Items.Add(alllayername[i]);
39
+                    this.checkedListBox_rvrd.Items.Add(alllayername[i]);
40
+                    this.checkedListBox_kz.Items.Add(alllayername[i]);
41
+                }
42
+            }
43
+        }
44
+
45
+        private void button_OK_Click(object sender, EventArgs e)
46
+        {
47
+            if (comboBox_blc.SelectedItem == null)
48
+            {
49
+                MessageBox.Show("请选择比例尺!", "提示");
50
+                return;
51
+            }
52
+            if (checkedListBox_dgx.CheckedItems.Count == 0)
53
+            {
54
+                MessageBox.Show("等高线图层不能为空!", "提示");
55
+                return;
56
+            }
57
+            if (checkedListBox_rvrd.CheckedItems.Count == 0&&
58
+                checkedListBox_kz.CheckedItems.Count == 0)
59
+            {
60
+                MessageBox.Show("河流道路房屋图层和坎子图层不能都为空!", "提示");
61
+                return;
62
+            }
63
+            List<string> dgx = new List<string>();//存放等高线
64
+            List<string> rvrd = new List<string>();//存放河流道路房屋图层
65
+            List<string> kz = new List<string>();//存放坎子图层
66
+
67
+            for (int i = 0; i < checkedListBox_dgx.CheckedItems.Count; i++)
68
+            {
69
+                dgx.Add(checkedListBox_dgx.CheckedItems[i].ToString());
70
+            }
71
+            if (checkedListBox_rvrd.CheckedItems.Count != 0)
72
+            {
73
+                for (int i = 0; i < checkedListBox_rvrd.CheckedItems.Count; i++)
74
+                {
75
+                    rvrd.Add(checkedListBox_rvrd.CheckedItems[i].ToString());
76
+                }
77
+                Dgxthrorvrd.rvrdlist = rvrd;
78
+            }
79
+            if (checkedListBox_kz.CheckedItems.Count != 0)
80
+            {
81
+                for (int i = 0; i < checkedListBox_kz.CheckedItems.Count; i++)
82
+                {
83
+                    kz.Add(checkedListBox_kz.CheckedItems[i].ToString());
84
+                }
85
+                Dgxthrorvrd.kzlist = kz;
86
+            }
87
+            Dgxthrorvrd.dgxlist = dgx;
88
+            Dgxthrorvrd.blc = Convert.ToInt32(comboBox_blc.SelectedItem.ToString().Split(':')[1]);
89
+            Dgxthrorvrd cutdgx = new Dgxthrorvrd();
90
+            cutdgx.Dgxbreak();
91
+            this.Close();
92
+        }
93
+
94
+
95
+    }
96
+}

+ 120
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Dgxthrorvrd_Form.resx 查看文件

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>

+ 3
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/FodyWeavers.xml 查看文件

@@ -0,0 +1,3 @@
1
+<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
2
+  <Costura />
3
+</Weavers>

+ 176
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/FodyWeavers.xsd 查看文件

@@ -0,0 +1,176 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+  <!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
4
+  <xs:element name="Weavers">
5
+    <xs:complexType>
6
+      <xs:all>
7
+        <xs:element name="Costura" minOccurs="0" maxOccurs="1">
8
+          <xs:complexType>
9
+            <xs:all>
10
+              <xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
11
+                <xs:annotation>
12
+                  <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
13
+                </xs:annotation>
14
+              </xs:element>
15
+              <xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
16
+                <xs:annotation>
17
+                  <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
18
+                </xs:annotation>
19
+              </xs:element>
20
+              <xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
21
+                <xs:annotation>
22
+                  <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
23
+                </xs:annotation>
24
+              </xs:element>
25
+              <xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
26
+                <xs:annotation>
27
+                  <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
28
+                </xs:annotation>
29
+              </xs:element>
30
+              <xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
31
+                <xs:annotation>
32
+                  <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
33
+                </xs:annotation>
34
+              </xs:element>
35
+              <xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
36
+                <xs:annotation>
37
+                  <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
38
+                </xs:annotation>
39
+              </xs:element>
40
+              <xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
41
+                <xs:annotation>
42
+                  <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
43
+                </xs:annotation>
44
+              </xs:element>
45
+              <xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
46
+                <xs:annotation>
47
+                  <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
48
+                </xs:annotation>
49
+              </xs:element>
50
+              <xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
51
+                <xs:annotation>
52
+                  <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
53
+                </xs:annotation>
54
+              </xs:element>
55
+              <xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
56
+                <xs:annotation>
57
+                  <xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
58
+                </xs:annotation>
59
+              </xs:element>
60
+            </xs:all>
61
+            <xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
62
+              <xs:annotation>
63
+                <xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
64
+              </xs:annotation>
65
+            </xs:attribute>
66
+            <xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
67
+              <xs:annotation>
68
+                <xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
69
+              </xs:annotation>
70
+            </xs:attribute>
71
+            <xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
72
+              <xs:annotation>
73
+                <xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
74
+              </xs:annotation>
75
+            </xs:attribute>
76
+            <xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
77
+              <xs:annotation>
78
+                <xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
79
+              </xs:annotation>
80
+            </xs:attribute>
81
+            <xs:attribute name="DisableCompression" type="xs:boolean">
82
+              <xs:annotation>
83
+                <xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
84
+              </xs:annotation>
85
+            </xs:attribute>
86
+            <xs:attribute name="DisableCleanup" type="xs:boolean">
87
+              <xs:annotation>
88
+                <xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
89
+              </xs:annotation>
90
+            </xs:attribute>
91
+            <xs:attribute name="DisableEventSubscription" type="xs:boolean">
92
+              <xs:annotation>
93
+                <xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
94
+              </xs:annotation>
95
+            </xs:attribute>
96
+            <xs:attribute name="LoadAtModuleInit" type="xs:boolean">
97
+              <xs:annotation>
98
+                <xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
99
+              </xs:annotation>
100
+            </xs:attribute>
101
+            <xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
102
+              <xs:annotation>
103
+                <xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
104
+              </xs:annotation>
105
+            </xs:attribute>
106
+            <xs:attribute name="ExcludeAssemblies" type="xs:string">
107
+              <xs:annotation>
108
+                <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
109
+              </xs:annotation>
110
+            </xs:attribute>
111
+            <xs:attribute name="IncludeAssemblies" type="xs:string">
112
+              <xs:annotation>
113
+                <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
114
+              </xs:annotation>
115
+            </xs:attribute>
116
+            <xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
117
+              <xs:annotation>
118
+                <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
119
+              </xs:annotation>
120
+            </xs:attribute>
121
+            <xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
122
+              <xs:annotation>
123
+                <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
124
+              </xs:annotation>
125
+            </xs:attribute>
126
+            <xs:attribute name="Unmanaged32Assemblies" type="xs:string">
127
+              <xs:annotation>
128
+                <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
129
+              </xs:annotation>
130
+            </xs:attribute>
131
+            <xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
132
+              <xs:annotation>
133
+                <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
134
+              </xs:annotation>
135
+            </xs:attribute>
136
+            <xs:attribute name="Unmanaged64Assemblies" type="xs:string">
137
+              <xs:annotation>
138
+                <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
139
+              </xs:annotation>
140
+            </xs:attribute>
141
+            <xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
142
+              <xs:annotation>
143
+                <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
144
+              </xs:annotation>
145
+            </xs:attribute>
146
+            <xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
147
+              <xs:annotation>
148
+                <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
149
+              </xs:annotation>
150
+            </xs:attribute>
151
+            <xs:attribute name="PreloadOrder" type="xs:string">
152
+              <xs:annotation>
153
+                <xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
154
+              </xs:annotation>
155
+            </xs:attribute>
156
+          </xs:complexType>
157
+        </xs:element>
158
+      </xs:all>
159
+      <xs:attribute name="VerifyAssembly" type="xs:boolean">
160
+        <xs:annotation>
161
+          <xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
162
+        </xs:annotation>
163
+      </xs:attribute>
164
+      <xs:attribute name="VerifyIgnoreCodes" type="xs:string">
165
+        <xs:annotation>
166
+          <xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
167
+        </xs:annotation>
168
+      </xs:attribute>
169
+      <xs:attribute name="GenerateXsd" type="xs:boolean">
170
+        <xs:annotation>
171
+          <xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
172
+        </xs:annotation>
173
+      </xs:attribute>
174
+    </xs:complexType>
175
+  </xs:element>
176
+</xs:schema>

+ 156
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.Designer.cs 查看文件

@@ -0,0 +1,156 @@
1
+
2
+namespace CutDGX
3
+{
4
+    partial class Form1
5
+    {
6
+        /// <summary>
7
+        /// 必需的设计器变量。
8
+        /// </summary>
9
+        private System.ComponentModel.IContainer components = null;
10
+
11
+        /// <summary>
12
+        /// 清理所有正在使用的资源。
13
+        /// </summary>
14
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
15
+        protected override void Dispose(bool disposing)
16
+        {
17
+            if (disposing && (components != null))
18
+            {
19
+                components.Dispose();
20
+            }
21
+            base.Dispose(disposing);
22
+        }
23
+
24
+        #region Windows 窗体设计器生成的代码
25
+
26
+        /// <summary>
27
+        /// 设计器支持所需的方法 - 不要修改
28
+        /// 使用代码编辑器修改此方法的内容。
29
+        /// </summary>
30
+        private void InitializeComponent()
31
+        {
32
+            this.label1 = new System.Windows.Forms.Label();
33
+            this.label2 = new System.Windows.Forms.Label();
34
+            this.label3 = new System.Windows.Forms.Label();
35
+            this.label4 = new System.Windows.Forms.Label();
36
+            this.comboBox_jqx = new System.Windows.Forms.ComboBox();
37
+            this.comboBox_sqx = new System.Windows.Forms.ComboBox();
38
+            this.textBox_cj = new System.Windows.Forms.TextBox();
39
+            this.textBox_ignore = new System.Windows.Forms.TextBox();
40
+            this.button_ok = new System.Windows.Forms.Button();
41
+            this.SuspendLayout();
42
+            // 
43
+            // label1
44
+            // 
45
+            this.label1.AutoSize = true;
46
+            this.label1.Location = new System.Drawing.Point(64, 48);
47
+            this.label1.Name = "label1";
48
+            this.label1.Size = new System.Drawing.Size(97, 15);
49
+            this.label1.TabIndex = 0;
50
+            this.label1.Text = "计曲线图层:";
51
+            // 
52
+            // label2
53
+            // 
54
+            this.label2.AutoSize = true;
55
+            this.label2.Location = new System.Drawing.Point(67, 114);
56
+            this.label2.Name = "label2";
57
+            this.label2.Size = new System.Drawing.Size(97, 15);
58
+            this.label2.TabIndex = 1;
59
+            this.label2.Text = "首曲线图层:";
60
+            // 
61
+            // label3
62
+            // 
63
+            this.label3.AutoSize = true;
64
+            this.label3.Location = new System.Drawing.Point(371, 48);
65
+            this.label3.Name = "label3";
66
+            this.label3.Size = new System.Drawing.Size(82, 15);
67
+            this.label3.TabIndex = 2;
68
+            this.label3.Text = "裁剪宽度:";
69
+            // 
70
+            // label4
71
+            // 
72
+            this.label4.AutoSize = true;
73
+            this.label4.Location = new System.Drawing.Point(359, 119);
74
+            this.label4.Name = "label4";
75
+            this.label4.Size = new System.Drawing.Size(97, 15);
76
+            this.label4.TabIndex = 3;
77
+            this.label4.Text = "可忽略阈值:";
78
+            // 
79
+            // comboBox_jqx
80
+            // 
81
+            this.comboBox_jqx.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
82
+            this.comboBox_jqx.FormattingEnabled = true;
83
+            this.comboBox_jqx.Location = new System.Drawing.Point(170, 45);
84
+            this.comboBox_jqx.Name = "comboBox_jqx";
85
+            this.comboBox_jqx.Size = new System.Drawing.Size(141, 23);
86
+            this.comboBox_jqx.TabIndex = 4;
87
+            // 
88
+            // comboBox_sqx
89
+            // 
90
+            this.comboBox_sqx.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
91
+            this.comboBox_sqx.FormattingEnabled = true;
92
+            this.comboBox_sqx.Location = new System.Drawing.Point(173, 111);
93
+            this.comboBox_sqx.Name = "comboBox_sqx";
94
+            this.comboBox_sqx.Size = new System.Drawing.Size(141, 23);
95
+            this.comboBox_sqx.TabIndex = 5;
96
+            // 
97
+            // textBox_cj
98
+            // 
99
+            this.textBox_cj.Location = new System.Drawing.Point(462, 45);
100
+            this.textBox_cj.Name = "textBox_cj";
101
+            this.textBox_cj.Size = new System.Drawing.Size(100, 25);
102
+            this.textBox_cj.TabIndex = 6;
103
+            // 
104
+            // textBox_ignore
105
+            // 
106
+            this.textBox_ignore.Location = new System.Drawing.Point(462, 109);
107
+            this.textBox_ignore.Name = "textBox_ignore";
108
+            this.textBox_ignore.Size = new System.Drawing.Size(100, 25);
109
+            this.textBox_ignore.TabIndex = 7;
110
+            // 
111
+            // button_ok
112
+            // 
113
+            this.button_ok.Location = new System.Drawing.Point(290, 169);
114
+            this.button_ok.Name = "button_ok";
115
+            this.button_ok.Size = new System.Drawing.Size(75, 33);
116
+            this.button_ok.TabIndex = 10;
117
+            this.button_ok.Text = "确 定";
118
+            this.button_ok.UseVisualStyleBackColor = true;
119
+            this.button_ok.Click += new System.EventHandler(this.button_ok_Click);
120
+            // 
121
+            // Form1
122
+            // 
123
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
124
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
125
+            this.ClientSize = new System.Drawing.Size(664, 228);
126
+            this.Controls.Add(this.button_ok);
127
+            this.Controls.Add(this.textBox_ignore);
128
+            this.Controls.Add(this.textBox_cj);
129
+            this.Controls.Add(this.comboBox_sqx);
130
+            this.Controls.Add(this.comboBox_jqx);
131
+            this.Controls.Add(this.label4);
132
+            this.Controls.Add(this.label3);
133
+            this.Controls.Add(this.label2);
134
+            this.Controls.Add(this.label1);
135
+            this.Name = "Form1";
136
+            this.Text = "等高线裁剪";
137
+            this.Load += new System.EventHandler(this.Form1_Load);
138
+            this.ResumeLayout(false);
139
+            this.PerformLayout();
140
+
141
+        }
142
+
143
+        #endregion
144
+
145
+        private System.Windows.Forms.Label label1;
146
+        private System.Windows.Forms.Label label2;
147
+        private System.Windows.Forms.Label label3;
148
+        private System.Windows.Forms.Label label4;
149
+        private System.Windows.Forms.ComboBox comboBox_jqx;
150
+        private System.Windows.Forms.ComboBox comboBox_sqx;
151
+        private System.Windows.Forms.TextBox textBox_cj;
152
+        private System.Windows.Forms.TextBox textBox_ignore;
153
+        private System.Windows.Forms.Button button_ok;
154
+    }
155
+}
156
+

+ 96
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.cs 查看文件

@@ -0,0 +1,96 @@
1
+using Autodesk.AutoCAD.DatabaseServices;
2
+using System;
3
+using System.Collections.Generic;
4
+using System.ComponentModel;
5
+using System.Data;
6
+using System.Drawing;
7
+using System.Linq;
8
+using System.Text;
9
+using System.Threading.Tasks;
10
+using System.Windows.Forms;
11
+
12
+namespace CutDGX
13
+{
14
+    public partial class Form1 : Form
15
+    {
16
+        public Form1()
17
+        {
18
+            InitializeComponent();
19
+        }
20
+
21
+        private void Form1_Load(object sender, EventArgs e)
22
+        {
23
+            this.comboBox_jqx.DropDownStyle = ComboBoxStyle.DropDownList;
24
+            this.comboBox_sqx.DropDownStyle = ComboBoxStyle.DropDownList;
25
+
26
+            //自动填充下拉框
27
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
28
+            using (Transaction traction = database.TransactionManager.StartTransaction())
29
+            {
30
+                //存放所有图层名
31
+                List<string> alllayername = new List<string>();
32
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
33
+                foreach (ObjectId objid in layertable)
34
+                {
35
+                    LayerTableRecord layertablerecord = traction.GetObject(objid, OpenMode.ForRead) as LayerTableRecord;
36
+                    alllayername.Add(layertablerecord.Name);
37
+                }
38
+
39
+                alllayername.Sort();
40
+
41
+                for (int i = 0; i < alllayername.Count; i++)
42
+                {
43
+                    this.comboBox_jqx.Items.Add(alllayername[i]);
44
+                    this.comboBox_sqx.Items.Add(alllayername[i]);
45
+                }
46
+
47
+                if (alllayername.Contains("8110"))
48
+                {
49
+                    int index = alllayername.IndexOf("8110");
50
+                    this.comboBox_sqx.SelectedIndex = index;
51
+                }
52
+                if (alllayername.Contains("8120"))
53
+                {
54
+                    int index = alllayername.IndexOf("8120");
55
+                    this.comboBox_jqx.SelectedIndex = index;
56
+                }
57
+                traction.Commit();
58
+            }
59
+        }
60
+
61
+        private void button_ok_Click(object sender, EventArgs e)
62
+        {
63
+            if (comboBox_jqx.Text == "")
64
+                MessageBox.Show("请选择计曲线图层");
65
+            if (comboBox_sqx.Text == "")
66
+                MessageBox.Show("请选择首曲线图层");
67
+            if (textBox_cj.Text == "")
68
+                MessageBox.Show("请输入裁剪宽度");
69
+            //if (textBox_dgj.Text == "")
70
+            //    MessageBox.Show("请输入等高距");
71
+            if (textBox_ignore.Text == "")
72
+                MessageBox.Show("请输入可忽略阈值");
73
+            if(!double.TryParse(textBox_cj.Text, out double doubleResult1))
74
+            {
75
+                MessageBox.Show("裁剪宽度必须为数字");
76
+            }
77
+            //if (!double.TryParse(textBox_dgj.Text, out double doubleResult2))
78
+            //{
79
+            //    MessageBox.Show("等高距必须为数字");
80
+            //}
81
+            if (!double.TryParse(textBox_ignore.Text, out double doubleResult3))
82
+            {
83
+                MessageBox.Show("可忽略阈值必须为数字");
84
+            }
85
+
86
+            string jqx = comboBox_jqx.Text;
87
+            string sqx = comboBox_sqx.Text;
88
+            double cj = double.Parse(textBox_cj.Text);
89
+            //double dgj = double.Parse(textBox_dgj.Text);
90
+            double ignore = double.Parse(textBox_ignore.Text);
91
+            Class1 ct = new Class1();
92
+            ct.CutDgx(jqx, sqx, cj, ignore);
93
+            this.Close();
94
+        }
95
+    }
96
+}

+ 120
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Form1.resx 查看文件

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>

+ 204
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/MainClass.cs 查看文件

@@ -0,0 +1,204 @@
1
+using Autodesk.AutoCAD.ApplicationServices;
2
+using Autodesk.AutoCAD.EditorInput;
3
+using Autodesk.AutoCAD.Runtime;
4
+using System;
5
+using System.Collections.Generic;
6
+using System.IO;
7
+using System.Linq;
8
+using System.Management;
9
+using System.Security.Cryptography;
10
+using System.Text;
11
+using System.Threading.Tasks;
12
+
13
+[assembly: ExtensionApplication(typeof(CutDGX.MainClass))]
14
+namespace CutDGX
15
+{
16
+    public class MainClass : IExtensionApplication
17
+    {
18
+        public void Initialize()
19
+        {
20
+            Menu mn = new Menu();
21
+            mn.AddMenu();
22
+        }
23
+
24
+        public void Terminate()
25
+        {
26
+        }
27
+
28
+        public static string Flag = "";      //标记不同命令
29
+        public int num = 1; //0超过期限,-1空
30
+        public int slf_flag = 0;
31
+
32
+        //加密
33
+        private static string Encrypt(string str, string key)
34
+        {
35
+            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
36
+            byte[] inputByteArray = Encoding.Default.GetBytes(str);
37
+            des.Key = ASCIIEncoding.ASCII.GetBytes(key);// 密钥
38
+            des.IV = ASCIIEncoding.ASCII.GetBytes(key);// 初始化向量
39
+            MemoryStream ms = new MemoryStream();
40
+            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
41
+            cs.Write(inputByteArray, 0, inputByteArray.Length);
42
+            cs.FlushFinalBlock();
43
+            var retB = Convert.ToBase64String(ms.ToArray());
44
+            return retB;
45
+        }
46
+
47
+        //解密
48
+        private static string Decrypt(string pToDecrypt, string key)
49
+        {
50
+            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
51
+            byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
52
+            des.Key = ASCIIEncoding.ASCII.GetBytes(key);
53
+            des.IV = ASCIIEncoding.ASCII.GetBytes(key);
54
+            MemoryStream ms = new MemoryStream();
55
+            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
56
+            cs.Write(inputByteArray, 0, inputByteArray.Length);
57
+            // 如果两次密钥不一样,这一步可能会引发异常
58
+            cs.FlushFinalBlock();
59
+            return System.Text.Encoding.Default.GetString(ms.ToArray());
60
+        }
61
+
62
+        //日期加密并放到注册表中
63
+        private void AddRecord()
64
+        {
65
+            string byte2string = null;
66
+            ManagementClass mc = new ManagementClass("Win32_Processor");
67
+            ManagementObjectCollection moc = mc.GetInstances();
68
+            string strCpuID = null;
69
+            foreach (ManagementObject mo in moc)
70
+            {
71
+                strCpuID = mo.Properties["ProcessorId"].Value.ToString();
72
+                break;
73
+            }
74
+            byte[] from = Encoding.Default.GetBytes(strCpuID);
75
+            MD5CryptoServiceProvider makemd5 = new MD5CryptoServiceProvider();
76
+            byte[] target = makemd5.ComputeHash(from);
77
+            for (int i = 0; i < target.Length; i++)
78
+            {
79
+                byte2string += target[i].ToString("x");
80
+            }
81
+
82
+            Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
83
+            Editor ed = acDoc.Editor;
84
+            PromptStringOptions options = new PromptStringOptions("机器码:" + byte2string + "\n输入注册码:");
85
+            options.AllowSpaces = true;
86
+            options.UseDefaultValue = true;
87
+            options.DefaultValue = "";
88
+
89
+            string encrypted = Encrypt(byte2string, "vnf4s3ru");
90
+            string userInput = ed.GetString(options).StringResult;
91
+            if (userInput == "")
92
+            {
93
+                num = -1;
94
+                return;
95
+            }
96
+            string jm = Decrypt(userInput, "vnf4s3ru");
97
+            string zcm = jm.Split(',')[0];
98
+            string zcm_encrypted = Encrypt(zcm, "vnf4s3ru");
99
+            string work_days = jm.Split(',')[1];
100
+            if (zcm_encrypted == encrypted)
101
+            {
102
+                string dt = DateTime.Now.ToString().Trim();
103
+                dt = dt + ',' + work_days;
104
+                string dt_ecpt = Encrypt(dt, "vnf4s3ru");
105
+                Registry.CurrentUser.OpenSubKey("Software", true).CreateSubKey("CADplugins").CreateSubKey("Register.INI").CreateSubKey(dt_ecpt);
106
+                System.Windows.Forms.MessageBox.Show("注册成功!");
107
+            }
108
+            else
109
+            {
110
+                System.Windows.Forms.MessageBox.Show("注册失败!\n zcm_encrypted =" + zcm_encrypted.ToString() + "\nencrypted=" + encrypted.ToString() + "\nzcm=" + zcm.ToString() + "\njm=" + jm.ToString());
111
+                System.Windows.Forms.MessageBox.Show("注册失败!");
112
+                num = -1;
113
+            }
114
+        }
115
+
116
+        public void Verify()
117
+        {
118
+            RegistryKey retkey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("CADplugins").CreateSubKey("Register.INI");
119
+            //判断注册表中相应位置的subkey数量,如果为零的话则需要注册
120
+            if (retkey.SubKeyCount == 0)
121
+            {
122
+                AddRecord();
123
+            }
124
+            //如果不为零,判断日期是否在期限内
125
+            else
126
+            {
127
+                //转换为日期格式后检查当前日期之间和输入注册码的日期之间的间隔
128
+                string encrypted = retkey.GetSubKeyNames()[0];
129
+                string mw = Decrypt(encrypted, "vnf4s3ru");
130
+                string dt = mw.Split(',')[0];
131
+                int wkdays = Convert.ToInt32(mw.Split(',')[1]);
132
+                TimeSpan ts = DateTime.Now - DateTime.Parse(dt);
133
+                //如果超过期限,则删除所有subkey,显示注册码窗口
134
+                if (ts.Days > wkdays || ts.Days < 0)
135
+                {
136
+                    System.Windows.Forms.MessageBox.Show("超出有效期,请重新注册!");
137
+                    num = 0;
138
+                    foreach (string strRNum in retkey.GetSubKeyNames())
139
+                    {
140
+                        retkey.DeleteSubKey(strRNum);
141
+                    }
142
+                    AddRecord();
143
+                }
144
+                else
145
+                {
146
+                    num = 1;
147
+                }
148
+            }
149
+        }
150
+
151
+        //等高线裁剪
152
+        [CommandMethod("DENSECUT")]
153
+        public void DENSECUT()
154
+        {
155
+            Verify();
156
+
157
+            if (num == 1)
158
+            {
159
+                Form1 Frm = new Form1();
160
+                Frm.Show();
161
+            }
162
+        }
163
+
164
+        //过河流道路等高线裁剪
165
+        [CommandMethod("CROSSCUT")]
166
+        public void CROSSCUT()
167
+        {
168
+            Verify();
169
+
170
+            if (num == 1)
171
+            {
172
+                Dgxthrorvrd_Form Frm = new Dgxthrorvrd_Form();
173
+                Frm.Show();
174
+            }
175
+        }
176
+
177
+        //图幅接边
178
+        [CommandMethod("Joinedge")]
179
+        public void Joinedge()
180
+        {
181
+            Verify();
182
+
183
+            if (num == 1)
184
+            {
185
+                joinedge Frm = new joinedge();
186
+                Frm.Show();
187
+            }
188
+        }
189
+
190
+        //按范围裁剪图框
191
+        [CommandMethod("TKCut")]
192
+        public void TKsCut()
193
+        {
194
+            Verify();
195
+
196
+            if (num == 1)
197
+            {
198
+                TKCuts tc = new TKCuts();
199
+                tc.Show();
200
+            }
201
+        }
202
+
203
+    }
204
+}

+ 44
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Menu.cs 查看文件

@@ -0,0 +1,44 @@
1
+using Autodesk.AutoCAD.ApplicationServices;
2
+using Autodesk.AutoCAD.Interop;
3
+using System;
4
+using System.Collections.Generic;
5
+using System.Linq;
6
+using System.Text;
7
+using System.Threading.Tasks;
8
+
9
+namespace CutDGX
10
+{
11
+    class Menu
12
+    {
13
+        public void AddMenu()
14
+        {
15
+            //COM方式获取AutoCAD应用程序对象
16
+            AcadApplication acadApp = (AcadApplication)Application.AcadApplication;
17
+            //为AutoCAD添加一个新的菜单,并设置标题为"地形图辅助"
18
+            AcadPopupMenu pm = acadApp.MenuGroups.Item(0).Menus.Add("裁剪和接边");
19
+            //声明一个AutoCAD弹出菜单项,用于获取添加的菜单项对象
20
+            AcadPopupMenuItem pmi;
21
+
22
+
23
+            //在新建的菜单中添加一个名为"点线矛盾"的菜单项
24
+            pmi = pm.AddMenuItem(pm.Count + 1, "等高线裁剪", "DENSECUT ");
25
+            //设置状态栏提示信息
26
+            pmi.HelpString = "等高线裁剪";
27
+
28
+            pmi = pm.AddMenuItem(pm.Count + 1, "过河流道路等高线裁剪", "CROSSCUT ");
29
+            pmi.HelpString = "跨房屋道路河流坎子等高线裁剪";
30
+
31
+            pmi = pm.AddMenuItem(pm.Count + 1, "图幅接边", "Joinedge ");
32
+            pmi.HelpString = "图幅接边";
33
+
34
+            pmi = pm.AddMenuItem(pm.Count + 1, "按范围裁剪图框", "TKCut ");
35
+            pmi.HelpString = "按范围裁剪图框";
36
+            //添加一个分隔条以区分不同类型的命令
37
+            pm.AddSeparator(pm.Count + 1);
38
+
39
+
40
+            //将定义的菜单显示在AutoCAD菜单栏的最后
41
+            pm.InsertInMenuBar(acadApp.MenuBar.Count + 1);
42
+        }
43
+    }
44
+}

+ 36
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/Properties/AssemblyInfo.cs 查看文件

@@ -0,0 +1,36 @@
1
+using System.Reflection;
2
+using System.Runtime.CompilerServices;
3
+using System.Runtime.InteropServices;
4
+
5
+// 有关程序集的一般信息由以下
6
+// 控制。更改这些特性值可修改
7
+// 与程序集关联的信息。
8
+[assembly: AssemblyTitle("CutDGX")]
9
+[assembly: AssemblyDescription("")]
10
+[assembly: AssemblyConfiguration("")]
11
+[assembly: AssemblyCompany("")]
12
+[assembly: AssemblyProduct("CutDGX")]
13
+[assembly: AssemblyCopyright("Copyright ©  2025")]
14
+[assembly: AssemblyTrademark("")]
15
+[assembly: AssemblyCulture("")]
16
+
17
+// 将 ComVisible 设置为 false 会使此程序集中的类型
18
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
19
+//请将此类型的 ComVisible 特性设置为 true。
20
+[assembly: ComVisible(false)]
21
+
22
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
23
+[assembly: Guid("d2bcaf31-33bf-4dc1-a711-b545ba172963")]
24
+
25
+// 程序集的版本信息由下列四个值组成: 
26
+//
27
+//      主版本
28
+//      次版本
29
+//      生成号
30
+//      修订号
31
+//
32
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
33
+//通过使用 "*",如下所示:
34
+// [assembly: AssemblyVersion("1.0.*")]
35
+[assembly: AssemblyVersion("1.0.0.0")]
36
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 185
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCut.cs 查看文件

@@ -0,0 +1,185 @@
1
+using Autodesk.AutoCAD.ApplicationServices;
2
+using Autodesk.AutoCAD.DatabaseServices;
3
+using Autodesk.AutoCAD.EditorInput;
4
+using Autodesk.AutoCAD.Geometry;
5
+using System;
6
+using System.Collections.Generic;
7
+using System.Linq;
8
+using System.Text;
9
+using System.Threading.Tasks;
10
+
11
+namespace CutDGX
12
+{
13
+    class TKCut
14
+    {
15
+        public void cut()
16
+        {
17
+            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
18
+            Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
19
+
20
+            // 选择多个图框
21
+            List<ObjectId> TKIds = Sele(ed, "选择图框: ");
22
+            // 选择范围线
23
+            List<ObjectId> boundaryIds = Sele(ed, "选择范围线: ");
24
+            ed.WriteMessage($"\n选择了 {TKIds.Count} 个图框和 {boundaryIds.Count} 条范围线");
25
+
26
+            dynamic acadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
27
+            acadApp.ZoomExtents();
28
+            foreach (var item in boundaryIds)
29
+            {
30
+                Point3dCollection ptcoll = new Point3dCollection();
31
+                using (Transaction trans = db.TransactionManager.StartTransaction())
32
+                {
33
+                    Entity ent = trans.GetObject(item, OpenMode.ForRead) as Entity;
34
+                    Entity tk = trans.GetObject(TKIds[0], OpenMode.ForRead) as Entity;
35
+                    string lyr = tk.Layer;
36
+                    string fw_lyr = ent.Layer;
37
+                    if (!(ent is Polyline))
38
+                    {
39
+                        ed.WriteMessage("范围线必须是多段线");
40
+                        return;
41
+                    }
42
+                    else
43
+                    {
44
+                        Polyline pl = (Polyline)ent;
45
+                        for (int i = 0; i < pl.NumberOfVertices; i++)
46
+                            ptcoll.Add(pl.GetPoint3dAt(i));
47
+                        TypedValue[] value = new TypedValue[]
48
+                        {
49
+                            new TypedValue((int)DxfCode.LayerName,lyr)
50
+                        };
51
+                        SelectionFilter filter = new SelectionFilter(value);
52
+                        PromptSelectionResult psr = ed.SelectCrossingPolygon(ptcoll,filter);
53
+                        if (psr.Status == PromptStatus.OK)
54
+                        {
55
+                            SelectionSet ss = psr.Value;
56
+                            List<ObjectId> idcoll = ss.GetObjectIds().ToList();
57
+                            if(!haslayername("范围内图框"))
58
+                                creatlayer("范围内图框");
59
+                            foreach (var selected_id in idcoll)
60
+                            {
61
+                                if(TKIds.Contains(selected_id))
62
+                                {
63
+                                    Entity selected_tk = trans.GetObject(selected_id, OpenMode.ForWrite) as Entity;
64
+                                    if (selected_tk.Layer != fw_lyr)
65
+                                        selected_tk.Layer = "范围内图框";
66
+                                }
67
+                            }
68
+                        }
69
+                    }
70
+                    trans.Commit();
71
+                }
72
+            }
73
+
74
+        }
75
+
76
+        private List<ObjectId> Sele(Editor ed ,string wd)
77
+        {
78
+            List<ObjectId> Ids=new List<ObjectId>();
79
+            PromptSelectionOptions SelOpts = new PromptSelectionOptions();
80
+            SelOpts.MessageForAdding = "\n"+ wd;
81
+
82
+            // 设置选择过滤器
83
+            TypedValue[] FilterList = new TypedValue[] {
84
+            new TypedValue((int)DxfCode.Start, "LWPOLYLINE")};
85
+            SelectionFilter Filter = new SelectionFilter(FilterList);
86
+
87
+            PromptSelectionResult SelRes = ed.GetSelection(SelOpts, Filter);
88
+            if (SelRes.Status != PromptStatus.OK)
89
+                return Ids;
90
+            Ids = SelRes.Value.GetObjectIds().ToList();
91
+            return Ids;
92
+        }
93
+
94
+        /// <summary>
95
+        /// 创建标记层
96
+        /// </summary>
97
+        /// <param name="layername">要创建的图层的名字</param>
98
+        /// <param name="colo">RGB三原色</param>
99
+        public void creatlayer(string layername)
100
+        {
101
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
102
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
103
+            Transaction traction = database.TransactionManager.StartTransaction();
104
+            LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;
105
+            try
106
+            {
107
+                LayerTableRecord layertablerecord = new LayerTableRecord();
108
+                layertablerecord.Name = layername;//设置层表记录的名字
109
+                //layertablerecord.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(colo.red, colo.green, colo.blue);//为层表记录赋颜色紫色
110
+                //layertablerecord.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Magenta);
111
+
112
+                lt.Add(layertablerecord);
113
+                traction.AddNewlyCreatedDBObject(layertablerecord, true);
114
+                traction.Commit();
115
+            }
116
+            catch (Autodesk.AutoCAD.Runtime.Exception)
117
+            {
118
+                traction.Abort();
119
+            }
120
+            finally
121
+            {
122
+                traction.Dispose();
123
+                doclock.Dispose();
124
+            }
125
+        }
126
+
127
+
128
+        /// <summary>
129
+        /// 将指定图层设置为当前图层
130
+        /// </summary>
131
+        /// <param name="layername">要设置为当前图层的图层名字</param>
132
+        public void movelayertofront(string layername)
133
+        {
134
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
135
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
136
+            Transaction traction = database.TransactionManager.StartTransaction();
137
+            try
138
+            {
139
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
140
+                database.Clayer = layertable[layername];//把图层选为当前图层
141
+                traction.Commit();
142
+            }
143
+            catch (Autodesk.AutoCAD.Runtime.Exception)
144
+            {
145
+                traction.Abort();
146
+            }
147
+            finally
148
+            {
149
+                traction.Dispose();
150
+                doclock.Dispose();
151
+            }
152
+        }
153
+
154
+
155
+
156
+        /// <summary>
157
+        /// 判断所命图层名是否已经存在
158
+        /// </summary>
159
+        /// <param name="layername">要判断的图层名字</param>
160
+        /// <returns>返回true表示在层表中存在要判断的图层名,
161
+        /// 返回false表示层表中不存在判断的图层名</returns>
162
+        public bool haslayername(string layername)
163
+        {
164
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
165
+            using (Transaction traction = database.TransactionManager.StartTransaction())
166
+            {
167
+                LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
168
+
169
+                if (lt.Has(layername))
170
+                {
171
+                    traction.Commit();
172
+                    return true;
173
+                }
174
+                else
175
+                {
176
+                    traction.Commit();
177
+                    return false;
178
+                }
179
+            }
180
+
181
+
182
+
183
+        }
184
+    }
185
+}

+ 111
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.Designer.cs 查看文件

@@ -0,0 +1,111 @@
1
+
2
+namespace CutDGX
3
+{
4
+    partial class TKCuts
5
+    {
6
+        /// <summary>
7
+        /// Required designer variable.
8
+        /// </summary>
9
+        private System.ComponentModel.IContainer components = null;
10
+
11
+        /// <summary>
12
+        /// Clean up any resources being used.
13
+        /// </summary>
14
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
15
+        protected override void Dispose(bool disposing)
16
+        {
17
+            if (disposing && (components != null))
18
+            {
19
+                components.Dispose();
20
+            }
21
+            base.Dispose(disposing);
22
+        }
23
+
24
+        #region Windows Form Designer generated code
25
+
26
+        /// <summary>
27
+        /// Required method for Designer support - do not modify
28
+        /// the contents of this method with the code editor.
29
+        /// </summary>
30
+        private void InitializeComponent()
31
+        {
32
+            this.label1 = new System.Windows.Forms.Label();
33
+            this.comboBox_tk = new System.Windows.Forms.ComboBox();
34
+            this.label2 = new System.Windows.Forms.Label();
35
+            this.comboBox_fwx = new System.Windows.Forms.ComboBox();
36
+            this.button1 = new System.Windows.Forms.Button();
37
+            this.SuspendLayout();
38
+            // 
39
+            // label1
40
+            // 
41
+            this.label1.AutoSize = true;
42
+            this.label1.Location = new System.Drawing.Point(68, 42);
43
+            this.label1.Name = "label1";
44
+            this.label1.Size = new System.Drawing.Size(112, 15);
45
+            this.label1.TabIndex = 0;
46
+            this.label1.Text = "图框所在图层:";
47
+            // 
48
+            // comboBox_tk
49
+            // 
50
+            this.comboBox_tk.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
51
+            this.comboBox_tk.FormattingEnabled = true;
52
+            this.comboBox_tk.Location = new System.Drawing.Point(186, 39);
53
+            this.comboBox_tk.Name = "comboBox_tk";
54
+            this.comboBox_tk.Size = new System.Drawing.Size(142, 23);
55
+            this.comboBox_tk.TabIndex = 1;
56
+            // 
57
+            // label2
58
+            // 
59
+            this.label2.AutoSize = true;
60
+            this.label2.Location = new System.Drawing.Point(53, 102);
61
+            this.label2.Name = "label2";
62
+            this.label2.Size = new System.Drawing.Size(127, 15);
63
+            this.label2.TabIndex = 2;
64
+            this.label2.Text = "范围线所在图层:";
65
+            // 
66
+            // comboBox_fwx
67
+            // 
68
+            this.comboBox_fwx.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
69
+            this.comboBox_fwx.FormattingEnabled = true;
70
+            this.comboBox_fwx.Location = new System.Drawing.Point(186, 99);
71
+            this.comboBox_fwx.Name = "comboBox_fwx";
72
+            this.comboBox_fwx.Size = new System.Drawing.Size(142, 23);
73
+            this.comboBox_fwx.TabIndex = 3;
74
+            // 
75
+            // button1
76
+            // 
77
+            this.button1.Location = new System.Drawing.Point(176, 155);
78
+            this.button1.Name = "button1";
79
+            this.button1.Size = new System.Drawing.Size(75, 30);
80
+            this.button1.TabIndex = 4;
81
+            this.button1.Text = "确 定";
82
+            this.button1.UseVisualStyleBackColor = true;
83
+            this.button1.Click += new System.EventHandler(this.button1_Click);
84
+            // 
85
+            // TKCuts
86
+            // 
87
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
88
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
89
+            this.ClientSize = new System.Drawing.Size(442, 208);
90
+            this.Controls.Add(this.button1);
91
+            this.Controls.Add(this.comboBox_fwx);
92
+            this.Controls.Add(this.label2);
93
+            this.Controls.Add(this.comboBox_tk);
94
+            this.Controls.Add(this.label1);
95
+            this.Name = "TKCuts";
96
+            this.Text = "图框裁剪";
97
+            this.Load += new System.EventHandler(this.TKCuts_Load);
98
+            this.ResumeLayout(false);
99
+            this.PerformLayout();
100
+
101
+        }
102
+
103
+        #endregion
104
+
105
+        private System.Windows.Forms.Label label1;
106
+        private System.Windows.Forms.ComboBox comboBox_tk;
107
+        private System.Windows.Forms.Label label2;
108
+        private System.Windows.Forms.ComboBox comboBox_fwx;
109
+        private System.Windows.Forms.Button button1;
110
+    }
111
+}

+ 271
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.cs 查看文件

@@ -0,0 +1,271 @@
1
+using Autodesk.AutoCAD.ApplicationServices;
2
+using Autodesk.AutoCAD.DatabaseServices;
3
+using Autodesk.AutoCAD.EditorInput;
4
+using Autodesk.AutoCAD.Geometry;
5
+using System;
6
+using System.Collections.Generic;
7
+using System.ComponentModel;
8
+using System.Data;
9
+using System.Drawing;
10
+using System.Linq;
11
+using System.Text;
12
+using System.Threading.Tasks;
13
+using System.Windows.Forms;
14
+
15
+namespace CutDGX
16
+{
17
+    public partial class TKCuts : Form
18
+    {
19
+        public TKCuts()
20
+        {
21
+            InitializeComponent();
22
+        }
23
+
24
+        private void TKCuts_Load(object sender, EventArgs e)
25
+        {
26
+            //自动填充下拉框
27
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
28
+            using (Transaction traction = database.TransactionManager.StartTransaction())
29
+            {
30
+                //存放所有图层名
31
+                List<string> alllayername = new List<string>();
32
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
33
+                foreach (ObjectId objid in layertable)
34
+                {
35
+                    LayerTableRecord layertablerecord = traction.GetObject(objid, OpenMode.ForRead) as LayerTableRecord;
36
+                    alllayername.Add(layertablerecord.Name);
37
+                }
38
+
39
+                alllayername.Sort();
40
+
41
+                for (int i = 0; i < alllayername.Count; i++)
42
+                {
43
+                    this.comboBox_tk.Items.Add(alllayername[i]);
44
+                    this.comboBox_fwx.Items.Add(alllayername[i]);
45
+                }
46
+
47
+                if (alllayername.Contains("TK"))
48
+                {
49
+                    int index = alllayername.IndexOf("TK");
50
+                    this.comboBox_tk.SelectedIndex = index;
51
+                }
52
+                traction.Commit();
53
+            }
54
+        }
55
+
56
+        private void button1_Click(object sender, EventArgs e)
57
+        {
58
+            if (comboBox_tk.Text == "")
59
+            {
60
+                MessageBox.Show("请选择分幅图框所在图层");
61
+                return;
62
+            }
63
+            if (comboBox_fwx.Text == "")
64
+            {
65
+                MessageBox.Show("请选择范围线所在图层");
66
+                return;
67
+            }
68
+            string tklyr = comboBox_tk.Text;
69
+            string fwxlyr = comboBox_fwx.Text;
70
+            cut(tklyr, fwxlyr);
71
+            this.Close();
72
+            MessageBox.Show("裁剪完成。");
73
+        }
74
+
75
+        public void cut(string tklyr, string fwxlyr)
76
+        {
77
+            dynamic acadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
78
+            acadApp.ZoomExtents();
79
+            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
80
+            Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
81
+
82
+            // 图框id
83
+            List<ObjectId> TKIds = new List<ObjectId>();
84
+            // 范围线id
85
+            List<ObjectId> boundaryIds = new List<ObjectId>();
86
+
87
+            //获取分幅图框
88
+            TypedValue[] typedvalue = new TypedValue[2];
89
+            typedvalue.SetValue(new TypedValue((int)DxfCode.LayerName, tklyr), 0);
90
+            typedvalue.SetValue(new TypedValue((int)DxfCode.Start, "Polyline,LWPolyline"), 1);
91
+            SelectionFilter selectionfilter = new SelectionFilter(typedvalue);
92
+            PromptSelectionResult psr0 = ed.SelectAll(selectionfilter);
93
+            if (psr0.Status == PromptStatus.OK)
94
+            {
95
+                SelectionSet selectionset = psr0.Value;
96
+                ObjectId[] obj = new ObjectId[selectionset.Count];
97
+                TKIds = selectionset.GetObjectIds().ToList();
98
+            }
99
+            //获取范围线
100
+            TypedValue[] typedvalue1 = new TypedValue[2];
101
+            typedvalue1.SetValue(new TypedValue((int)DxfCode.LayerName, fwxlyr), 0);
102
+            typedvalue1.SetValue(new TypedValue((int)DxfCode.Start, "Polyline,LWPolyline"), 1);
103
+            SelectionFilter selectionfilter1 = new SelectionFilter(typedvalue1);
104
+            PromptSelectionResult psr1 = ed.SelectAll(selectionfilter1);
105
+            if (psr1.Status == PromptStatus.OK)
106
+            {
107
+                SelectionSet selectionset = psr1.Value;
108
+                ObjectId[] obj = new ObjectId[selectionset.Count];
109
+                boundaryIds = selectionset.GetObjectIds().ToList();
110
+            }
111
+
112
+            foreach (var item in boundaryIds)
113
+            {
114
+                Point3dCollection ptcoll = new Point3dCollection();
115
+                DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
116
+                using (Transaction trans = db.TransactionManager.StartTransaction())
117
+                {
118
+                    Entity ent = trans.GetObject(item, OpenMode.ForRead) as Entity;
119
+                    Entity tk = trans.GetObject(TKIds[0], OpenMode.ForRead) as Entity;
120
+                    string lyr = tk.Layer;
121
+                    string fw_lyr = ent.Layer;
122
+                    if (!(ent is Polyline))
123
+                    {
124
+                        ed.WriteMessage("范围线必须是多段线");
125
+                        return;
126
+                    }
127
+                    else
128
+                    {
129
+                        Polyline pl = (Polyline)ent;
130
+                        for (int i = 0; i < pl.NumberOfVertices; i++)
131
+                            ptcoll.Add(pl.GetPoint3dAt(i));
132
+                        TypedValue[] value = new TypedValue[]
133
+                        {
134
+                            new TypedValue((int)DxfCode.LayerName,lyr)
135
+                        };
136
+                        SelectionFilter filter = new SelectionFilter(value);
137
+                        PromptSelectionResult psr = ed.SelectCrossingPolygon(ptcoll, filter);
138
+                        if (psr.Status == PromptStatus.OK)
139
+                        {
140
+                            SelectionSet ss = psr.Value;
141
+                            List<ObjectId> idcoll = ss.GetObjectIds().ToList();
142
+                            if (!haslayername("范围内图框"))
143
+                                creatlayer("范围内图框");
144
+                            foreach (var selected_id in idcoll)
145
+                            {
146
+                                if (TKIds.Contains(selected_id))
147
+                                {
148
+                                    Entity selected_tk = trans.GetObject(selected_id, OpenMode.ForWrite) as Entity;
149
+                                    if (selected_tk.Layer != fw_lyr)
150
+                                        selected_tk.Layer = "范围内图框";
151
+                                }
152
+                            }
153
+                        }
154
+                    }
155
+                    trans.Commit();
156
+                }
157
+                doclock.Dispose();
158
+            }
159
+
160
+        }
161
+
162
+        private List<ObjectId> Sele(Editor ed, string wd)
163
+        {
164
+            List<ObjectId> Ids = new List<ObjectId>();
165
+            PromptSelectionOptions SelOpts = new PromptSelectionOptions();
166
+            SelOpts.MessageForAdding = "\n" + wd;
167
+
168
+            // 设置选择过滤器
169
+            TypedValue[] FilterList = new TypedValue[] {
170
+            new TypedValue((int)DxfCode.Start, "LWPOLYLINE")};
171
+            SelectionFilter Filter = new SelectionFilter(FilterList);
172
+
173
+            PromptSelectionResult SelRes = ed.GetSelection(SelOpts, Filter);
174
+            if (SelRes.Status != PromptStatus.OK)
175
+                return Ids;
176
+            Ids = SelRes.Value.GetObjectIds().ToList();
177
+            return Ids;
178
+        }
179
+
180
+        /// <summary>
181
+        /// 创建标记层
182
+        /// </summary>
183
+        /// <param name="layername">要创建的图层的名字</param>
184
+        /// <param name="colo">RGB三原色</param>
185
+        public void creatlayer(string layername)
186
+        {
187
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
188
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
189
+            Transaction traction = database.TransactionManager.StartTransaction();
190
+            LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForWrite) as LayerTable;
191
+            try
192
+            {
193
+                LayerTableRecord layertablerecord = new LayerTableRecord();
194
+                layertablerecord.Name = layername;//设置层表记录的名字
195
+                //layertablerecord.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(colo.red, colo.green, colo.blue);//为层表记录赋颜色紫色
196
+                //layertablerecord.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Magenta);
197
+
198
+                lt.Add(layertablerecord);
199
+                traction.AddNewlyCreatedDBObject(layertablerecord, true);
200
+                traction.Commit();
201
+            }
202
+            catch (Autodesk.AutoCAD.Runtime.Exception)
203
+            {
204
+                traction.Abort();
205
+            }
206
+            finally
207
+            {
208
+                traction.Dispose();
209
+                doclock.Dispose();
210
+            }
211
+        }
212
+
213
+
214
+        /// <summary>
215
+        /// 将指定图层设置为当前图层
216
+        /// </summary>
217
+        /// <param name="layername">要设置为当前图层的图层名字</param>
218
+        public void movelayertofront(string layername)
219
+        {
220
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
221
+            DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
222
+            Transaction traction = database.TransactionManager.StartTransaction();
223
+            try
224
+            {
225
+                LayerTable layertable = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
226
+                database.Clayer = layertable[layername];//把图层选为当前图层
227
+                traction.Commit();
228
+            }
229
+            catch (Autodesk.AutoCAD.Runtime.Exception)
230
+            {
231
+                traction.Abort();
232
+            }
233
+            finally
234
+            {
235
+                traction.Dispose();
236
+                doclock.Dispose();
237
+            }
238
+        }
239
+
240
+
241
+
242
+        /// <summary>
243
+        /// 判断所命图层名是否已经存在
244
+        /// </summary>
245
+        /// <param name="layername">要判断的图层名字</param>
246
+        /// <returns>返回true表示在层表中存在要判断的图层名,
247
+        /// 返回false表示层表中不存在判断的图层名</returns>
248
+        public bool haslayername(string layername)
249
+        {
250
+            Database database = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase;
251
+            using (Transaction traction = database.TransactionManager.StartTransaction())
252
+            {
253
+                LayerTable lt = traction.GetObject(database.LayerTableId, OpenMode.ForRead) as LayerTable;
254
+
255
+                if (lt.Has(layername))
256
+                {
257
+                    traction.Commit();
258
+                    return true;
259
+                }
260
+                else
261
+                {
262
+                    traction.Commit();
263
+                    return false;
264
+                }
265
+            }
266
+
267
+
268
+
269
+        }
270
+    }
271
+}

+ 120
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/TKCuts.resx 查看文件

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>

+ 11
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/app.config 查看文件

@@ -0,0 +1,11 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<configuration>
3
+  <runtime>
4
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5
+      <dependentAssembly>
6
+        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
7
+        <bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
8
+      </dependentAssembly>
9
+    </assemblyBinding>
10
+  </runtime>
11
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup></configuration>

二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.dll 查看文件


+ 11
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.dll.config 查看文件

@@ -0,0 +1,11 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<configuration>
3
+  <runtime>
4
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5
+      <dependentAssembly>
6
+        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
7
+        <bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
8
+      </dependentAssembly>
9
+    </assemblyBinding>
10
+  </runtime>
11
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup></configuration>

二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/CutDGX.pdb 查看文件


+ 3
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing2.dwl 查看文件

@@ -0,0 +1,3 @@
1
+1
2
+DESKTOP-LEPG50N 
3
+2025年6月12日  10:58:25

+ 7
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing2.dwl2 查看文件

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8">
2
+<whprops>
3
+<username>1</username>
4
+<machinename>DESKTOP-LEPG50N </machinename>
5
+<fullname></fullname>
6
+<datetime>2025年6月12日  10:58:25</datetime>
7
+</whprops>

+ 3
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing3.dwl 查看文件

@@ -0,0 +1,3 @@
1
+1
2
+DESKTOP-LEPG50N 
3
+2025定6埖11晩  15:58:33

+ 7
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/Drawing3.dwl2 查看文件

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8">
2
+<whprops>
3
+<username>1</username>
4
+<machinename>DESKTOP-LEPG50N </machinename>
5
+<fullname></fullname>
6
+<datetime>2025年6月11日  15:58:33</datetime>
7
+</whprops>

+ 52362
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/NetTopologySuite.xml
文件差异内容过多而无法显示
查看文件


+ 173
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Buffers.xml 查看文件

@@ -0,0 +1,173 @@
1
+<?xml version="1.0"?>
2
+<doc>
3
+    <assembly>
4
+        <name>System.Buffers</name>
5
+    </assembly>
6
+    <members>
7
+        <member name="T:System.Buffers.ArrayPool`1">
8
+            <summary>
9
+            Provides a resource pool that enables reusing instances of type <see cref="T:T[]"/>. 
10
+            </summary>
11
+            <remarks>
12
+            <para>
13
+            Renting and returning buffers with an <see cref="T:System.Buffers.ArrayPool`1"/> can increase performance
14
+            in situations where arrays are created and destroyed frequently, resulting in significant
15
+            memory pressure on the garbage collector.
16
+            </para>
17
+            <para>
18
+            This class is thread-safe.  All members may be used by multiple threads concurrently.
19
+            </para>
20
+            </remarks>
21
+        </member>
22
+        <member name="F:System.Buffers.ArrayPool`1.s_sharedInstance">
23
+            <summary>The lazily-initialized shared pool instance.</summary>
24
+        </member>
25
+        <member name="P:System.Buffers.ArrayPool`1.Shared">
26
+            <summary>
27
+            Retrieves a shared <see cref="T:System.Buffers.ArrayPool`1"/> instance.
28
+            </summary>
29
+            <remarks>
30
+            The shared pool provides a default implementation of <see cref="T:System.Buffers.ArrayPool`1"/>
31
+            that's intended for general applicability.  It maintains arrays of multiple sizes, and 
32
+            may hand back a larger array than was actually requested, but will never hand back a smaller 
33
+            array than was requested. Renting a buffer from it with <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/> will result in an 
34
+            existing buffer being taken from the pool if an appropriate buffer is available or in a new 
35
+            buffer being allocated if one is not available.
36
+            </remarks>
37
+        </member>
38
+        <member name="M:System.Buffers.ArrayPool`1.EnsureSharedCreated">
39
+            <summary>Ensures that <see cref="F:System.Buffers.ArrayPool`1.s_sharedInstance"/> has been initialized to a pool and returns it.</summary>
40
+        </member>
41
+        <member name="M:System.Buffers.ArrayPool`1.Create">
42
+            <summary>
43
+            Creates a new <see cref="T:System.Buffers.ArrayPool`1"/> instance using default configuration options.
44
+            </summary>
45
+            <returns>A new <see cref="T:System.Buffers.ArrayPool`1"/> instance.</returns>
46
+        </member>
47
+        <member name="M:System.Buffers.ArrayPool`1.Create(System.Int32,System.Int32)">
48
+            <summary>
49
+            Creates a new <see cref="T:System.Buffers.ArrayPool`1"/> instance using custom configuration options.
50
+            </summary>
51
+            <param name="maxArrayLength">The maximum length of array instances that may be stored in the pool.</param>
52
+            <param name="maxArraysPerBucket">
53
+            The maximum number of array instances that may be stored in each bucket in the pool.  The pool
54
+            groups arrays of similar lengths into buckets for faster access.
55
+            </param>
56
+            <returns>A new <see cref="T:System.Buffers.ArrayPool`1"/> instance with the specified configuration options.</returns>
57
+            <remarks>
58
+            The created pool will group arrays into buckets, with no more than <paramref name="maxArraysPerBucket"/>
59
+            in each bucket and with those arrays not exceeding <paramref name="maxArrayLength"/> in length.
60
+            </remarks>
61
+        </member>
62
+        <member name="M:System.Buffers.ArrayPool`1.Rent(System.Int32)">
63
+            <summary>
64
+            Retrieves a buffer that is at least the requested length.
65
+            </summary>
66
+            <param name="minimumLength">The minimum length of the array needed.</param>
67
+            <returns>
68
+            An <see cref="T:T[]"/> that is at least <paramref name="minimumLength"/> in length.
69
+            </returns>
70
+            <remarks>
71
+            This buffer is loaned to the caller and should be returned to the same pool via 
72
+            <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"/> so that it may be reused in subsequent usage of <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/>.  
73
+            It is not a fatal error to not return a rented buffer, but failure to do so may lead to 
74
+            decreased application performance, as the pool may need to create a new buffer to replace
75
+            the one lost.
76
+            </remarks>
77
+        </member>
78
+        <member name="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)">
79
+            <summary>
80
+            Returns to the pool an array that was previously obtained via <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/> on the same 
81
+            <see cref="T:System.Buffers.ArrayPool`1"/> instance.
82
+            </summary>
83
+            <param name="array">
84
+            The buffer previously obtained from <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/> to return to the pool.
85
+            </param>
86
+            <param name="clearArray">
87
+            If <c>true</c> and if the pool will store the buffer to enable subsequent reuse, <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"/>
88
+            will clear <paramref name="array"/> of its contents so that a subsequent consumer via <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/> 
89
+            will not see the previous consumer's content.  If <c>false</c> or if the pool will release the buffer,
90
+            the array's contents are left unchanged.
91
+            </param>
92
+            <remarks>
93
+            Once a buffer has been returned to the pool, the caller gives up all ownership of the buffer 
94
+            and must not use it. The reference returned from a given call to <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"/> must only be
95
+            returned via <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"/> once.  The default <see cref="T:System.Buffers.ArrayPool`1"/>
96
+            may hold onto the returned buffer in order to rent it again, or it may release the returned buffer
97
+            if it's determined that the pool already has enough buffers stored.
98
+            </remarks>
99
+        </member>
100
+        <member name="T:System.Buffers.ArrayPoolEventSource.BufferAllocatedReason">
101
+            <summary>The reason for a BufferAllocated event.</summary>
102
+        </member>
103
+        <member name="F:System.Buffers.ArrayPoolEventSource.BufferAllocatedReason.Pooled">
104
+            <summary>The pool is allocating a buffer to be pooled in a bucket.</summary>
105
+        </member>
106
+        <member name="F:System.Buffers.ArrayPoolEventSource.BufferAllocatedReason.OverMaximumSize">
107
+            <summary>The requested buffer size was too large to be pooled.</summary>
108
+        </member>
109
+        <member name="F:System.Buffers.ArrayPoolEventSource.BufferAllocatedReason.PoolExhausted">
110
+            <summary>The pool has already allocated for pooling as many buffers of a particular size as it's allowed.</summary>
111
+        </member>
112
+        <member name="M:System.Buffers.ArrayPoolEventSource.BufferRented(System.Int32,System.Int32,System.Int32,System.Int32)">
113
+            <summary>
114
+            Event for when a buffer is rented.  This is invoked once for every successful call to Rent,
115
+            regardless of whether a buffer is allocated or a buffer is taken from the pool.  In a
116
+            perfect situation where all rented buffers are returned, we expect to see the number
117
+            of BufferRented events exactly match the number of BuferReturned events, with the number
118
+            of BufferAllocated events being less than or equal to those numbers (ideally significantly
119
+            less than).
120
+            </summary>
121
+        </member>
122
+        <member name="M:System.Buffers.ArrayPoolEventSource.BufferAllocated(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferAllocatedReason)">
123
+            <summary>
124
+            Event for when a buffer is allocated by the pool.  In an ideal situation, the number
125
+            of BufferAllocated events is significantly smaller than the number of BufferRented and
126
+            BufferReturned events.
127
+            </summary>
128
+        </member>
129
+        <member name="M:System.Buffers.ArrayPoolEventSource.BufferReturned(System.Int32,System.Int32,System.Int32)">
130
+            <summary>
131
+            Event raised when a buffer is returned to the pool.  This event is raised regardless of whether
132
+            the returned buffer is stored or dropped.  In an ideal situation, the number of BufferReturned
133
+            events exactly matches the number of BufferRented events.
134
+            </summary>
135
+        </member>
136
+        <member name="F:System.Buffers.DefaultArrayPool`1.DefaultMaxArrayLength">
137
+            <summary>The default maximum length of each array in the pool (2^20).</summary>
138
+        </member>
139
+        <member name="F:System.Buffers.DefaultArrayPool`1.DefaultMaxNumberOfArraysPerBucket">
140
+            <summary>The default maximum number of arrays per bucket that are available for rent.</summary>
141
+        </member>
142
+        <member name="F:System.Buffers.DefaultArrayPool`1.s_emptyArray">
143
+            <summary>Lazily-allocated empty array used when arrays of length 0 are requested.</summary>
144
+        </member>
145
+        <member name="P:System.Buffers.DefaultArrayPool`1.Id">
146
+            <summary>Gets an ID for the pool to use with events.</summary>
147
+        </member>
148
+        <member name="T:System.Buffers.DefaultArrayPool`1.Bucket">
149
+            <summary>Provides a thread-safe bucket containing buffers that can be Rent'd and Return'd.</summary>
150
+        </member>
151
+        <member name="M:System.Buffers.DefaultArrayPool`1.Bucket.#ctor(System.Int32,System.Int32,System.Int32)">
152
+            <summary>
153
+            Creates the pool with numberOfBuffers arrays where each buffer is of bufferLength length.
154
+            </summary>
155
+        </member>
156
+        <member name="P:System.Buffers.DefaultArrayPool`1.Bucket.Id">
157
+            <summary>Gets an ID for the bucket to use with events.</summary>
158
+        </member>
159
+        <member name="M:System.Buffers.DefaultArrayPool`1.Bucket.Rent">
160
+            <summary>Takes an array from the bucket.  If the bucket is empty, returns null.</summary>
161
+        </member>
162
+        <member name="M:System.Buffers.DefaultArrayPool`1.Bucket.Return(`0[])">
163
+            <summary>
164
+            Attempts to return the buffer to the bucket.  If successful, the buffer will be stored
165
+            in the bucket and true will be returned; otherwise, the buffer won't be stored, and false
166
+            will be returned.
167
+            </summary>
168
+        </member>
169
+        <member name="P:System.SR.ArgumentException_BufferNotFromPool">
170
+            <summary>The buffer is not associated with this pool and may not be returned to it.</summary>
171
+        </member>
172
+    </members>
173
+</doc>

+ 3489
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Memory.xml
文件差异内容过多而无法显示
查看文件


+ 3451
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Numerics.Vectors.xml
文件差异内容过多而无法显示
查看文件


+ 353
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml 查看文件

@@ -0,0 +1,353 @@
1
+<?xml version="1.0"?>
2
+<doc>
3
+    <assembly>
4
+        <name>System.Runtime.CompilerServices.Unsafe</name>
5
+    </assembly>
6
+    <members>
7
+        <member name="T:System.Runtime.CompilerServices.Unsafe">
8
+            <summary>
9
+            Contains generic, low-level functionality for manipulating pointers.
10
+            </summary>
11
+        </member>
12
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
13
+            <summary>
14
+            Reads a value of type <typeparamref name="T"/> from the given location.
15
+            </summary>
16
+            <typeparam name="T">The type to read.</typeparam>
17
+            <param name="source">The location to read from.</param>
18
+            <returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
19
+        </member>
20
+        <member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
21
+            <summary>
22
+            Reads a value of type <typeparamref name="T"/> from the given location.
23
+            </summary>
24
+            <typeparam name="T">The type to read.</typeparam>
25
+            <param name="source">The location to read from.</param>
26
+            <returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
27
+        </member>
28
+        <member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
29
+            <summary>
30
+            Reads a value of type <typeparamref name="T"/> from the given location.
31
+            </summary>
32
+            <typeparam name="T">The type to read.</typeparam>
33
+            <param name="source">The location to read from.</param>
34
+            <returns>An object of type <typeparamref name="T"/> read from the given location.</returns>
35
+        </member>
36
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
37
+            <summary>
38
+            Writes a value of type <typeparamref name="T"/> to the given location.
39
+            </summary>
40
+            <typeparam name="T">The type of value to write.</typeparam>
41
+            <param name="destination">The location to write to.</param>
42
+            <param name="value">The value to write.</param>
43
+        </member>
44
+        <member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
45
+            <summary>
46
+            Writes a value of type <typeparamref name="T"/> to the given location.
47
+            </summary>
48
+            <typeparam name="T">The type of value to write.</typeparam>
49
+            <param name="destination">The location to write to.</param>
50
+            <param name="value">The value to write.</param>
51
+        </member>
52
+        <member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
53
+            <summary>
54
+            Writes a value of type <typeparamref name="T"/> to the given location.
55
+            </summary>
56
+            <typeparam name="T">The type of value to write.</typeparam>
57
+            <param name="destination">The location to write to.</param>
58
+            <param name="value">The value to write.</param>
59
+        </member>
60
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
61
+            <summary>
62
+            Copies a value of type <typeparamref name="T"/> to the given location.
63
+            </summary>
64
+            <typeparam name="T">The type of value to copy.</typeparam>
65
+            <param name="destination">The location to copy to.</param>
66
+            <param name="source">A reference to the value to copy.</param>
67
+        </member>
68
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
69
+            <summary>
70
+            Copies a value of type <typeparamref name="T"/> to the given location.
71
+            </summary>
72
+            <typeparam name="T">The type of value to copy.</typeparam>
73
+            <param name="destination">The location to copy to.</param>
74
+            <param name="source">A pointer to the value to copy.</param>
75
+        </member>
76
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
77
+            <summary>
78
+            Returns a pointer to the given by-ref parameter.
79
+            </summary>
80
+            <typeparam name="T">The type of object.</typeparam>
81
+            <param name="value">The object whose pointer is obtained.</param>
82
+            <returns>A pointer to the given value.</returns>
83
+        </member>
84
+        <member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
85
+            <summary>
86
+            Returns the size of an object of the given type parameter.
87
+            </summary>
88
+            <typeparam name="T">The type of object whose size is retrieved.</typeparam>
89
+            <returns>The size of an object of type <typeparamref name="T"/>.</returns>
90
+        </member>
91
+        <member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
92
+            <summary>
93
+            Casts the given object to the specified type, performs no dynamic type checking.
94
+            </summary>
95
+            <typeparam name="T">The type which the object will be cast to.</typeparam>
96
+            <param name="o">The object to cast.</param>
97
+            <returns>The original object, casted to the given type.</returns>
98
+        </member>
99
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
100
+            <summary>
101
+            Reinterprets the given location as a reference to a value of type <typeparamref name="T"/>.
102
+            </summary>
103
+            <typeparam name="T">The type of the interpreted location.</typeparam>
104
+            <param name="source">The location of the value to reference.</param>
105
+            <returns>A reference to a value of type <typeparamref name="T"/>.</returns>
106
+        </member>
107
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(``0@)">
108
+            <summary>
109
+            Reinterprets the given read-only reference as a reference.
110
+            </summary>
111
+            <typeparam name="T">The type of reference.</typeparam>
112
+            <param name="source">The read-only reference to reinterpret.</param>
113
+            <returns>A reference to a value of type <typeparamref name="T"/>.</returns>
114
+        </member>
115
+        <member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
116
+            <summary>
117
+            Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo"/>.
118
+            </summary>
119
+            <typeparam name="TFrom">The type of reference to reinterpret.</typeparam>
120
+            <typeparam name="TTo">The desired type of the reference.</typeparam>
121
+            <param name="source">The reference to reinterpret.</param>
122
+            <returns>A reference to a value of type <typeparamref name="TTo"/>.</returns>
123
+        </member>
124
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Unbox``1(System.Object)">
125
+            <summary>
126
+            Returns a reference to the value type contained with the specified box object.
127
+            </summary>
128
+            <typeparam name="T">The type of the value type contained within the box.</typeparam>
129
+            <param name="box">The boxed value type.</param>
130
+            <returns>A reference to a value of type <typeparamref name="T"/> in the box object.</returns>
131
+        </member>
132
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
133
+            <summary>
134
+            Adds an element offset to the given reference.
135
+            </summary>
136
+            <typeparam name="T">The type of reference.</typeparam>
137
+            <param name="source">The reference to add the offset to.</param>
138
+            <param name="elementOffset">The offset to add.</param>
139
+            <returns>A new reference that reflects the addition of offset to pointer.</returns>
140
+        </member>
141
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(System.Void*,System.Int32)">
142
+            <summary>
143
+            Adds an element offset to the given pointer.
144
+            </summary>
145
+            <typeparam name="T">The type of reference.</typeparam>
146
+            <param name="source">The pointer to add the offset to.</param>
147
+            <param name="elementOffset">The offset to add.</param>
148
+            <returns>A new pointer that reflects the addition of offset to pointer.</returns>
149
+        </member>
150
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
151
+            <summary>
152
+            Adds an element offset to the given reference.
153
+            </summary>
154
+            <typeparam name="T">The type of reference.</typeparam>
155
+            <param name="source">The reference to add the offset to.</param>
156
+            <param name="elementOffset">The offset to add.</param>
157
+            <returns>A new reference that reflects the addition of offset to pointer.</returns>
158
+        </member>
159
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.UIntPtr)">
160
+            <summary>
161
+            Adds an element offset to the given reference.
162
+            </summary>
163
+            <typeparam name="T">The type of reference.</typeparam>
164
+            <param name="source">The reference to add the offset to.</param>
165
+            <param name="elementOffset">The offset to add.</param>
166
+            <returns>A new reference that reflects the addition of offset to pointer.</returns>
167
+        </member>
168
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
169
+            <summary>
170
+            Adds a byte offset to the given reference.
171
+            </summary>
172
+            <typeparam name="T">The type of reference.</typeparam>
173
+            <param name="source">The reference to add the offset to.</param>
174
+            <param name="byteOffset">The offset to add.</param>
175
+            <returns>A new reference that reflects the addition of byte offset to pointer.</returns>
176
+        </member>
177
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.UIntPtr)">
178
+            <summary>
179
+            Adds a byte offset to the given reference.
180
+            </summary>
181
+            <typeparam name="T">The type of reference.</typeparam>
182
+            <param name="source">The reference to add the offset to.</param>
183
+            <param name="byteOffset">The offset to add.</param>
184
+            <returns>A new reference that reflects the addition of byte offset to pointer.</returns>
185
+        </member>
186
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
187
+            <summary>
188
+            Subtracts an element offset from the given reference.
189
+            </summary>
190
+            <typeparam name="T">The type of reference.</typeparam>
191
+            <param name="source">The reference to subtract the offset from.</param>
192
+            <param name="elementOffset">The offset to subtract.</param>
193
+            <returns>A new reference that reflects the subraction of offset from pointer.</returns>
194
+        </member>
195
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
196
+            <summary>
197
+            Subtracts an element offset from the given reference.
198
+            </summary>
199
+            <typeparam name="T">The type of reference.</typeparam>
200
+            <param name="source">The reference to subtract the offset from.</param>
201
+            <param name="elementOffset">The offset to subtract.</param>
202
+            <returns>A new reference that reflects the subraction of offset from pointer.</returns>
203
+        </member>
204
+        <member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.UIntPtr)">
205
+            <summary>
206
+            Subtracts an element offset from the given reference.
207
+            </summary>
208
+            <typeparam name="T">The type of reference.</typeparam>
209
+            <param name="source">The reference to subtract the offset from.</param>
210
+            <param name="elementOffset">The offset to subtract.</param>
211
+            <returns>A new reference that reflects the subraction of offset from pointer.</returns>
212
+        </member>
213
+        <member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
214
+            <summary>
215
+            Subtracts a byte offset from the given reference.
216
+            </summary>
217
+            <typeparam name="T">The type of reference.</typeparam>
218
+            <param name="source">The reference to subtract the offset from.</param>
219
+            <param name="byteOffset">The offset to subtract.</param>
220
+            <returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
221
+        </member>
222
+        <member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.UIntPtr)">
223
+            <summary>
224
+            Subtracts a byte offset from the given reference.
225
+            </summary>
226
+            <typeparam name="T">The type of reference.</typeparam>
227
+            <param name="source">The reference to subtract the offset from.</param>
228
+            <param name="byteOffset">The offset to subtract.</param>
229
+            <returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
230
+        </member>
231
+        <member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
232
+            <summary>
233
+            Determines the byte offset from origin to target from the given references.
234
+            </summary>
235
+            <typeparam name="T">The type of reference.</typeparam>
236
+            <param name="origin">The reference to origin.</param>
237
+            <param name="target">The reference to target.</param>
238
+            <returns>Byte offset from origin to target i.e. <paramref name="target"/> - <paramref name="origin"/>.</returns>
239
+        </member>
240
+        <member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
241
+            <summary>
242
+            Determines whether the specified references point to the same location.
243
+            </summary>
244
+            <param name="left">The first reference to compare.</param>
245
+            <param name="right">The second reference to compare.</param>
246
+            <returns><c>true</c> if <paramref name="left"/> and <paramref name="right"/> point to the same location; otherwise <c>false</c>.</returns>
247
+        </member>
248
+        <member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan``1(``0@,``0@)">
249
+            <summary>
250
+            Determines whether the memory address referenced by <paramref name="left"/> is greater than the memory address referenced by <paramref name="right"/>.
251
+            </summary>
252
+            <param name="left">The first reference to compare.</param>
253
+            <param name="right">The second reference to compare.</param>
254
+            <returns><c>true</c> if the memory address referenced by <paramref name="left"/> is greater than the memory address referenced by <paramref name="right"/>; otherwise <c>false</c>.</returns>
255
+            <remarks>
256
+            This check is conceptually similar to "(void*)(&amp;left) &gt; (void*)(&amp;right)". Both parameters must reference the same object, array, or span;
257
+            or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
258
+            </remarks>
259
+        </member>
260
+        <member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressLessThan``1(``0@,``0@)">
261
+            <summary>
262
+            Determines whether the memory address referenced by <paramref name="left"/> is less than the memory address referenced by <paramref name="right"/>.
263
+            </summary>
264
+            <param name="left">The first reference to compare.</param>
265
+            <param name="right">The second reference to compare.</param>
266
+            <returns><c>true</c> if the memory address referenced by <paramref name="left"/> is less than the memory address referenced by <paramref name="right"/>; otherwise <c>false</c>.</returns>
267
+            <remarks>
268
+            This check is conceptually similar to "(void*)(&amp;left) &lt; (void*)(&amp;right)". Both parameters must reference the same object, array, or span;
269
+            or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
270
+            </remarks>
271
+        </member>
272
+        <member name="M:System.Runtime.CompilerServices.Unsafe.IsNullRef``1(``0@)">
273
+          <summary>
274
+            Returns if a given reference to a value of type <typeparamref name="T"/> is a null reference.
275
+          </summary>
276
+          <param name="source">The reference to check.</param>
277
+          <remarks>This check is conceptually similar to "(void*)(&amp;source) == nullptr".</remarks>
278
+        </member>
279
+        <member name="M:System.Runtime.CompilerServices.Unsafe.NullRef``1">
280
+          <summary>
281
+            Returns a reference to a value of type <typeparamref name="T"/> that is a null reference.
282
+          </summary>
283
+        </member>
284
+        <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
285
+            <summary>
286
+            Copies bytes from the source address to the destination address.
287
+            </summary>
288
+            <param name="destination">The destination address to copy to.</param>
289
+            <param name="source">The source address to copy from.</param>
290
+            <param name="byteCount">The number of bytes to copy.</param>
291
+        </member>
292
+        <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
293
+            <summary>
294
+            Copies bytes from the source address to the destination address.
295
+            </summary>
296
+            <param name="destination">The destination address to copy to.</param>
297
+            <param name="source">The source address to copy from.</param>
298
+            <param name="byteCount">The number of bytes to copy.</param>
299
+        </member>
300
+        <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
301
+            <summary>
302
+            Copies bytes from the source address to the destination address 
303
+            without assuming architecture dependent alignment of the addresses.
304
+            </summary>
305
+            <param name="destination">The destination address to copy to.</param>
306
+            <param name="source">The source address to copy from.</param>
307
+            <param name="byteCount">The number of bytes to copy.</param>
308
+        </member>
309
+        <member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
310
+            <summary>
311
+            Copies bytes from the source address to the destination address 
312
+            without assuming architecture dependent alignment of the addresses.
313
+            </summary>
314
+            <param name="destination">The destination address to copy to.</param>
315
+            <param name="source">The source address to copy from.</param>
316
+            <param name="byteCount">The number of bytes to copy.</param>
317
+        </member>
318
+        <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
319
+            <summary>
320
+            Initializes a block of memory at the given location with a given initial value.
321
+            </summary>
322
+            <param name="startAddress">The address of the start of the memory block to initialize.</param>
323
+            <param name="value">The value to initialize the block to.</param>
324
+            <param name="byteCount">The number of bytes to initialize.</param>
325
+        </member>
326
+        <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
327
+            <summary>
328
+            Initializes a block of memory at the given location with a given initial value.
329
+            </summary>
330
+            <param name="startAddress">The address of the start of the memory block to initialize.</param>
331
+            <param name="value">The value to initialize the block to.</param>
332
+            <param name="byteCount">The number of bytes to initialize.</param>
333
+        </member>
334
+        <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
335
+            <summary>
336
+            Initializes a block of memory at the given location with a given initial value 
337
+            without assuming architecture dependent alignment of the address.
338
+            </summary>
339
+            <param name="startAddress">The address of the start of the memory block to initialize.</param>
340
+            <param name="value">The value to initialize the block to.</param>
341
+            <param name="byteCount">The number of bytes to initialize.</param>
342
+        </member>
343
+        <member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
344
+            <summary>
345
+            Initializes a block of memory at the given location with a given initial value 
346
+            without assuming architecture dependent alignment of the address.
347
+            </summary>
348
+            <param name="startAddress">The address of the start of the memory block to initialize.</param>
349
+            <param name="value">The value to initialize the block to.</param>
350
+            <param name="byteCount">The number of bytes to initialize.</param>
351
+        </member>
352
+    </members>
353
+</doc>

+ 36
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/bin/Debug/acad.err 查看文件

@@ -0,0 +1,36 @@
1
+
2
+
3
+内部错误:  !dbobji.cpp@8615: eNotOpenForWrite
4
+
5
+03/28/2025 at 14:25:23.729  图形: F:\2025\03\辅助线算法\Drawing1.dwg
6
+-------------
7
+
8
+
9
+内部错误:  !dbobji.cpp@8615: eNotOpenForWrite
10
+
11
+03/28/2025 at 14:26:50.820  图形: F:\2025\03\辅助线算法\Drawing1.dwg
12
+-------------
13
+
14
+
15
+内部错误:  !dbobji.cpp@8615: eNotOpenForWrite
16
+
17
+03/28/2025 at 14:40:26.340  图形: F:\2025\03\辅助线算法\Drawing1.dwg
18
+-------------
19
+
20
+
21
+内部错误:  !dbobji.cpp@8615: eNotOpenForWrite
22
+
23
+04/01/2025 at 11:19:06.757  图形: F:\2025\03\辅助线算法\Drawing1.dwg
24
+-------------
25
+
26
+
27
+致命错误:  Unhandled Access Violation Reading 0x0000 Exception at 7a3c8cd4h
28
+
29
+06/13/2025 at 15:42:44.312  图形: F:\2025\06\地形图接边测试\tkdeletetest.dwg
30
+-------------
31
+
32
+
33
+内部错误:  !dbobji.cpp@8615: eNotOpenForWrite
34
+
35
+06/13/2025 at 15:43:51.663  图形: F:\2025\06\地形图接边测试\tkdeletetest.dwg
36
+-------------

+ 110
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.Designer.cs 查看文件

@@ -0,0 +1,110 @@
1
+
2
+namespace CutDGX
3
+{
4
+    partial class joinedge
5
+    {
6
+        /// <summary>
7
+        /// Required designer variable.
8
+        /// </summary>
9
+        private System.ComponentModel.IContainer components = null;
10
+
11
+        /// <summary>
12
+        /// Clean up any resources being used.
13
+        /// </summary>
14
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
15
+        protected override void Dispose(bool disposing)
16
+        {
17
+            if (disposing && (components != null))
18
+            {
19
+                components.Dispose();
20
+            }
21
+            base.Dispose(disposing);
22
+        }
23
+
24
+        #region Windows Form Designer generated code
25
+
26
+        /// <summary>
27
+        /// Required method for Designer support - do not modify
28
+        /// the contents of this method with the code editor.
29
+        /// </summary>
30
+        private void InitializeComponent()
31
+        {
32
+            this.textBox_sele = new System.Windows.Forms.TextBox();
33
+            this.label2 = new System.Windows.Forms.Label();
34
+            this.button_ok = new System.Windows.Forms.Button();
35
+            this.comboBox_tk = new System.Windows.Forms.ComboBox();
36
+            this.label1 = new System.Windows.Forms.Label();
37
+            this.SuspendLayout();
38
+            // 
39
+            // textBox_sele
40
+            // 
41
+            this.textBox_sele.Location = new System.Drawing.Point(231, 90);
42
+            this.textBox_sele.Name = "textBox_sele";
43
+            this.textBox_sele.Size = new System.Drawing.Size(100, 25);
44
+            this.textBox_sele.TabIndex = 9;
45
+            this.textBox_sele.Text = "0.001";
46
+            // 
47
+            // label2
48
+            // 
49
+            this.label2.AutoSize = true;
50
+            this.label2.Location = new System.Drawing.Point(89, 93);
51
+            this.label2.Name = "label2";
52
+            this.label2.Size = new System.Drawing.Size(82, 15);
53
+            this.label2.TabIndex = 8;
54
+            this.label2.Text = "搜索阈值:";
55
+            // 
56
+            // button_ok
57
+            // 
58
+            this.button_ok.Location = new System.Drawing.Point(206, 139);
59
+            this.button_ok.Name = "button_ok";
60
+            this.button_ok.Size = new System.Drawing.Size(75, 31);
61
+            this.button_ok.TabIndex = 7;
62
+            this.button_ok.Text = "确 定";
63
+            this.button_ok.UseVisualStyleBackColor = true;
64
+            this.button_ok.Click += new System.EventHandler(this.button_ok_Click);
65
+            // 
66
+            // comboBox_tk
67
+            // 
68
+            this.comboBox_tk.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
69
+            this.comboBox_tk.FormattingEnabled = true;
70
+            this.comboBox_tk.Location = new System.Drawing.Point(231, 37);
71
+            this.comboBox_tk.Name = "comboBox_tk";
72
+            this.comboBox_tk.Size = new System.Drawing.Size(158, 23);
73
+            this.comboBox_tk.TabIndex = 6;
74
+            // 
75
+            // label1
76
+            // 
77
+            this.label1.AutoSize = true;
78
+            this.label1.Location = new System.Drawing.Point(86, 40);
79
+            this.label1.Name = "label1";
80
+            this.label1.Size = new System.Drawing.Size(127, 15);
81
+            this.label1.TabIndex = 5;
82
+            this.label1.Text = "图幅框所在图层:";
83
+            // 
84
+            // joinedge
85
+            // 
86
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
87
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
88
+            this.ClientSize = new System.Drawing.Size(474, 206);
89
+            this.Controls.Add(this.textBox_sele);
90
+            this.Controls.Add(this.label2);
91
+            this.Controls.Add(this.button_ok);
92
+            this.Controls.Add(this.comboBox_tk);
93
+            this.Controls.Add(this.label1);
94
+            this.Name = "joinedge";
95
+            this.Text = "图幅接边";
96
+            this.Load += new System.EventHandler(this.joinedge_Load);
97
+            this.ResumeLayout(false);
98
+            this.PerformLayout();
99
+
100
+        }
101
+
102
+        #endregion
103
+
104
+        private System.Windows.Forms.TextBox textBox_sele;
105
+        private System.Windows.Forms.Label label2;
106
+        private System.Windows.Forms.Button button_ok;
107
+        private System.Windows.Forms.ComboBox comboBox_tk;
108
+        private System.Windows.Forms.Label label1;
109
+    }
110
+}

+ 1246
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.cs
文件差异内容过多而无法显示
查看文件


+ 120
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/joinedge.resx 查看文件

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>

+ 4
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/.NETFramework,Version=v4.5.2.AssemblyAttributes.cs 查看文件

@@ -0,0 +1,4 @@
1
+// <autogenerated />
2
+using System;
3
+using System.Reflection;
4
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5.2", FrameworkDisplayName = ".NET Framework 4.5.2")]

+ 4
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs 查看文件

@@ -0,0 +1,4 @@
1
+// <autogenerated />
2
+using System;
3
+using System.Reflection;
4
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/028E9832F421F11F9497C610F1734E0F3D868037.costura.costura.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/5919B552E2C2DF33C9698503912F6D51D3E20980.costura.autodesk.autocad.interop.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/806F4C19B2D7FD9E3B836269EC07647019A29E95.costura.costura.pdb.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/854B457BEEC353FD20BD195521FF03D7E7BB138C.costura.nettopologysuite.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.Dgxthrorvrd_Form.resources 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.Form1.resources 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.TKCuts.resources 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.AssemblyReference.cache 查看文件


+ 0
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.CopyComplete 查看文件


+ 1
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.CoreCompileInputs.cache 查看文件

@@ -0,0 +1 @@
1
+c7ad9cd22f6cbea451c73712bd1d67d7ab625a4a

+ 20
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.FileListAbsolute.txt 查看文件

@@ -0,0 +1,20 @@
1
+F:\2025\03\CutDGX\CutDGX\bin\Debug\CutDGX.dll.config
2
+F:\2025\03\CutDGX\CutDGX\bin\Debug\CutDGX.dll
3
+F:\2025\03\CutDGX\CutDGX\bin\Debug\CutDGX.pdb
4
+F:\2025\03\CutDGX\CutDGX\bin\Debug\NetTopologySuite.xml
5
+F:\2025\03\CutDGX\CutDGX\bin\Debug\System.Buffers.xml
6
+F:\2025\03\CutDGX\CutDGX\bin\Debug\System.Memory.xml
7
+F:\2025\03\CutDGX\CutDGX\bin\Debug\System.Numerics.Vectors.xml
8
+F:\2025\03\CutDGX\CutDGX\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
9
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.AssemblyReference.cache
10
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.Dgxthrorvrd_Form.resources
11
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.Form1.resources
12
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.GenerateResource.cache
13
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.CoreCompileInputs.cache
14
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.Fody.CopyLocal.cache
15
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.Fody.RuntimeCopyLocal.cache
16
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.csproj.CopyComplete
17
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.dll
18
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.pdb
19
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.joinedge.resources
20
+F:\2025\03\CutDGX\CutDGX\obj\Debug\CutDGX.TKCuts.resources

+ 5
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.Fody.CopyLocal.cache 查看文件

@@ -0,0 +1,5 @@
1
+F:\2025\03\CutDGX\packages\NetTopologySuite.2.6.0\lib\netstandard2.0\NetTopologySuite.xml
2
+F:\2025\03\CutDGX\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.xml
3
+F:\2025\03\CutDGX\packages\System.Memory.4.6.0\lib\net462\System.Memory.xml
4
+F:\2025\03\CutDGX\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.xml
5
+F:\2025\03\CutDGX\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.xml

+ 0
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.Fody.RuntimeCopyLocal.cache 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.csproj.GenerateResource.cache 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.joinedge.resources 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/CutDGX.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/DesignTimeResolveAssemblyReferences.cache 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/CutDGX/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache 查看文件


+ 11
- 0
加密后软件工具/CAD插件工具/CutDGX/CutDGX/packages.config 查看文件

@@ -0,0 +1,11 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<packages>
3
+  <package id="Costura.Fody" version="6.0.0" targetFramework="net48" developmentDependency="true" />
4
+  <package id="Fody" version="6.9.2" targetFramework="net48" developmentDependency="true" />
5
+  <package id="ILMerge" version="3.0.41" targetFramework="net48" />
6
+  <package id="NetTopologySuite" version="2.6.0" targetFramework="net48" />
7
+  <package id="System.Buffers" version="4.6.0" targetFramework="net48" />
8
+  <package id="System.Memory" version="4.6.0" targetFramework="net48" />
9
+  <package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net48" />
10
+  <package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net48" />
11
+</packages>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/.signature.p7s 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/Costura.Fody.6.0.0.nupkg 查看文件


+ 15
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/build/Costura.Fody.props 查看文件

@@ -0,0 +1,15 @@
1
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+
3
+  <PropertyGroup>
4
+    <WeaverRuntimeToken
5
+        Condition="$(MSBuildRuntimeType) != 'Core'">netclassicweaver</WeaverRuntimeToken>
6
+    <WeaverRuntimeToken
7
+        Condition="$(MSBuildRuntimeType) == 'Core'">netstandardweaver</WeaverRuntimeToken>
8
+  </PropertyGroup>
9
+
10
+  <ItemGroup>
11
+    <WeaverFiles
12
+        Include="$(MsBuildThisFileDirectory)..\$(WeaverRuntimeToken)\$(MSBuildThisFileName).dll" />
13
+  </ItemGroup>
14
+
15
+</Project>

+ 13
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/build/Costura.Fody.targets 查看文件

@@ -0,0 +1,13 @@
1
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+
3
+  <PropertyGroup Condition="$(CosturaRemoveCopyLocalFilesToPublish) == ''">
4
+    <CosturaRemoveCopyLocalFilesToPublish>true</CosturaRemoveCopyLocalFilesToPublish>
5
+  </PropertyGroup>
6
+
7
+  <Target Name="CosturaRemoveAlreadyEmbeddedFilesFromPublish" AfterTargets="ComputeResolvedFilesToPublishList" Condition="$(CosturaRemoveCopyLocalFilesToPublish) == 'true'">
8
+    <ItemGroup>
9
+      <ResolvedFileToPublish Remove="@(FodyRemovedReferenceCopyLocalPaths)" />
10
+    </ItemGroup>
11
+  </Target>
12
+
13
+</Project>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/icon.png 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.pdb 查看文件


+ 23
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/lib/netstandard2.0/Costura.xml 查看文件

@@ -0,0 +1,23 @@
1
+<?xml version="1.0"?>
2
+<doc>
3
+    <assembly>
4
+        <name>Costura</name>
5
+    </assembly>
6
+    <members>
7
+        <member name="T:MethodTimeLogger">
8
+            <summary>
9
+            Note: do not rename this class or put it inside a namespace.
10
+            </summary>
11
+        </member>
12
+        <member name="T:CosturaUtility">
13
+            <summary>
14
+            Contains methods for interacting with the Costura system.
15
+            </summary>
16
+        </member>
17
+        <member name="M:CosturaUtility.Initialize">
18
+            <summary>
19
+            Call this to Initialize the Costura system.
20
+            </summary>
21
+        </member>
22
+    </members>
23
+</doc>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netclassicweaver/Costura.Fody.dll 查看文件


+ 150
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netclassicweaver/Costura.Fody.xcf 查看文件

@@ -0,0 +1,150 @@
1
+<?xml version="1.0" encoding="utf-8" ?>
2
+<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+    <xs:all>
4
+        <xs:element  minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
5
+            <xs:annotation>
6
+                <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
7
+            </xs:annotation>
8
+        </xs:element>
9
+        <xs:element  minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
10
+            <xs:annotation>
11
+                <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
12
+            </xs:annotation>
13
+        </xs:element>
14
+        <xs:element  minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
15
+            <xs:annotation>
16
+                <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
17
+            </xs:annotation>
18
+        </xs:element>
19
+        <xs:element  minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
20
+            <xs:annotation>
21
+                <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
22
+            </xs:annotation>
23
+        </xs:element>
24
+        <xs:element  minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
25
+            <xs:annotation>
26
+                <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
27
+            </xs:annotation>
28
+        </xs:element>
29
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
30
+            <xs:annotation>
31
+                <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
32
+            </xs:annotation>
33
+        </xs:element>
34
+        <xs:element  minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
35
+            <xs:annotation>
36
+                <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
37
+            </xs:annotation>
38
+        </xs:element>
39
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
40
+            <xs:annotation>
41
+                <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
42
+            </xs:annotation>
43
+        </xs:element>
44
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
45
+            <xs:annotation>
46
+                <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
47
+            </xs:annotation>
48
+        </xs:element>
49
+        <xs:element  minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
50
+            <xs:annotation>
51
+                <xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
52
+            </xs:annotation>
53
+        </xs:element>
54
+    </xs:all>
55
+    <xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
56
+        <xs:annotation>
57
+            <xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
58
+        </xs:annotation>
59
+    </xs:attribute>
60
+    <xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
61
+        <xs:annotation>
62
+            <xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
63
+        </xs:annotation>
64
+    </xs:attribute>
65
+    <xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
66
+        <xs:annotation>
67
+            <xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
68
+        </xs:annotation>
69
+    </xs:attribute>
70
+    <xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
71
+        <xs:annotation>
72
+            <xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
73
+        </xs:annotation>
74
+    </xs:attribute>
75
+    <xs:attribute name="DisableCompression" type="xs:boolean">
76
+        <xs:annotation>
77
+            <xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
78
+        </xs:annotation>
79
+    </xs:attribute>
80
+    <xs:attribute name="DisableCleanup" type="xs:boolean">
81
+        <xs:annotation>
82
+            <xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
83
+        </xs:annotation>
84
+    </xs:attribute>
85
+    <xs:attribute name="DisableEventSubscription" type="xs:boolean">
86
+        <xs:annotation>
87
+            <xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
88
+        </xs:annotation>
89
+    </xs:attribute>
90
+    <xs:attribute name="LoadAtModuleInit" type="xs:boolean">
91
+        <xs:annotation>
92
+            <xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
93
+        </xs:annotation>
94
+    </xs:attribute>
95
+    <xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
96
+        <xs:annotation>
97
+            <xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
98
+        </xs:annotation>
99
+    </xs:attribute>
100
+    <xs:attribute name="ExcludeAssemblies" type="xs:string">
101
+        <xs:annotation>
102
+            <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
103
+        </xs:annotation>
104
+    </xs:attribute>
105
+    <xs:attribute name="IncludeAssemblies" type="xs:string">
106
+        <xs:annotation>
107
+            <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
108
+        </xs:annotation>
109
+    </xs:attribute>
110
+    <xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
111
+        <xs:annotation>
112
+            <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
113
+        </xs:annotation>
114
+    </xs:attribute>
115
+    <xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
116
+        <xs:annotation>
117
+            <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
118
+        </xs:annotation>
119
+    </xs:attribute>
120
+    <xs:attribute name="Unmanaged32Assemblies" type="xs:string">
121
+        <xs:annotation>
122
+            <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
123
+        </xs:annotation>
124
+    </xs:attribute>
125
+    <xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
126
+        <xs:annotation>
127
+            <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
128
+        </xs:annotation>
129
+    </xs:attribute>
130
+    <xs:attribute name="Unmanaged64Assemblies" type="xs:string">
131
+        <xs:annotation>
132
+            <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
133
+        </xs:annotation>
134
+    </xs:attribute>
135
+    <xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
136
+        <xs:annotation>
137
+            <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
138
+        </xs:annotation>
139
+    </xs:attribute>
140
+    <xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
141
+        <xs:annotation>
142
+            <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
143
+        </xs:annotation>
144
+    </xs:attribute>
145
+    <xs:attribute name="PreloadOrder" type="xs:string">
146
+        <xs:annotation>
147
+            <xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
148
+        </xs:annotation>
149
+    </xs:attribute>
150
+</xs:complexType>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netstandardweaver/Costura.Fody.dll 查看文件


+ 150
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Costura.Fody.6.0.0/netstandardweaver/Costura.Fody.xcf 查看文件

@@ -0,0 +1,150 @@
1
+<?xml version="1.0" encoding="utf-8" ?>
2
+<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+    <xs:all>
4
+        <xs:element  minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
5
+            <xs:annotation>
6
+                <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
7
+            </xs:annotation>
8
+        </xs:element>
9
+        <xs:element  minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
10
+            <xs:annotation>
11
+                <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
12
+            </xs:annotation>
13
+        </xs:element>
14
+        <xs:element  minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
15
+            <xs:annotation>
16
+                <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
17
+            </xs:annotation>
18
+        </xs:element>
19
+        <xs:element  minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
20
+            <xs:annotation>
21
+                <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
22
+            </xs:annotation>
23
+        </xs:element>
24
+        <xs:element  minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
25
+            <xs:annotation>
26
+                <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
27
+            </xs:annotation>
28
+        </xs:element>
29
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
30
+            <xs:annotation>
31
+                <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
32
+            </xs:annotation>
33
+        </xs:element>
34
+        <xs:element  minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
35
+            <xs:annotation>
36
+                <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
37
+            </xs:annotation>
38
+        </xs:element>
39
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
40
+            <xs:annotation>
41
+                <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
42
+            </xs:annotation>
43
+        </xs:element>
44
+        <xs:element  minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
45
+            <xs:annotation>
46
+                <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
47
+            </xs:annotation>
48
+        </xs:element>
49
+        <xs:element  minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
50
+            <xs:annotation>
51
+                <xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
52
+            </xs:annotation>
53
+        </xs:element>
54
+    </xs:all>
55
+    <xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
56
+        <xs:annotation>
57
+            <xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
58
+        </xs:annotation>
59
+    </xs:attribute>
60
+    <xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
61
+        <xs:annotation>
62
+            <xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
63
+        </xs:annotation>
64
+    </xs:attribute>
65
+    <xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
66
+        <xs:annotation>
67
+            <xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
68
+        </xs:annotation>
69
+    </xs:attribute>
70
+    <xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
71
+        <xs:annotation>
72
+            <xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
73
+        </xs:annotation>
74
+    </xs:attribute>
75
+    <xs:attribute name="DisableCompression" type="xs:boolean">
76
+        <xs:annotation>
77
+            <xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
78
+        </xs:annotation>
79
+    </xs:attribute>
80
+    <xs:attribute name="DisableCleanup" type="xs:boolean">
81
+        <xs:annotation>
82
+            <xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
83
+        </xs:annotation>
84
+    </xs:attribute>
85
+    <xs:attribute name="DisableEventSubscription" type="xs:boolean">
86
+        <xs:annotation>
87
+            <xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
88
+        </xs:annotation>
89
+    </xs:attribute>
90
+    <xs:attribute name="LoadAtModuleInit" type="xs:boolean">
91
+        <xs:annotation>
92
+            <xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
93
+        </xs:annotation>
94
+    </xs:attribute>
95
+    <xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
96
+        <xs:annotation>
97
+            <xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
98
+        </xs:annotation>
99
+    </xs:attribute>
100
+    <xs:attribute name="ExcludeAssemblies" type="xs:string">
101
+        <xs:annotation>
102
+            <xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
103
+        </xs:annotation>
104
+    </xs:attribute>
105
+    <xs:attribute name="IncludeAssemblies" type="xs:string">
106
+        <xs:annotation>
107
+            <xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
108
+        </xs:annotation>
109
+    </xs:attribute>
110
+    <xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
111
+        <xs:annotation>
112
+            <xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
113
+        </xs:annotation>
114
+    </xs:attribute>
115
+    <xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
116
+        <xs:annotation>
117
+            <xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
118
+        </xs:annotation>
119
+    </xs:attribute>
120
+    <xs:attribute name="Unmanaged32Assemblies" type="xs:string">
121
+        <xs:annotation>
122
+            <xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
123
+        </xs:annotation>
124
+    </xs:attribute>
125
+    <xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
126
+        <xs:annotation>
127
+            <xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
128
+        </xs:annotation>
129
+    </xs:attribute>
130
+    <xs:attribute name="Unmanaged64Assemblies" type="xs:string">
131
+        <xs:annotation>
132
+            <xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
133
+        </xs:annotation>
134
+    </xs:attribute>
135
+    <xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
136
+        <xs:annotation>
137
+            <xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
138
+        </xs:annotation>
139
+    </xs:attribute>
140
+    <xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
141
+        <xs:annotation>
142
+            <xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
143
+        </xs:annotation>
144
+    </xs:attribute>
145
+    <xs:attribute name="PreloadOrder" type="xs:string">
146
+        <xs:annotation>
147
+            <xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
148
+        </xs:annotation>
149
+    </xs:attribute>
150
+</xs:complexType>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/.signature.p7s 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/Fody.6.9.2.nupkg 查看文件


+ 21
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/License.txt 查看文件

@@ -0,0 +1,21 @@
1
+MIT License
2
+
3
+Copyright (c) Simon Cropp
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in
13
+all copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+THE SOFTWARE.

+ 149
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/build/Fody.targets 查看文件

@@ -0,0 +1,149 @@
1
+<Project>
2
+  <PropertyGroup>
3
+    <ProjectWeaverXml Condition="$(ProjectWeaverXml) == ''">$(ProjectDir)FodyWeavers.xml</ProjectWeaverXml>
4
+    <FodyPath Condition="$(FodyPath) == ''">$(MSBuildThisFileDirectory)..\</FodyPath>
5
+    <FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) == 'Core'">$(FodyPath)netstandardtask</FodyAssemblyDirectory>
6
+    <FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) != 'Core'">$(FodyPath)netclassictask</FodyAssemblyDirectory>
7
+    <FodyAssembly Condition="$(FodyAssembly) == ''">$(FodyAssemblyDirectory)\Fody.dll</FodyAssembly>
8
+    <DefaultItemExcludes>$(DefaultItemExcludes);FodyWeavers.xsd</DefaultItemExcludes>
9
+    <FodyGenerateXsd Condition="$(FodyGenerateXsd) == ''">true</FodyGenerateXsd>
10
+    <MsBuildMajorVersion>15</MsBuildMajorVersion>
11
+    <MsBuildMajorVersion Condition="'$(MSBuildVersion)' != ''">$([System.Version]::Parse($(MSBuildVersion)).Major)</MsBuildMajorVersion>
12
+    <FodyAfterTargets Condition="($(MsBuildMajorVersion) &lt; 17) AND '$(FodyAfterTargets)'==''">AfterCompile</FodyAfterTargets>
13
+    <TargetsTriggeredByCompilation Condition="'$(FodyAfterTargets)'==''">$(TargetsTriggeredByCompilation);FodyTarget</TargetsTriggeredByCompilation>
14
+    <DisableFody Condition='$(UseWPF)==true AND $(MSBuildProjectName.EndsWith("_wpftmp"))'>true</DisableFody>
15
+    <FodyTreatWarningsAsErrors Condition="$(FodyTreatWarningsAsErrors) == ''">$(TreatWarningsAsErrors)</FodyTreatWarningsAsErrors>
16
+  </PropertyGroup>
17
+
18
+  <ItemGroup Condition="Exists($(ProjectWeaverXml))">
19
+    <UpToDateCheckInput Include="$(ProjectWeaverXml)" />
20
+    <CustomAdditionalCompileInputs Include="$(ProjectWeaverXml)" />
21
+  </ItemGroup>
22
+
23
+  <!-- Support for NCrunch -->
24
+  <ItemGroup Condition="'$(NCrunch)' == '1' and '$(TargetFramework)' == '' and '$(TargetFrameworks)' == ''">
25
+    <None Include="$(FodyAssemblyDirectory)\*.*" />
26
+    <None Include="@(WeaverFiles)" />
27
+  </ItemGroup>
28
+
29
+  <UsingTask TaskName="Fody.WeavingTask" AssemblyFile="$(FodyAssembly)" />
30
+  <UsingTask TaskName="Fody.UpdateCopyLocalTask" AssemblyFile="$(FodyAssembly)" />
31
+  <UsingTask TaskName="Fody.VerifyTask" AssemblyFile="$(FodyAssembly)" />
32
+
33
+  <Target
34
+      Name="FodyTarget"
35
+      AfterTargets="$(FodyAfterTargets)"
36
+      Condition="Exists(@(IntermediateAssembly)) And ($(DesignTimeBuild) != true Or $(BuildingForLiveUnitTesting) == true) And $(DisableFody) != true"
37
+      DependsOnTargets="$(FodyDependsOnTargets)"
38
+      Inputs="@(IntermediateAssembly);$(ProjectWeaverXml)"
39
+      Outputs="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache;$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache">
40
+
41
+    <Error Condition="($(MsBuildMajorVersion) &lt; 16)"
42
+           Text="Fody is only supported on MSBuild 16 and above. Current version: $(MsBuildMajorVersion)." />
43
+
44
+    <Fody.WeavingTask
45
+        AssemblyFile="@(IntermediateAssembly)"
46
+        IntermediateDirectory="$(ProjectDir)$(IntermediateOutputPath)"
47
+        KeyOriginatorFile="$(KeyOriginatorFile)"
48
+        AssemblyOriginatorKeyFile="$(AssemblyOriginatorKeyFile)"
49
+        ProjectDirectory="$(MSBuildProjectDirectory)"
50
+        ProjectFile="$(MSBuildProjectFullPath)"
51
+        SolutionDirectory="$(SolutionDir)"
52
+        References="@(ReferencePath)"
53
+        SignAssembly="$(SignAssembly)"
54
+        DelaySign="$(DelaySign)"
55
+        ReferenceCopyLocalFiles="@(ReferenceCopyLocalPaths)"
56
+        RuntimeCopyLocalFiles="@(RuntimeCopyLocalItems)"
57
+        DefineConstants="$(DefineConstants)"
58
+        DocumentationFile="@(DocFileItem->'%(FullPath)')"
59
+        WeaverFiles="@(WeaverFiles)"
60
+        WeaverConfiguration="$(WeaverConfiguration)"
61
+        PackageReferences="@(PackageReference)"
62
+        NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
63
+        IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
64
+        RuntimeCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache"
65
+        GenerateXsd="$(FodyGenerateXsd)"
66
+        TreatWarningsAsErrors="$(FodyTreatWarningsAsErrors)"
67
+      >
68
+
69
+      <Output
70
+        TaskParameter="ExecutedWeavers"
71
+        PropertyName="FodyExecutedWeavers" />
72
+
73
+    </Fody.WeavingTask>
74
+
75
+    <ItemGroup>
76
+      <FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache" />
77
+      <FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache" />
78
+    </ItemGroup>
79
+
80
+  </Target>
81
+
82
+  <Target
83
+      Name="FodyUpdateReferenceCopyLocalFilesTarget"
84
+      AfterTargets="FodyTarget"
85
+    >
86
+
87
+    <Fody.UpdateCopyLocalTask
88
+        CopyLocalFiles="@(ReferenceCopyLocalPaths)"
89
+        IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
90
+      >
91
+
92
+      <Output
93
+        TaskParameter="UpdatedCopyLocalFiles"
94
+        ItemName="FodyUpdatedReferenceCopyLocalPaths" />
95
+
96
+    </Fody.UpdateCopyLocalTask>
97
+
98
+    <ItemGroup>
99
+      <FodyRemovedReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths)" />
100
+      <FodyRemovedReferenceCopyLocalPaths Remove="@(FodyUpdatedReferenceCopyLocalPaths)" />
101
+      <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" />
102
+      <ReferenceCopyLocalPaths Include="@(FodyUpdatedReferenceCopyLocalPaths)" />
103
+    </ItemGroup>
104
+
105
+  </Target>
106
+
107
+  <Target
108
+      Name="FodyUpdateRuntimeCopyLocalItemsTarget"
109
+      AfterTargets="FodyTarget"
110
+    >
111
+
112
+    <Fody.UpdateCopyLocalTask
113
+        CopyLocalFiles="@(RuntimeCopyLocalItems)"
114
+        IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache"
115
+      >
116
+
117
+      <Output
118
+        TaskParameter="UpdatedCopyLocalFiles"
119
+        ItemName="FodyUpdatedRuntimeCopyLocalItems" />
120
+
121
+    </Fody.UpdateCopyLocalTask>
122
+
123
+    <ItemGroup>
124
+      <FodyRemovedRuntimeCopyLocalItems Include="@(RuntimeCopyLocalItems)" />
125
+      <FodyRemovedRuntimeCopyLocalItems Remove="@(FodyUpdatedRuntimeCopyLocalItems)" />
126
+      <RuntimeCopyLocalItems Remove="@(RuntimeCopyLocalItems)" />
127
+      <RuntimeCopyLocalItems Include="@(FodyUpdatedRuntimeCopyLocalItems)" />
128
+    </ItemGroup>
129
+
130
+  </Target>
131
+
132
+  <Target
133
+      Name="FodyVerifyTarget"
134
+      AfterTargets="AfterBuild"
135
+      Condition="'$(NCrunch)' != '1' And $(FodyExecutedWeavers) != '' And $(DisableFody) != true"
136
+      DependsOnTargets="$(FodyVerifyDependsOnTargets)">
137
+
138
+    <Fody.VerifyTask
139
+        ProjectDirectory="$(MSBuildProjectDirectory)"
140
+        TargetPath="$(TargetPath)"
141
+        SolutionDirectory="$(SolutionDir)"
142
+        WeaverConfiguration="$(WeaverConfiguration)"
143
+        DefineConstants="$(DefineConstants)"
144
+        NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
145
+      />
146
+
147
+  </Target>
148
+
149
+</Project>

二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Fody.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyCommon.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyHelpers.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/FodyIsolated.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Pdb.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Pdb.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Rocks.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.Rocks.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netclassictask/Mono.Cecil.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Fody.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyCommon.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyHelpers.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/FodyIsolated.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Pdb.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Pdb.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Rocks.dll 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.Rocks.pdb 查看文件


二进制
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.dll 查看文件


+ 0
- 0
加密后软件工具/CAD插件工具/CutDGX/packages/Fody.6.9.2/netstandardtask/Mono.Cecil.pdb 查看文件


部分文件因为文件数量过多而无法显示

正在加载...
取消
保存