diff --git a/IFoxCAD.sln.DotSettings b/IFoxCAD.sln.DotSettings
index fd6a7391d55dfaf3e9da52932a289b706352c250..19866cb828bde97f5a76b88b5328bd11014312ae 100644
--- a/IFoxCAD.sln.DotSettings
+++ b/IFoxCAD.sln.DotSettings
@@ -6,10 +6,12 @@
True
True
True
+ True
True
True
True
True
+ True
True
True
True
@@ -21,5 +23,8 @@
True
True
True
+ True
+ True
+ True
True
True
\ No newline at end of file
diff --git a/IFoxCAD.slnx b/IFoxCAD.slnx
new file mode 100644
index 0000000000000000000000000000000000000000..baef3d3eb6c8cd7464f4b5c40b5d70c8d6665ce6
--- /dev/null
+++ b/IFoxCAD.slnx
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CADShared/Initialize/IAutoGo.cs b/src/CADShared/Initialize/IAutoGo.cs
index a7c6dc198f2b937870fef93aba1f3b621c07d49d..aaa8fd89180f6e3b5f99452b00404c9c63229cec 100644
--- a/src/CADShared/Initialize/IAutoGo.cs
+++ b/src/CADShared/Initialize/IAutoGo.cs
@@ -355,7 +355,7 @@ static void RunFunctions(List runClassList)
///
public static void DebugCheckCmdRecurrence()
{
- HashSet keys = new();
+ HashSet keys = [];
// 本dll中存在冲突命令,此时cad自动接口可以运行,但是加载命令之后会报错,因此利用断点告诉程序员
AutoReflection.AppDomainGetTypes(type => {
@@ -376,7 +376,7 @@ public static void DebugCheckCmdRecurrence()
// 其他dll中存在冲突命令,此时会覆盖命令,友好的提示程序员
keys.Clear();
- HashSet msgMod = new();
+ HashSet msgMod = [];
AutoReflection.AppDomainGetTypes(type => {
var mets = type.GetMethods();
for (int ii = 0; ii < mets.Length; ii++)
diff --git a/tests/TestAcad2025/GlobalUsings.cs b/tests/TestAcad2025/GlobalUsings.cs
index 7fc7a822f636c8ea8bc9bd412723a6452da8c246..acbb5a299092fd08558909dfa32300f8f6d220c7 100644
--- a/tests/TestAcad2025/GlobalUsings.cs
+++ b/tests/TestAcad2025/GlobalUsings.cs
@@ -1,4 +1,4 @@
-/// 系统引用
+// 系统引用
global using System;
global using System.Collections;
global using System.Collections.Generic;
@@ -17,7 +17,7 @@
global using Registry = Microsoft.Win32.Registry;
global using RegistryKey = Microsoft.Win32.RegistryKey;
-/// autocad 引用
+// autocad 引用
global using Autodesk.AutoCAD.ApplicationServices;
global using Autodesk.AutoCAD.EditorInput;
global using Autodesk.AutoCAD.Colors;
@@ -43,8 +43,9 @@
global using Cad_ErrorStatus = Autodesk.AutoCAD.Runtime.ErrorStatus;
-/// ifoxcad
+// ifoxcad
global using Fs.Fox.Cad;
global using Fs.Fox.Basal;
-global using Test;
+global using IFoxTest;
+global using static IFoxTest.FoxDesktop;
diff --git a/tests/TestShared/CmdINI.cs b/tests/TestShared/CmdINI.cs
index e4deab7421abeb2990a02f75dbac0bbf64dc6f90..24e613561238bfed32a4710759aad1d50daf6fad 100644
--- a/tests/TestShared/CmdINI.cs
+++ b/tests/TestShared/CmdINI.cs
@@ -1,8 +1,9 @@
//#define givePeopleTest
+
#if false
using System.Diagnostics;
-namespace Test;
+namespace IFoxTest;
///
/// 注册中心(自动执行接口):
@@ -169,7 +170,6 @@ public void Terminate()
#endif
-
#endif
public class Init
@@ -177,7 +177,6 @@ public class Init
[CommandMethod(nameof(Initialize))]
public void Initialize()
{
-
// var assembly= Assembly.GetExecutingAssembly();
// Env.Printl(assembly.GetName().Name);
// var info = new AssemInfo(assembly);
@@ -188,6 +187,5 @@ public void Initialize()
public void Terminate()
{
-
}
}
\ No newline at end of file
diff --git a/tests/TestShared/Copyclip.cs b/tests/TestShared/Copyclip.cs
index 370936c4a4158fbc94fca8b843d321bfefa97382..6c532bd10479cb3245a5fd1d8007d610a1c3fabc 100644
--- a/tests/TestShared/Copyclip.cs
+++ b/tests/TestShared/Copyclip.cs
@@ -2,7 +2,7 @@
#define COPYCLIP
#define PASTECLIP
#if false
-namespace Test;
+namespace IFoxTest;
using System;
using System.Diagnostics;
using System.Drawing.Imaging;
diff --git a/tests/TestShared/IFoxDesktop.cs b/tests/TestShared/IFoxDesktop.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6b5c37faacb663455bcedff968ab5947de828e2b
--- /dev/null
+++ b/tests/TestShared/IFoxDesktop.cs
@@ -0,0 +1,6 @@
+namespace IFoxTest;
+
+public static class FoxDesktop
+{
+ public static string DeskTop => Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
+}
\ No newline at end of file
diff --git a/tests/TestShared/TestAddEntity.cs b/tests/TestShared/TestAddEntity.cs
index 3f401c37fdff39c3694c0a02b28f377d7c5d45f9..25f8ea14ee534ed31f9dc067545de58aac061b93 100644
--- a/tests/TestShared/TestAddEntity.cs
+++ b/tests/TestShared/TestAddEntity.cs
@@ -1,9 +1,9 @@
-namespace Test;
+namespace IFoxTest;
public partial class Test
{
///
- /// 测试矩形的对角线是否相等,相邻边是否平行,相邻边是否垂直
+ /// 测试矩形的对角线是否相等,相邻边是否平行,相邻边是否垂直
///
[CommandMethod(nameof(Test_Rec))]
public void Test_Rec()
@@ -29,47 +29,52 @@ public void Test_Rec()
pi90.Print();
// 测试对角线长度是否相等,并检查相邻边是否平行
- Tools.TestTimes(1000000, "对角线", () =>
- {
- var result = false;
- if (Math.Abs(p13.Length - p24.Length) <= 1e8)
+ Tools.TestTimes(
+ 1000000,
+ "对角线",
+ () =>
{
- result = p41.IsParallelTo(p12);
+ if (Math.Abs(p13.Length - p24.Length) <= 1e8) p41.IsParallelTo(p12);
}
- });
-
+ );
#pragma warning disable CS0219 // 变量已被赋值,但从未使用过它的值
//使用三次点乘法测试相邻边是否垂直
- Tools.TestTimes(1000000, "三次点乘", () =>
- {
- bool result = Math.Abs(p12.DotProduct(p23)) < 1e8 &&
- Math.Abs(p23.DotProduct(p34)) < 1e8 &&
- Math.Abs(p34.DotProduct(p41)) < 1e8;
- });
+ Tools.TestTimes(
+ 1000000,
+ "三次点乘",
+ () =>
+ {
+ var unused =
+ Math.Abs(p12.DotProduct(p23)) < 1e8
+ && Math.Abs(p23.DotProduct(p34)) < 1e8
+ && Math.Abs(p34.DotProduct(p41)) < 1e8;
+ }
+ );
//使用三次平行测试相邻边是否垂直
- Tools.TestTimes(1000000, "三次垂直", () =>
- {
- bool result = p12.IsParallelTo(p23) &&
- p23.IsParallelTo(p34) &&
- p34.IsParallelTo(p41);
- });
+ Tools.TestTimes(
+ 1000000,
+ "三次垂直",
+ () =>
+ {
+ var unused =
+ p12.IsParallelTo(p23) && p23.IsParallelTo(p34) && p34.IsParallelTo(p41);
+ }
+ );
#pragma warning restore CS0219 // 变量已被赋值,但从未使用过它的值
}
-
-
[CommandMethod(nameof(Test_EntRoration))]
public void Test_EntRoration()
{
- var line = new Line(new(0, 0, 0), new(100, 0, 0));
+ var line = new Line(new Point3d(0, 0, 0), new Point3d(100, 0, 0));
using DBTrans tr = new();
tr.CurrentSpace.AddEntity(line);
var line2 = (Line)line.Clone();
tr.CurrentSpace.AddEntity(line2);
- line2.Rotation(new(100, 0, 0), Math.PI / 2);
+ line2.Rotation(new Point3d(100, 0, 0), Math.PI / 2);
}
[CommandMethod(nameof(Test_TypeSpeed))]
@@ -77,34 +82,45 @@ public void Test_TypeSpeed()
{
var line = new Line();
var line1 = line as Entity;
- Tools.TestTimes(100000, "is 匹配:", () => {
- var t = line1 is Line;
- });
- Tools.TestTimes(100000, "name 匹配:", () => {
- // var t = line.GetType().Name;
- var tt = line1.GetType().Name == nameof(Line);
- });
- Tools.TestTimes(100000, "dxfname 匹配:", () => {
- // var t = line.GetType().Name;
- var tt = line1.GetRXClass().DxfName == nameof(Line);
- });
+ Tools.TestTimes(
+ 100000,
+ "is 匹配:",
+ () =>
+ {
+ var unused = line1 is Line;
+ }
+ );
+ Tools.TestTimes(
+ 100000,
+ "name 匹配:",
+ () =>
+ {
+ // var t = line.GetType().Name;
+ var unused = line1.GetType().Name == nameof(Line);
+ }
+ );
+ Tools.TestTimes(
+ 100000,
+ "dxfName 匹配:",
+ () =>
+ {
+ // var t = line.GetType().Name;
+ var unused = line1.GetRXClass().DxfName == nameof(Line);
+ }
+ );
}
- [CommandMethod(nameof(Test_sleeptrans))]
- public static void Test_sleeptrans()
+ [CommandMethod(nameof(Test_SleepTrans))]
+ public static void Test_SleepTrans()
{
using var tr = new DBTrans();
- for (int i = 0; i < 100; i++)
+ for (var i = 0; i < 100; i++)
{
var cir = CircleEx.CreateCircle(new Point3d(i, i, 0), 0.5);
- if (cir is null)
- {
- return;
- }
cir.ColorIndex = i;
tr.CurrentSpace.AddEntity(cir);
tr.Editor?.Redraw(cir);
- System.Threading.Thread.Sleep(10);
+ Thread.Sleep(10);
}
}
}
\ No newline at end of file
diff --git a/tests/TestShared/TestBlock.cs b/tests/TestShared/TestBlock.cs
index 20baa825524e98a23c29a8e527db295beaa9513e..127ce22615014a2d44f9e298d56f64afb792a150 100644
--- a/tests/TestShared/TestBlock.cs
+++ b/tests/TestShared/TestBlock.cs
@@ -1,27 +1,30 @@
-
-namespace Test;
+using System.Windows.Forms;
+
+namespace IFoxTest;
public class TestBlock
{
// 一个命令就把块编辑搞定,减少用户记忆命令
- [CommandMethod(nameof(Test_Refedit), CommandFlags.Redraw | CommandFlags.Session)]
- public void Test_Refedit()
+ [CommandMethod(nameof(Test_RefEdit), CommandFlags.Redraw | CommandFlags.Session)]
+ public void Test_RefEdit()
{
- Env.Printl($"{nameof(Test_Refedit)}-在位编辑块/在位保存块");
+ Env.Printl($"{nameof(Test_RefEdit)}-在位编辑块/在位保存块");
// 全部用lisp发送命令是为了空格还是本命令
// 打开了块编辑器,就关闭掉,保存提示
if ((short)Env.GetVar("BlockEditor") == 1)
{
- Env.Editor.RunLisp("(command \"_.bclose\")");
+ Env.Editor.RunLisp("(command \"_.bClose\")");
return;
}
+
// 0x01 非在位编辑状态: 先选择块参照,然后在位编辑
// 0x02 在位编辑状态: 关闭并保存
- if (Env.GetVar("RefEditName").ToString() == "")//显示正在编辑的参照名称
- Env.Editor.RunLisp("(command \"_.refedit\")");//直接点选可以有嵌套层次
- else
- Env.Editor.RunLisp("(command \"_.refclose\" \"s\")");
+ Env.Editor.RunLisp(
+ Env.GetVar("RefEditName").ToString() == "" //显示正在编辑的参照名称
+ ? "(command \"_.refEdit\")"
+ : "(command \"_.refClose\" \"s\")"
+ ); //直接点选可以有嵌套层次
}
[CommandMethod(nameof(Test_GetBoundingBoxEx))]
@@ -34,7 +37,7 @@ public void Test_GetBoundingBoxEx()
foreach (var item in ents)
{
var box = item?.GetBoundingBoxEx();
- Env.Print("min:" + box?.BottomLeft + ";max" + box?.TopRight);
+ ("min:" + box?.BottomLeft + ";max" + box?.TopRight).Print();
if (box != null)
tr.CurrentSpace.AddEntity(new Line(box.Value.BottomLeft, box.Value.TopRight));
}
@@ -46,7 +49,8 @@ public void Test_BlockDef()
{
using DBTrans tr = new();
// var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
- tr.BlockTable.Add("test",
+ tr.BlockTable.Add(
+ "test",
btr =>
{
btr.Origin = new Point3d(0, 0, 0);
@@ -55,67 +59,87 @@ public void Test_BlockDef()
new List { new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0)) },
() => // 属性定义
{
- var id1 = new AttributeDefinition() { Position = new Point3d(0, 0, 0), Tag = "start", Height = 0.2 };
- var id2 = new AttributeDefinition() { Position = new Point3d(1, 1, 0), Tag = "end", Height = 0.2 };
+ var id1 = new AttributeDefinition
+ {
+ Position = new Point3d(0, 0, 0),
+ Tag = "start",
+ Height = 0.2,
+ };
+ var id2 = new AttributeDefinition
+ {
+ Position = new Point3d(1, 1, 0),
+ Tag = "end",
+ Height = 0.2,
+ };
return new List { id1, id2 };
}
);
// ObjectId objectId = tr.BlockTable.Add("a");// 新建块
// objectId.GetObject().AddEntity();// 测试添加空实体
- tr.BlockTable.Add("test1",
- btr =>
- {
- btr.Origin = new Point3d(0, 0, 0);
- },
- () =>
- {
- var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
- var acText = DBTextEx.CreateDBText(Point3d.Origin, "123", 2.5);
- return new List { line, acText };
- });
+ tr.BlockTable.Add(
+ "test1",
+ btr =>
+ {
+ btr.Origin = new Point3d(0, 0, 0);
+ },
+ () =>
+ {
+ var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
+ var acText = DBTextEx.CreateDBText(Point3d.Origin, "123", 2.5);
+ return new List { line, acText };
+ }
+ );
}
// 后台块定义
[CommandMethod(nameof(Test_BlockDefbehind))]
public void Test_BlockDefbehind()
{
- using DBTrans tr = new(@"C:\Users\vic\Desktop\test.dwg");
+ using DBTrans tr = new(Path.Combine(DeskTop, "test.dwg"));
// var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
- tr.BlockTable.Add("test",
+ tr.BlockTable.Add(
+ "test",
btr =>
{
btr.Origin = new Point3d(0, 0, 0);
},
- () => // 图元
- {
- return new List { new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0)) };
- },
- () => // 属性定义
+ () => new List { new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0)) }, // 图元
+ () =>
{
- var id1 = new AttributeDefinition() { Position = new Point3d(0, 0, 0), Tag = "start", Height = 0.2 };
- var id2 = new AttributeDefinition() { Position = new Point3d(1, 1, 0), Tag = "end", Height = 0.2 };
+ var id1 = new AttributeDefinition
+ {
+ Position = new Point3d(0, 0, 0),
+ Tag = "start",
+ Height = 0.2,
+ };
+ var id2 = new AttributeDefinition
+ {
+ Position = new Point3d(1, 1, 0),
+ Tag = "end",
+ Height = 0.2,
+ };
return new List { id1, id2 };
- }
+ } // 属性定义
);
// ObjectId objectId = tr.BlockTable.Add("a");// 新建块
// objectId.GetObject().AddEntity();// 测试添加空实体
- tr.BlockTable.Add("test1",
- btr =>
- {
- btr.Origin = new Point3d(0, 0, 0);
- },
- () =>
- {
- var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
- var acText = DBTextEx.CreateDBText(Point3d.Origin, "12345", 2.5);
+ tr.BlockTable.Add(
+ "test1",
+ btr =>
+ {
+ btr.Origin = new Point3d(0, 0, 0);
+ },
+ () =>
+ {
+ var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
+ var acText = DBTextEx.CreateDBText(Point3d.Origin, "12345", 2.5);
- return new List { line, acText };
- });
+ return new List { line, acText };
+ }
+ );
tr.Database.SaveDwgFile();
}
-
-
// 修改块定义
[CommandMethod(nameof(Test_BlockDefChange))]
public void Test_BlockDefChange()
@@ -132,27 +156,29 @@ public void Test_BlockDefChange()
// });
-
- tr.BlockTable.Change("test", btr =>
- {
- foreach (var id in btr)
+ tr.BlockTable.Change(
+ "test",
+ btr =>
{
- var ent = tr.GetObject(id);
- using (ent!.ForWrite())
+ foreach (var id in btr)
{
- switch (ent)
+ var ent = tr.GetObject(id);
+ using (ent!.ForWrite())
{
- case Dimension dBText:
- dBText.DimensionText = "234";
- dBText.RecomputeDimensionBlock(true);
- break;
- case Hatch hatch:
- hatch.ColorIndex = 0;
- break;
+ switch (ent)
+ {
+ case Dimension dBText:
+ dBText.DimensionText = "234";
+ dBText.RecomputeDimensionBlock(true);
+ break;
+ case Hatch hatch:
+ hatch.ColorIndex = 0;
+ break;
+ }
}
}
}
- });
+ );
tr.Editor?.Regen();
}
@@ -162,11 +188,22 @@ public void Test_InsertBlockDef()
using DBTrans tr = new();
var line1 = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
var line2 = new Line(new Point3d(0, 0, 0), new Point3d(-1, 1, 0));
- var att1 = new AttributeDefinition() { Position = new Point3d(10, 10, 0), Tag = "tagTest1", Height = 1, TextString = "valueTest1" };
- var att2 = new AttributeDefinition() { Position = new Point3d(10, 12, 0), Tag = "tagTest2", Height = 1, TextString = "valueTest2" };
+ var att1 = new AttributeDefinition
+ {
+ Position = new Point3d(10, 10, 0),
+ Tag = "tagTest1",
+ Height = 1,
+ TextString = "valueTest1",
+ };
+ var att2 = new AttributeDefinition
+ {
+ Position = new Point3d(10, 12, 0),
+ Tag = "tagTest2",
+ Height = 1,
+ TextString = "valueTest2",
+ };
tr.BlockTable.Add("test1", line1, line2, att1, att2);
-
List ents = [];
var line5 = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
var line6 = new Line(new Point3d(0, 0, 0), new Point3d(-1, 1, 0));
@@ -174,29 +211,36 @@ public void Test_InsertBlockDef()
ents.Add(line6);
tr.BlockTable.Add("test44", ents);
-
var line3 = new Line(new Point3d(5, 5, 0), new Point3d(6, 6, 0));
var line4 = new Line(new Point3d(5, 5, 0), new Point3d(-6, 6, 0));
- var att3 = new AttributeDefinition() { Position = new Point3d(10, 14, 0), Tag = "tagTest3", Height = 1, TextString = "valueTest3" };
- var att4 = new AttributeDefinition() { Position = new Point3d(10, 16, 0), Tag = "tagTest4", Height = 1, TextString = "valueTest4" };
- tr.BlockTable.Add("test2", new List { line3, line4 }, new List { att3, att4 });
+ var att3 = new AttributeDefinition
+ {
+ Position = new Point3d(10, 14, 0),
+ Tag = "tagTest3",
+ Height = 1,
+ TextString = "valueTest3",
+ };
+ var att4 = new AttributeDefinition
+ {
+ Position = new Point3d(10, 16, 0),
+ Tag = "tagTest4",
+ Height = 1,
+ TextString = "valueTest4",
+ };
+ tr.BlockTable.Add(
+ "test2",
+ new List { line3, line4 },
+ new List { att3, att4 }
+ );
// tr.CurrentSpace.InsertBlock(new Point3d(4, 4, 0), "test1"); // 测试默认
// tr.CurrentSpace.InsertBlock(new Point3d(4, 4, 0), "test2");
// tr.CurrentSpace.InsertBlock(new Point3d(4, 4, 0), "test3"); // 测试插入不存在的块定义
// tr.CurrentSpace.InsertBlock(new Point3d(0, 0, 0), "test1", new Scale3d(2)); // 测试放大2倍
// tr.CurrentSpace.InsertBlock(new Point3d(4, 4, 0), "test1", new Scale3d(2), Math.PI / 4); // 测试放大2倍,旋转45度
- var def1 = new Dictionary
- {
- { "tagTest1", "1" },
- { "tagTest2", "2" }
- };
+ var def1 = new Dictionary { { "tagTest1", "1" }, { "tagTest2", "2" } };
tr.CurrentSpace.InsertBlock(new Point3d(0, 0, 0), "test1", atts: def1);
- var def2 = new Dictionary
- {
- { "tagTest3", "1" },
- { "tagTest4", "" }
- };
+ var def2 = new Dictionary { { "tagTest3", "1" }, { "tagTest4", "" } };
tr.CurrentSpace.InsertBlock(new Point3d(10, 10, 0), "test2", atts: def2);
tr.CurrentSpace.InsertBlock(new Point3d(20, 20, 0), "test2");
tr.CurrentSpace.InsertBlock(new Point3d(-10, 0, 0), "test44");
@@ -205,28 +249,34 @@ public void Test_InsertBlockDef()
[CommandMethod(nameof(Test_InsertBlockWithDoubleDatabase))]
public void Test_InsertBlockWithDoubleDatabase()
{
- using var tr = new DBTrans(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.dwg"));
+ using var tr = new DBTrans(
+ Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.dwg")
+ );
using var trans = new DBTrans();
- tr.BlockTable.Add("test456",
+ tr.BlockTable.Add(
+ "test456",
btr =>
{
- btr.Origin = new(0, 0, 0);
+ btr.Origin = new Point3d(0, 0, 0);
},
() =>
{
- var line = new Line(new(0, 0, 0), new(1, 1, 0));
- var actext = DBTextEx.CreateDBText(Point3d.Origin, "123", 2.5, database: tr.Database);
+ var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0));
+ var actext = DBTextEx.CreateDBText(
+ Point3d.Origin,
+ "123",
+ 2.5,
+ database: tr.Database
+ );
return new List { line, actext };
-
- });
+ }
+ );
tr.CurrentSpace.InsertBlock(Point3d.Origin, "test456");
tr.Database.SaveDwgFile();
}
-
-
[CommandMethod(nameof(Test_AddAttsDef))]
public void Test_AddAttsDef()
{
@@ -235,9 +285,21 @@ public void Test_AddAttsDef()
var btf = tr.GetObject(blockid);
if (btf is null)
return;
- var att1 = new AttributeDefinition() { Position = new Point3d(20, 20, 0), Tag = "addtagTest1", Height = 1, TextString = "valueTest1" };
- var att2 = new AttributeDefinition() { Position = new Point3d(10, 12, 0), Tag = "tagTest2", Height = 1, TextString = "valueTest2" };
- tr.BlockTable.AddAttsToBlocks(btf.BlockTableRecord, new() { att1, att2 });
+ var att1 = new AttributeDefinition
+ {
+ Position = new Point3d(20, 20, 0),
+ Tag = "addtagTest1",
+ Height = 1,
+ TextString = "valueTest1",
+ };
+ var att2 = new AttributeDefinition
+ {
+ Position = new Point3d(10, 12, 0),
+ Tag = "tagTest2",
+ Height = 1,
+ TextString = "valueTest2",
+ };
+ tr.BlockTable.AddAttsToBlocks(btf.BlockTableRecord, [att1, att2]);
}
[CommandMethod(nameof(Test_BlockNullBug))]
@@ -258,18 +320,21 @@ public void Test_BlockNullBug()
public void Test_BlockFile()
{
using DBTrans tr = new();
- var id = tr.BlockTable.GetBlockFrom(@"C:\Users\vic\Desktop\test.dwg", false);
+ var id = tr.BlockTable.GetBlockFrom(Path.Combine(DeskTop, "test.dwg"), false);
tr.CurrentSpace.InsertBlock(Point3d.Origin, id);
}
[CommandMethod(nameof(Test_BlockFiledxf))]
public void Test_BlockFiledxf()
{
- string [] files;
- var folder= new System.Windows.Forms.FolderBrowserDialog();
- if (folder.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- files = Directory.GetFiles(folder.SelectedPath,"*.dxf",SearchOption.AllDirectories);
+ var folder = new FolderBrowserDialog();
+ if (folder.ShowDialog() == DialogResult.OK)
+ {
+ string[] files = Directory.GetFiles(
+ folder.SelectedPath,
+ "*.dxf",
+ SearchOption.AllDirectories
+ );
using DBTrans tr = new();
foreach (var item in files)
{
@@ -280,51 +345,49 @@ public void Test_BlockFiledxf()
tr.CurrentSpace.InsertBlock(pt.Value, id);
Env.Editor.Redraw();
}
-
}
-
}
-
-
}
[CommandMethod(nameof(Test_ClipBlock))]
public void Test_ClipBlock()
{
using DBTrans tr = new();
- tr.BlockTable.Add("test1", btr =>
- {
- btr.Origin = new Point3d(0, 0, 0);
- btr.AddEntity(new Line(new Point3d(0, 0, 0), new Point3d(10, 10, 0)),
- new Line(new Point3d(10, 10, 0), new Point3d(10, 0, 0)));
- });
+ tr.BlockTable.Add(
+ "test1",
+ btr =>
+ {
+ btr.Origin = new Point3d(0, 0, 0);
+ btr.AddEntity(
+ new Line(new Point3d(0, 0, 0), new Point3d(10, 10, 0)),
+ new Line(new Point3d(10, 10, 0), new Point3d(10, 0, 0))
+ );
+ }
+ );
// tr.BlockTable.Add("hah");
var id = tr.CurrentSpace.InsertBlock(new Point3d(0, 0, 0), "test1");
var brf1 = tr.GetObject(id)!;
- var pts = new List { new Point3d(3, 3, 0), new Point3d(7, 3, 0), new Point3d(7, 7, 0), new Point3d(3, 7, 0) };
+ var pts = new List { new(3, 3, 0), new(7, 3, 0), new(7, 7, 0), new(3, 7, 0) };
brf1.XClip(pts);
- var id1 = tr.CurrentSpace.InsertBlock(new Point3d(20, 20, 0), "test1");
+ var unused = tr.CurrentSpace.InsertBlock(new Point3d(20, 20, 0), "test1");
var brf2 = tr.GetObject(id);
brf2?.XClip(new Point3d(13, 13, 0), new Point3d(17, 17, 0));
}
-
[CommandMethod(nameof(Test_ClipBlock1))]
public void Test_ClipBlock1()
{
using DBTrans tr = new();
var ent = Env.Editor.GetEntity("pick block");
- if (ent.Status != PromptStatus.OK) return;
+ if (ent.Status != PromptStatus.OK)
+ return;
var brf1 = tr.GetObject(ent.ObjectId)!;
- var pts = new List { new Point3d(3, 3, 0), new Point3d(7, 3, 0), new Point3d(7, 7, 0), new Point3d(3, 7, 0) };
+ var pts = new List { new(3, 3, 0), new(7, 3, 0), new(7, 7, 0), new(3, 7, 0) };
brf1.XClip(pts);
-
}
-
-
// 给用户的测试程序,不知道对错
[CommandMethod(nameof(Test_Block_ej))]
public void Test_Block_ej()
@@ -345,16 +408,19 @@ public void Test_Block_ej()
// }
- string fullFileName = @"C:\Users\vic\Desktop\001.dwg";
- var blockdef = tr.BlockTable.GetBlockFrom(fullFileName, false);
+ var fullFileName = Path.Combine(DeskTop, "001.dwg");
+ var blockdef = tr.BlockTable.GetBlockFrom(Path.Combine(DeskTop, fullFileName), false);
- tr.Database.Clayer = tr.LayerTable["0"];// 当前图层切换为0图层
- tr.LayerTable.Change(tr.Database.Clayer, ltr =>
- {
- ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, 2); // ColorMethod.ByAci可以让我们使用AutoCAD ACI颜色索引……这里为2(表示黄色)
- });
+ tr.Database.Clayer = tr.LayerTable["0"]; // 当前图层切换为0图层
+ tr.LayerTable.Change(
+ tr.Database.Clayer,
+ ltr =>
+ {
+ ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, 2); // ColorMethod.ByAci可以让我们使用AutoCAD ACI颜色索引……这里为2(表示黄色)
+ }
+ );
- var id = tr.ModelSpace.InsertBlock(Point3d.Origin, blockdef);// 插入块参照
+ var id = tr.ModelSpace.InsertBlock(Point3d.Origin, blockdef); // 插入块参照
var brf = tr.GetObject(id);
brf?.Draw();
}
@@ -375,45 +441,44 @@ public void Test_Block_ej()
var btr = tr2.BlockTable[brf2.Name];
- tr2.BlockTable.Change(btr, ltr =>
- {
- foreach (ObjectId oid in ltr)
+ tr2.BlockTable.Change(
+ btr,
+ ltr =>
{
- var ent = tr2.GetObject(oid);
- if (ent is MText mText)
+ foreach (var oid in ltr)
{
- using (ent.ForWrite())
- switch (mText.Text)
+ var ent = tr2.GetObject(oid);
+ if (ent is MText mText)
+ using (ent.ForWrite())
{
- case "$$A":
- mText.Contents = "hahaha";
- break;
- case "$$B":
- break;
- default:
- break;
+ switch (mText.Text)
+ {
+ case "$$A":
+ mText.Contents = "hahaha";
+ break;
+ case "$$B":
+ break;
+ }
}
- }
- else if (ent is DBText dBText)
- {
- using (ent.ForWrite())
- dBText.TextString = "haha";
- }
- else if (ent is Dimension dimension)
- {
- using (ent.ForWrite())
- switch (dimension.DimensionText)
+ else if (ent is DBText dBText)
+ using (ent.ForWrite())
{
- case "$$pipeLen":
- dimension.DimensionText = "350";
- dimension.RecomputeDimensionBlock(true);
- break;
- default:
- break;
+ dBText.TextString = "haha";
+ }
+ else if (ent is Dimension dimension)
+ using (ent.ForWrite())
+ {
+ switch (dimension.DimensionText)
+ {
+ case "$$pipeLen":
+ dimension.DimensionText = "350";
+ dimension.RecomputeDimensionBlock(true);
+ break;
+ }
}
}
}
- });
+ );
tr2.Editor?.Regen();
}
@@ -421,12 +486,11 @@ public void Test_Block_ej()
public void Test_QuickBlockDef2()
{
// Database db = HostApplicationServices.WorkingDatabase;
- Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
PromptSelectionOptions promptOpt = new()
{
- MessageForAdding = "请选择需要快速制作块的对象"
+ MessageForAdding = "请选择需要快速制作块的对象",
};
- string blockName = "W_BLOCK_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
+ var blockName = "W_BLOCK_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
// var rss = ed.GetSelection(promptOpt);
var rss = Env.Editor.GetSelection(promptOpt);
using DBTrans tr = new();
@@ -457,11 +521,11 @@ public void Test_QuickBlockDef2()
// }
// }
// ents = ents.OrderBy(x => x.Value).ToList();
- var ents = rss.Value.GetEntities();
+ var ents = rss.Value.GetEntities().ToList();
// ents.ForEach(ent => extents.AddExtents(ent.GeometricExtents));
- var extents = ents!.GetExtents();
- Point3d pt = extents.MinPoint;
- Matrix3d matrix = Matrix3d.Displacement(Point3d.Origin - pt);
+ var extents = ents.GetExtents();
+ var pt = extents.MinPoint;
+ var matrix = Matrix3d.Displacement(Point3d.Origin - pt);
// List newEnts = [];
// foreach (var ent in ents)
// {
@@ -474,8 +538,7 @@ public void Test_QuickBlockDef2()
// Acap.ShowAlertDialog(Environment.NewLine + "块名重复,程序退出!");
// return;
// }
- ents.ForEach(ent =>
- ent?.ForWrite(e => e?.TransformBy(matrix)));
+ ents.ForEach(ent => ent?.ForWrite(e => e?.TransformBy(matrix)));
// var newents = ents.Select(ent =>
// {
// var maping = new IdMapping();
@@ -485,9 +548,9 @@ public void Test_QuickBlockDef2()
// ents.ForEach(ent => ent.ForWrite(e => e.Erase(true))); // 删除实体就会卡死,比较奇怪,估计是Clone()函数的问题
// 经过测试不是删除的问题
- var btrId = tr.BlockTable.Add(blockName, newents!);
+ tr.BlockTable.Add(blockName, newents!);
ents.ForEach(ent => ent?.ForWrite(e => e?.Erase(true)));
- var bId = tr.CurrentSpace.InsertBlock(pt, blockName);
+ tr.CurrentSpace.InsertBlock(pt, blockName);
// tr.GetObject(bId, OpenMode.ForWrite).Move(Point3d.Origin, Point3d.Origin);
// var ed = Acap.DocumentManager.MdiActiveDocument.Editor;
// ed.Regen();
@@ -506,16 +569,16 @@ public void Test_QuickBlockDef2()
[CommandMethod(nameof(Test_QuickBlockDef1))]
public void Test_QuickBlockDef1()
{
- var dm = Acap.DocumentManager;
+ var dm = Acaop.DocumentManager;
var doc = dm.MdiActiveDocument;
var db = doc.Database;
var ed = doc.Editor;
PromptSelectionOptions promptOpt = new()
{
- MessageForAdding = "请选择需要快速制作块的对象"
+ MessageForAdding = "请选择需要快速制作块的对象",
};
- string blockName = "W_BLOCK_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
+ var blockName = "W_BLOCK_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
var rss = Env.Editor.GetSelection(promptOpt);
if (rss.Status != PromptStatus.OK)
return;
@@ -523,16 +586,14 @@ public void Test_QuickBlockDef1()
using var tr = db.TransactionManager.StartTransaction();
var ids = rss.Value.GetObjectIds();
var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
- var btr = new BlockTableRecord
- {
- Name = blockName
- };
+ var btr = new BlockTableRecord { Name = blockName };
foreach (var item in ids)
{
var ent = tr.GetObject(item, OpenMode.ForRead) as Entity;
btr.AppendEntity(ent!.Clone() as Entity);
ent.ForWrite(e => e.Erase(true));
}
+
bt!.UpgradeOpen();
bt.Add(btr);
tr.AddNewlyCreatedDBObject(btr, true);
@@ -544,10 +605,7 @@ public void Test_QuickBlockDef1()
// {
// var bt = tr1.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
var btr1 = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
- var brf = new BlockReference(Point3d.Origin, bt[blockName])
- {
- ScaleFactors = default
- };
+ var brf = new BlockReference(Point3d.Origin, bt[blockName]) { ScaleFactors = default };
btr1!.AppendEntity(brf);
tr.AddNewlyCreatedDBObject(brf, true);
btr1.DowngradeOpen();
@@ -556,38 +614,31 @@ public void Test_QuickBlockDef1()
// ed.Regen();
}
- void Wblock()
+ private void Wblock()
{
var curdb = HostApplicationServices.WorkingDatabase;
- PromptSelectionOptions opts = new()
- {
- MessageForAdding = "选择对象"
- };
+ PromptSelectionOptions opts = new() { MessageForAdding = "选择对象" };
var ss = Env.Editor.GetSelection(opts).Value;
using ObjectIdCollection ids = new(ss.GetObjectIds());
var db = curdb.Wblock(ids, Point3d.Origin);
db.SaveAs(@"c:\test.dwg", DwgVersion.Current);
}
+
[CommandMethod(nameof(ChangeDynameicBlock))]
public void ChangeDynameicBlock()
{
- var pro = new Dictionary
- {
- { "haha", 1 }
- };
+ var pro = new Dictionary { { "haha", 1 } };
var blockid = Env.Editor.GetEntity("选择个块").ObjectId;
using DBTrans tr = new();
var brf = tr.GetObject(blockid)!;
brf.ChangeBlockProperty(pro);
// 这是第一个函数的用法
}
+
[CommandMethod(nameof(ChangeBlockProperty))]
public void ChangeBlockProperty()
{
- Dictionary? pro = new()
- {
- { "haha", "1" }
- };
+ Dictionary pro = new() { { "haha", "1" } };
var blockid = Env.Editor.GetEntity("选择个块").ObjectId;
using DBTrans tr = new();
var brf = tr.GetObject(blockid)!;
@@ -598,25 +649,27 @@ public void ChangeBlockProperty()
[CommandMethod(nameof(Test_Back))]
public void Test_Back()
{
- string dir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
- string dwg = dir + "\\test.dwg";
+ var dir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
+ var dwg = dir + "\\test.dwg";
if (!File.Exists(dwg))
{
- System.Windows.Forms.MessageBox.Show(dwg, "你还没有创建此文件");
+ MessageBox.Show(dwg, "你还没有创建此文件");
return;
}
using DBTrans tr = new(dwg);
- tr.ModelSpace.GetEntities().ForEach(ent =>
- {
- ent.ForWrite(e => e.ColorIndex = 3);
- });
+ tr.ModelSpace.GetEntities()
+ .ForEach(ent =>
+ {
+ ent.ForWrite(e => e.ColorIndex = 3);
+ });
tr.Database.SaveAs(dwg, DwgVersion.Current);
- tr.ModelSpace.GetEntities().ForEach(ent =>
- {
- ent.ForWrite(e => e.ColorIndex = 4);
- });
+ tr.ModelSpace.GetEntities()
+ .ForEach(ent =>
+ {
+ ent.ForWrite(e => e.ColorIndex = 4);
+ });
tr.Database.SaveAs(dwg, DwgVersion.Current);
}
@@ -629,7 +682,7 @@ public void Test_ExplodeBlock()
using var tr = new DBTrans();
if (tr.GetObject(r1.ObjectId, OpenMode.ForWrite) is not BlockReference brf)
return;
- var dboc = new DBObjectCollection();
+ var unused = new DBObjectCollection();
// brf.Explode(dboc);
brf.ExplodeToOwnerSpace();
// foreach (Entity item in dboc)
@@ -643,24 +696,23 @@ public void Test_ExplodeBlock()
}
}
-
-
public static class Blocks
{
+ private static ObjectIdCollection _idsAdded = [];
[CommandMethod("TestExplodeToOwnerSpace3")]
public static void TestExplodeToOwnerSpace3_Method()
{
- Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
+ var ed = Acaop.DocumentManager.MdiActiveDocument.Editor;
try
{
- PromptEntityOptions prEntOpt = new PromptEntityOptions("\nSelect an INSERT:");
+ var prEntOpt = new PromptEntityOptions("\nSelect an INSERT:");
prEntOpt.SetRejectMessage("\nIt is not an INSERT!");
prEntOpt.AddAllowedClass(typeof(BlockReference), true);
- PromptEntityResult selRes = ed.GetEntity(prEntOpt);
+ var selRes = ed.GetEntity(prEntOpt);
if (selRes.Status == PromptStatus.OK)
{
- ObjectIdCollection ids = ExplodeToOwnerSpace3(selRes.ObjectId);
+ var ids = ExplodeToOwnerSpace3(selRes.ObjectId);
ed.WriteMessage("{0} entities were added into database.", ids.Count);
}
else
@@ -668,7 +720,7 @@ public static void TestExplodeToOwnerSpace3_Method()
ed.WriteMessage("\nEntity Selection failed!");
}
}
- catch (System.Exception ex)
+ catch (Exception ex)
{
ed.WriteMessage(ex.Message);
}
@@ -681,55 +733,54 @@ public static void ExplodeToOwnerSpace2(ObjectId id, bool erase = true)
public static void ExplodeToOwnerSpace2(this BlockReference br)
{
- ExplodeToOwnerSpace3(br);
+ br.ExplodeToOwnerSpace3();
}
- public static ObjectIdCollection ExplodeToOwnerSpace3(ObjectId id, bool erase = true)
+ private static ObjectIdCollection ExplodeToOwnerSpace3(ObjectId id, bool erase = true)
{
- ObjectIdCollection ids;
+ using var tr = id.Database.TransactionManager.StartTransaction();
+ var br = (BlockReference)tr.GetObject(id, OpenMode.ForRead);
+ var ids = br.ExplodeToOwnerSpace3();
- using (Transaction tr = id.Database.TransactionManager.StartTransaction())
+ if (erase)
{
- BlockReference br = (BlockReference)tr.GetObject(id, OpenMode.ForRead);
- ids = br.ExplodeToOwnerSpace3();
-
- if (erase)
- {
- br.UpgradeOpen();
- br.Erase();
- }
-
- tr.Commit();
+ br.UpgradeOpen();
+ br.Erase();
}
+ tr.Commit();
+
return ids;
}
- private static ObjectIdCollection idsAdded = [];
- public static ObjectIdCollection ExplodeToOwnerSpace3(this BlockReference br)
+ private static ObjectIdCollection ExplodeToOwnerSpace3(this BlockReference br)
{
- idsAdded = new ObjectIdCollection();
+ _idsAdded = new ObjectIdCollection();
- Transaction tr = br.Database.TransactionManager.TopTransaction;
- BlockTableRecord spaceBtr = (BlockTableRecord)tr.GetObject(br.BlockId, OpenMode.ForWrite);
- LoopThroughInsertAndAddEntity2n3(br.BlockTransform, br, spaceBtr);
+ var tr = br.Database.TransactionManager.TopTransaction;
+ var spaceBtr = (BlockTableRecord)tr.GetObject(br.BlockId, OpenMode.ForWrite);
+ LoopThroughInsertAndAddEntity2N3(br.BlockTransform, br, spaceBtr);
- return idsAdded;
+ return _idsAdded;
}
+
// 不能用于非等比
- public static void LoopThroughInsertAndAddEntity2n3(Matrix3d mat, BlockReference br, BlockTableRecord space)
+ private static void LoopThroughInsertAndAddEntity2N3(
+ Matrix3d mat,
+ BlockReference br,
+ BlockTableRecord space
+ )
{
- Transaction tr = space.Database.TransactionManager.TopTransaction;
- BlockTableRecord btr = (BlockTableRecord)tr.GetObject(br.BlockTableRecord, OpenMode.ForRead);
+ var tr = space.Database.TransactionManager.TopTransaction;
+ var btr = (BlockTableRecord)tr.GetObject(br.BlockTableRecord, OpenMode.ForRead);
- foreach (ObjectId id in btr)
+ foreach (var id in btr)
{
- DBObject obj = tr.GetObject(id, OpenMode.ForRead);
- Entity? ent = obj.Clone() as Entity;
- if (ent is BlockReference)
+ var obj = tr.GetObject(id, OpenMode.ForRead);
+ var ent = obj.Clone() as Entity;
+ if (ent is BlockReference br1)
{
- BlockReference br1 = (BlockReference)ent;
- LoopThroughInsertAndAddEntity2n3(br1.BlockTransform.PreMultiplyBy(mat), br1, space);
+ LoopThroughInsertAndAddEntity2N3(br1.BlockTransform.PreMultiplyBy(mat), br1, space);
}
else
{
@@ -737,128 +788,104 @@ public static void LoopThroughInsertAndAddEntity2n3(Matrix3d mat, BlockReference
space.AppendEntity(ent);
tr.AddNewlyCreatedDBObject(ent, true);
- idsAdded.Add(ent!.ObjectId);
+ _idsAdded.Add(ent!.ObjectId);
}
}
}
-
}
-
public class BlockImportClass
{
[CommandMethod(nameof(Test_Cbll))]
public void Test_Cbll()
{
- string filename = @"C:\Users\vic\Desktop\Drawing1.dwg";
+ var filename = Path.Combine(DeskTop, "Drawing1.dwg");
using DBTrans tr = new();
using DBTrans tr1 = new(filename);
// tr.BlockTable.GetBlockFrom(filename, true);
- string blkdefname = SymbolUtilityServices.RepairSymbolName(SymbolUtilityServices.GetSymbolNameFromPathName(filename, "dwg"), false);
+ var blkdefname = SymbolUtilityServices.RepairSymbolName(
+ SymbolUtilityServices.GetSymbolNameFromPathName(filename, "dwg"),
+ false
+ );
tr.Database.Insert(blkdefname, tr1.Database, false); // 插入了块定义,未插入块参照
}
-
[CommandMethod(nameof(Test_CombineBlocksIntoLibrary))]
public void Test_CombineBlocksIntoLibrary()
{
- Document doc = Acap.DocumentManager.MdiActiveDocument;
- Editor ed = doc.Editor;
- Database destDb = doc.Database;
+ var doc = Acaop.DocumentManager.MdiActiveDocument;
+ var ed = doc.Editor;
+ var destDb = doc.Database;
- PromptResult pr = ed.GetString("\nEnter the folder of source drawings: ");
+ var pr = ed.GetString("\nEnter the folder of source drawings: ");
if (pr.Status != PromptStatus.OK)
return;
- string pathName = pr.StringResult;
+ var pathName = pr.StringResult;
if (!Directory.Exists(pathName))
{
ed.WriteMessage("\nDirectory does not exist: {0}", pathName);
return;
}
- string[] fileNames = Directory.GetFiles(pathName, "*.dwg");
- int imported = 0, failed = 0;
- foreach (string fileName in fileNames)
- {
- if (fileName.EndsWith(".dwg",
- StringComparison.InvariantCultureIgnoreCase))
- {
+
+ var fileNames = Directory.GetFiles(pathName, "*.dwg");
+ int imported = 0,
+ failed = 0;
+ foreach (var fileName in fileNames)
+ if (fileName.EndsWith(".dwg", StringComparison.InvariantCultureIgnoreCase))
// Catch exceptions at the file level to allow skipping
try
{
// Suggestion from Thorsten Meinecke...
-
- string destName =
- SymbolUtilityServices.GetSymbolNameFromPathName(
- fileName, "dwg"
- );
+ var destName = SymbolUtilityServices.GetSymbolNameFromPathName(fileName, "dwg");
// And from Dan Glassman...
-
- destName =
- SymbolUtilityServices.RepairSymbolName(
- destName, false
- );
+ destName = SymbolUtilityServices.RepairSymbolName(destName, false);
// Create a source database to load the DWG into
-
using Database db = new(false, true);
- // Read the DWG into our side database
+ // Read the DWG into our side database
db.ReadDwgFile(fileName, FileShare.Read, true, "");
- bool isAnno = db.AnnotativeDwg;
+ var isAnno = db.AnnotativeDwg;
// Insert it into the destination database as
// a named block definition
-
- ObjectId btrId = destDb.Insert(
- destName,
- db,
- false
- );
+ var btrId = destDb.Insert(destName, db, false);
if (isAnno)
{
// If an annotative block, open the resultant BTR
// and set its annotative definition status
-
- Transaction tr =
- destDb.TransactionManager.StartTransaction();
+ var tr = destDb.TransactionManager.StartTransaction();
using (tr)
{
- BlockTableRecord btr =
- (BlockTableRecord)tr.GetObject(
- btrId,
- OpenMode.ForWrite
- );
+ var btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForWrite);
btr.Annotative = AnnotativeStates.True;
tr.Commit();
}
}
// Print message and increment imported block counter
-
ed.WriteMessage("\nImported from \"{0}\".", fileName);
imported++;
}
- catch (System.Exception ex)
+ catch (Exception ex)
{
ed.WriteMessage(
- "\nProblem importing \"{0}\": {1} - file skipped.",
- fileName, ex.Message
+ "\nProblem importing \"{0}\": {1} - file skipped.",
+ fileName,
+ ex.Message
);
failed++;
}
- }
- }
ed.WriteMessage(
- "\nImported block definitions from {0} files{1} in " +
- "\"{2}\" into the current drawing.",
- imported,
- failed > 0 ? " (" + failed + " failed)" : "",
- pathName
+ "\nImported block definitions from {0} files{1} in "
+ + "\"{2}\" into the current drawing.",
+ imported,
+ failed > 0 ? " (" + failed + " failed)" : "",
+ pathName
);
}
-
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestCadFilePath.cs b/tests/TestShared/TestCadFilePath.cs
index c0354d53598e2c502242888a31cdf9c84e6c5075..78a3c2b73d0cbe630fef075e7169523bbd58691f 100644
--- a/tests/TestShared/TestCadFilePath.cs
+++ b/tests/TestShared/TestCadFilePath.cs
@@ -1,5 +1,4 @@
-
-namespace Test;
+namespace IFoxTest;
public class TestCadFilePath
{
@@ -12,16 +11,19 @@ public void TestCadFilePathfun()
var profileskey = ackey?.OpenSubKey("Profiles");
var listkey = profileskey?.GetSubKeyNames();
- if (listkey == null) return;
+ if (listkey == null)
+ return;
foreach (var item in listkey)
{
- if (profileskey == null) continue;
+ if (profileskey == null)
+ continue;
var acadkey = profileskey.OpenSubKey($@"{item}\General", true);
const string name = "ACAD";
var str = acadkey?.GetValue(name)?.ToString();
- if (str == null || str.Contains("nihao")) continue;
- Env.Print(str);
+ if (str == null || str.Contains("nihao"))
+ continue;
+ str.Print();
acadkey?.SetValue(name, $@"{str}\nihao;", RegistryValueKind.String);
}
}
-}
+}
\ No newline at end of file
diff --git a/tests/TestShared/TestConvexHull.cs b/tests/TestShared/TestConvexHull.cs
index 03692ae5ffc3cceec783cd35c053079e7374ba03..22c61057006677a56b73857ad94c819dc62ab6c5 100644
--- a/tests/TestShared/TestConvexHull.cs
+++ b/tests/TestShared/TestConvexHull.cs
@@ -1,5 +1,4 @@
-namespace Test;
-
+namespace IFoxTest;
public class TestConvexHull
{
@@ -45,7 +44,6 @@ public void Test_ConvexHull()
// tr.Editor.WriteMessage(a1.ToString());
// tr.Editor.WriteMessage(a2.ToString());
-
// var vec1 = new Vector2d(1, 1);
// var vec2 = new Vector2d(-1, 1);
@@ -58,9 +56,19 @@ public void Test_ConvexHull()
// var area3 = vec2.DotProduct(vec1);
// var area4 = vec1.DotProduct(vec2);
- var area5 = GeometryEx.GetArea(new List { new Point2d(0, 0), new Point2d(1, 1), new Point2d(-1, 1) });
-
- var area6 = GeometryEx.GetArea(new List { new Point2d(0, 0), new Point2d(-1, 1), new Point2d(1, 1) });
+ var area5 = new List
+ {
+ new(0, 0),
+ new(1, 1),
+ new(-1, 1)
+ }.GetArea();
+
+ var area6 = new List
+ {
+ new(0, 0),
+ new(-1, 1),
+ new(1, 1)
+ }.GetArea();
// Env.Editor.WriteMessage($"vec1 的法向量= {vec3} \n");
// Env.Editor.WriteMessage($"vec2 的法向量= {vec4} \n");
diff --git a/tests/TestShared/TestCurve.cs b/tests/TestShared/TestCurve.cs
index 91ae9247cc00e09f0fad5aa02fc8e3ee4d7a9d33..946ff3f42921623197fac1f5cb5c63e3457c651f 100644
--- a/tests/TestShared/TestCurve.cs
+++ b/tests/TestShared/TestCurve.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class TestGraph
{
@@ -16,9 +16,9 @@ public void Test_PointInDict()
{ pt2, 2 },
{ pt3, 3 },
{ pt4, 4 },
- { pt5, 5 }
+ { pt5, 5 },
};
- Env.Print(dict[pt1]);
+ dict[pt1].Print();
}
#if false
@@ -81,54 +81,50 @@ public void Test_Graphspeed()
#endif
}
-
-
public partial class TestCurve
{
[CommandMethod(nameof(Test_CurveExtend))]
public void Test_CurveExtend()
{
- using var tr = new DBTrans();
+ using var tr = new DBTrans();
var ent = Env.Editor.GetEntity("pick curve").ObjectId.GetObject();
if (ent is Curve curve)
curve.ForWrite(e => e.Extend(e.EndParam + 1));
-
}
-
- private Arc ToArc1(CircularArc2d a2d)
+ private Arc ToArc1(CircularArc2d a2D)
{
- double startangle, endangle;
- double refangle = a2d.ReferenceVector.Angle;
+ double startangle,
+ endangle;
+ var refangle = a2D.ReferenceVector.Angle;
- if (a2d.IsClockWise)
+ if (a2D.IsClockWise)
{
- startangle = -a2d.EndAngle + refangle;
- endangle = -a2d.StartAngle + refangle;
+ startangle = -a2D.EndAngle + refangle;
+ endangle = -a2D.StartAngle + refangle;
}
else
{
- startangle = a2d.StartAngle + refangle;
- endangle = a2d.EndAngle + refangle;
+ startangle = a2D.StartAngle + refangle;
+ endangle = a2D.EndAngle + refangle;
}
- return
- new Arc(
- new Point3d(new Plane(), a2d.Center),
- Vector3d.ZAxis,
- a2d.Radius,
- startangle,
- endangle);
+ return new Arc(
+ new Point3d(new Plane(), a2D.Center),
+ Vector3d.ZAxis,
+ a2D.Radius,
+ startangle,
+ endangle
+ );
}
-
#if false
[CommandMethod(nameof(Test_Curve_ToArc))]
public void Test_Curve_ToArc()
{
using var tr = new DBTrans();
var gearc = new CircularArc2d(new Point2d(0,0),new Point2d(0.5,0.5),new Point2d(1,0));
- var dbarc = gearc.ToArc();
+ var dbarc = gearc.ToArc();
var dbarc1 = ToArc1(gearc);
dbarc.ColorIndex = 1;
tr.CurrentSpace.AddEntity(dbarc);
@@ -258,17 +254,17 @@ public void Test_Curve_ToArc()
#endif
}
-
public partial class TestCurve
{
[CommandMethod(nameof(Test_BreakCurve))]
public void Test_BreakCurve()
{
using DBTrans tr = new();
- var ents = Env.Editor.SSGet()?.Value.GetEntities();
- if (ents is null)
+ var ents = Env.Editor.SSGet().Value.GetEntities().ToList();
+ if (ents.Count == 0)
return;
- var tt = CurveEx.BreakCurve(ents.ToList()!);
+
+ var tt = ents.ToList().BreakCurve();
tt.ForEach(t => t.ForWrite(e => e.ColorIndex = 1));
tr.CurrentSpace.AddEntity(tt);
}
@@ -277,43 +273,43 @@ public void Test_BreakCurve()
public void Test_CurveCurveIntersector3d()
{
using DBTrans tr = new();
- var ents = Env.Editor.SSGet()?
+ var ents = Env
+ .Editor.SSGet()
.Value.GetEntities()
- .Select(e => e?.ToCompositeCurve3d()).ToList();
- if (ents == null)
- return;
+ .Select(e => e?.ToCompositeCurve3d())
+ .ToList();
- var cci3d = new CurveCurveIntersector3d();
- for (int i = 0; i < ents.Count; i++)
+ var cci3D = new CurveCurveIntersector3d();
+ for (var i = 0; i < ents.Count; i++)
{
var gc1 = ents[i];
var int1 = gc1?.GetInterval();
// var pars1 = paramss[i];
- for (int j = i; j < ents.Count; j++)
+ for (var j = i; j < ents.Count; j++)
{
var gc2 = ents[j];
// var pars2 = paramss[j];
var int2 = gc2?.GetInterval();
- cci3d.Set(gc1, gc2, int1, int2, Vector3d.ZAxis);
- var d = cci3d.OverlapCount();
- var a = cci3d.GetIntersectionRanges();
- Env.Print($"{a[0].LowerBound}-{a[0].UpperBound} and {a[1].LowerBound}-{a[1].UpperBound}");
- for (int m = 0; m < d; m++)
+ cci3D.Set(gc1, gc2, int1, int2, Vector3d.ZAxis);
+ var d = cci3D.OverlapCount();
+ var a = cci3D.GetIntersectionRanges();
+ $"{a[0].LowerBound}-{a[0].UpperBound} and {a[1].LowerBound}-{a[1].UpperBound}".Print();
+ for (var m = 0; m < d; m++)
{
- var b = cci3d.GetOverlapRanges(m);
- Env.Print($"{b[0].LowerBound}-{b[0].UpperBound} and {b[1].LowerBound}-{b[1].UpperBound}");
+ var b = cci3D.GetOverlapRanges(m);
+ $"{b[0].LowerBound}-{b[0].UpperBound} and {b[1].LowerBound}-{b[1].UpperBound}".Print();
}
- for (int k = 0; k < cci3d.NumberOfIntersectionPoints; k++)
+ for (var k = 0; k < cci3D.NumberOfIntersectionPoints; k++)
{
// var a = cci3d.GetOverlapRanges(k);
// var b = cci3d.IsTangential(k);
// var c = cci3d.IsTransversal(k);
// var d = cci3d.OverlapCount();
// var e = cci3d.OverlapDirection();
- var pt = cci3d.GetIntersectionParameters(k);
- var pts = cci3d.GetIntersectionPoint(k);
- Env.Print(pts);
+ var unused = cci3D.GetIntersectionParameters(k);
+ var pts = cci3D.GetIntersectionPoint(k);
+ pts.Print();
}
}
}
@@ -321,4 +317,4 @@ public void Test_CurveCurveIntersector3d()
// tt.ForEach(t => t.ForWrite(e => e.ColorIndex = 1));
// tr.CurrentSpace.AddEntity(tt);
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestDBTrans.cs b/tests/TestShared/TestDBTrans.cs
index 41eb67d81a467ecaa1183c6e1868921d79890b9a..ea40cd84f187c814190e868b7967fe368071a444 100644
--- a/tests/TestShared/TestDBTrans.cs
+++ b/tests/TestShared/TestDBTrans.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class TestTrans
{
@@ -12,14 +12,10 @@ public void Test_DBTrans()
tr.Editor.WriteMessage("\n----------开始测试--------------");
tr.Editor.WriteMessage("\n测试document属性是否工作");
if (tr.Document == Getdoc())
- {
tr.Editor.WriteMessage("\ndocument 正常");
- }
tr.Editor.WriteMessage("\n测试database属性是否工作");
if (tr.Database == Getdb())
- {
tr.Editor.WriteMessage("\ndatabase 正常");
- }
}
private static Database Getdb()
@@ -33,23 +29,21 @@ private static Document Getdoc()
var doc = Acaop.DocumentManager.MdiActiveDocument;
return doc;
}
-
-
-
-
- [CommandMethod(nameof(CmdTest_DBTransActiveOpenDwg), CommandFlags.Session)]
- public static void CmdTest_DBTransActiveOpenDwg()
+
+ [CommandMethod(nameof(Test_DBTransActiveOpenDwg), CommandFlags.Session)]
+ public static void Test_DBTransActiveOpenDwg()
{
using DBTrans tr = new(@"D:\桌面\AA.dwg", activeOpen: true);
}
- [CommandMethod(nameof(CmdTest_ForEachDemo))]
- public static void CmdTest_ForEachDemo()
+ [CommandMethod(nameof(Test_ForEachDemo))]
+ public static void Test_ForEachDemo()
{
using DBTrans tr = new();
// 泛型扩展(用变量名来使用它)
- tr.BlockTable.ForEach(action: (id) => {
+ tr.BlockTable.ForEach(action: id =>
+ {
//Debugger.Break();// 为什么cad工程不能断点进入呢?
id.Print();
Console.WriteLine(id);
@@ -61,60 +55,79 @@ public static void CmdTest_ForEachDemo()
// id.Print();
//}
- tr.BlockTable.ForEach(action: (id) => {
- id.Print();
- });
- tr.BlockTable.ForEach(action: (id, state, index) => {
+ tr.BlockTable.ForEach(action: id =>
+ {
id.Print();
});
+ tr.BlockTable.ForEach(
+ action: (id, _, _) =>
+ {
+ id.Print();
+ }
+ );
// 符号表扩展(会顶替泛型扩展)
- tr.BlockTable.ForEach((btr) => { // 预处理设置不进入ForEach函数体内
- btr.Print();// 此处可以设置断点
- }, OpenMode.ForRead, checkIdOk: true);
- tr.BlockTable.ForEach((btr, state) => {// 预处理设置不进入ForEach函数体内
- btr.Print();// 此处可以设置断点
- }, OpenMode.ForRead, checkIdOk: true);
- tr.BlockTable.ForEach((btr, state, index) => { // 预处理设置不进入ForEach函数体内
- btr.Print();// 此处可以设置断点
- }, OpenMode.ForRead, checkIdOk: true);
+ tr.BlockTable.ForEach(btr =>
+ {
+ // 预处理设置不进入ForEach函数体内
+ btr.Print(); // 此处可以设置断点
+ });
+ tr.BlockTable.ForEach(
+ (btr, _) =>
+ {
+ // 预处理设置不进入ForEach函数体内
+ btr.Print(); // 此处可以设置断点
+ }
+ );
+ tr.BlockTable.ForEach(
+ (btr, _, _) =>
+ {
+ // 预处理设置不进入ForEach函数体内
+ btr.Print(); // 此处可以设置断点
+ }
+ );
// 修改:此处有缺陷:cad08会获取已经删除的块表记录,需要检查id.IsOk(),用ForEach代替
// tr.BlockTable.Change("块表记录", btr => {
// });
// 修改:此处无缺陷
- tr.BlockTable.Change(tr.ModelSpace.ObjectId, modelSpace => { // 特性设置不进入函数体内
- var ents = modelSpace.GetEntities(); // 此处不会检查id.IsOk()
-
- modelSpace.ForEach(id => { // 利用遍历检查id.IsOk()
- if (id.IsOk())
- id.Print();
- });
- });
+ tr.BlockTable.Change(
+ tr.ModelSpace.ObjectId,
+ modelSpace =>
+ {
+ // 特性设置不进入函数体内
+ var unused = modelSpace.GetEntities(); // 此处不会检查id.IsOk()
+
+ modelSpace.ForEach(id =>
+ {
+ // 利用遍历检查id.IsOk()
+ if (id.IsOk())
+ id.Print();
+ });
+ }
+ );
}
-
-
// 后台:不存在路径的dwg会在桌面进行临时保存
- [CommandMethod(nameof(FileNotExist))]
- public void FileNotExist()
+ [CommandMethod(nameof(Test_FileNotExist))]
+ public void Test_FileNotExist()
{
using DBTrans tr = new("test.dwg");
tr.Database.SaveFile((DwgVersion)24, false);
}
// 前台:由于是弹出面板,此时路径不会起任何作用
- [CommandMethod(nameof(FileNotExist2))]
- public void FileNotExist2()
+ [CommandMethod(nameof(Test_FileNotExist2))]
+ public void Test_FileNotExist2()
{
using DBTrans tr = new();
tr.Database.SaveFile(saveAsFile: "D:\\");
}
// 后台:只有路径,没有文件名
- [CommandMethod(nameof(FileNotExist3))]
- public void FileNotExist3()
+ [CommandMethod(nameof(Test_FileNotExist3))]
+ public void Test_FileNotExist3()
{
using DBTrans tr = new("D:\\");
tr.Database.SaveDwgFile();
@@ -123,22 +136,22 @@ public void FileNotExist3()
tr2.Database.SaveFile(saveAsFile: "D:\\");
}
-
[CommandMethod(nameof(Test_SaveDwgFile))]
public void Test_SaveDwgFile()
{
- string filename = @"C:\Users\vic\Desktop\test.dwg";
+ var filename = Path.Combine(DeskTop, "test.dwg");
using DBTrans tr = new(filename);
- var circle = CircleEx.CreateCircle(new Point3d(10, 10, 0), 20)!;
+ var circle = CircleEx.CreateCircle(new Point3d(10, 10, 0), 20);
tr.ModelSpace.AddEntity(circle);
// tr.Database.SaveAs(filename,DwgVersion.Current);
tr.Database.SaveDwgFile();
}
+
[CommandMethod(nameof(Test_DBTransAbort))]
public void Test_DBTransAbort()
{
using DBTrans tr = new();
- var circle = CircleEx.CreateCircle(new Point3d(10, 10, 0), 20)!;
+ var circle = CircleEx.CreateCircle(new Point3d(10, 10, 0), 20);
tr.ModelSpace.AddEntity(circle);
tr.Abort();
// tr.Commit();
@@ -165,39 +178,36 @@ public void Test_DBTransAbort()
// tr.ModelSpace.AddCircle(new Point3d(0, 0, 0), 20);
// }
-
[CommandMethod(nameof(Test_TopTransaction))]
public void Test_TopTransaction()
{
// var pt = Env.Editor.GetPoint("pick pt:").Value;
// var pl = Env.Editor.GetEntity("pick pl").ObjectId;
- var tr1 = HostApplicationServices.WorkingDatabase.TransactionManager.TopTransaction;
+ var unused = HostApplicationServices.WorkingDatabase.TransactionManager.TopTransaction;
using DBTrans tr2 = new();
var tr3 = HostApplicationServices.WorkingDatabase.TransactionManager.TopTransaction;
var tr6 = Acaop.DocumentManager.MdiActiveDocument.TransactionManager.TopTransaction;
- Env.Print(tr2.Transaction == tr3);
- Env.Print(tr3 == tr6);
+ (tr2.Transaction == tr3).Print();
+ (tr3 == tr6).Print();
using DBTrans tr4 = new();
var tr5 = HostApplicationServices.WorkingDatabase.TransactionManager.TopTransaction;
var tr7 = Acaop.DocumentManager.MdiActiveDocument.TransactionManager.TopTransaction;
- Env.Print(tr4.Transaction == tr5);
- Env.Print(tr5 == tr7);
- var trm = HostApplicationServices.WorkingDatabase.TransactionManager;
-
+ (tr4.Transaction == tr5).Print();
+ (tr5 == tr7).Print();
+ var unused1 = HostApplicationServices.WorkingDatabase.TransactionManager;
}
[CommandMethod(nameof(Test_DBTrans_BlockCount))]
public void Test_DBTrans_BlockCount()
{
using var tr = new DBTrans();
- var i = tr.CurrentSpace
- .GetEntities()
- .Where(ent => ent.GetBlockName() == "自定义块");
-
+ var i = tr
+ .CurrentSpace.GetEntities()
+ .Where(ent => ent.GetBlockName() == "自定义块")
+ .ToList();
+
var block = i.ToList()[0];
- Env.Print(i.Count());
+ i.Count.Print();
}
-
-
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestDBobject.cs b/tests/TestShared/TestDBobject.cs
index f0cb142afe65c59161842eedc5ccfd0415047840..8b88500a88d6c420e2fa46de002845298a5983f4 100644
--- a/tests/TestShared/TestDBobject.cs
+++ b/tests/TestShared/TestDBobject.cs
@@ -1,27 +1,30 @@
-
+namespace IFoxTest;
-namespace TestShared
+public static class TestDBobject
{
- public static class TestDBobject
+ [CommandMethod(nameof(TestForWrite))]
+ public static void TestForWrite()
{
- [CommandMethod(nameof(TestForWrite))]
- public static void TestForWrite()
- {
- using var tr = new DBTrans();
- var ent = Env.Editor.GetEntity("\npick entity");
- if (ent.Status is not PromptStatus.OK) return;
- var entid = ent.ObjectId.GetObject()!;
- Tools.TestTimes3(100000, "using:", i => {
+ using var tr = new DBTrans();
+ var ent = Env.Editor.GetEntity("\npick entity");
+ if (ent.Status is not PromptStatus.OK)
+ return;
+ var entid = ent.ObjectId.GetObject()!;
+ Tools.TestTimes3(
+ 100000,
+ "using:",
+ i =>
+ {
using (entid.ForWrite())
{
entid.ColorIndex = i % 7;
}
- });
- Tools.TestTimes3(100000, "action:", i => {
- entid.ForWrite(e => {
- e.ColorIndex = i % 7;
- });
- });
- }
+ }
+ );
+ Tools.TestTimes3(
+ 100000,
+ "action:",
+ i => { entid.ForWrite(e => { e.ColorIndex = i % 7; }); }
+ );
}
-}
+}
\ No newline at end of file
diff --git a/tests/TestShared/TestDwgFilerEx.cs b/tests/TestShared/TestDwgFilerEx.cs
index 50eed0ed9c2b960d2f7b43540c0b7b242a0d1c76..ca96919b6d2e09c1a992e4b32ab03958284123b0 100644
--- a/tests/TestShared/TestDwgFilerEx.cs
+++ b/tests/TestShared/TestDwgFilerEx.cs
@@ -1,5 +1,5 @@
-#if false
-namespace Test;
+#if false
+namespace IFoxTest;
using DxfFiler = Fs.Fox.Cad.DxfFiler;
diff --git a/tests/TestShared/TestDwgMark.cs b/tests/TestShared/TestDwgMark.cs
index 7f869e2d79d023099512207d067f1eb339800c4a..10dd2f87afcca5222d7bbbf09bbba04357b32e44 100644
--- a/tests/TestShared/TestDwgMark.cs
+++ b/tests/TestShared/TestDwgMark.cs
@@ -1,11 +1,13 @@
-namespace Test;
-using Fs.Fox.Cad;
-public class TestDwgMark {
- [CommandMethod(nameof(DwgMarktest))]
- public void DwgMarktest() {
- FileInfo file = new FileInfo(@"D:\TEST\1.dwg");
+namespace IFoxTest;
+
+public class TestDwgMark
+{
+ [CommandMethod(nameof(Hest_DwgMark))]
+ public void Hest_DwgMark()
+ {
+ var file = new FileInfo(@"D:\TEST\1.dwg");
DwgMark.AddMark(file, 0x4D);
DwgMark.RemoveMark(file);
- int A = DwgMark.GetMark(file);
+ var a = DwgMark.GetMark(file);
}
}
\ No newline at end of file
diff --git a/tests/TestShared/TestEditor.cs b/tests/TestShared/TestEditor.cs
index 5f83345d9fa456752e52a55b975c6177a1c37b6a..1f1921c5e40fe6f1fd609145bd14f300fd1c6696 100644
--- a/tests/TestShared/TestEditor.cs
+++ b/tests/TestShared/TestEditor.cs
@@ -1,28 +1,23 @@
-namespace Test;
+namespace IFoxTest;
public class Testeditor
{
[CommandMethod(nameof(Test_Editor))]
public void Test_Editor()
{
- var pts = new List
- {
- new Point2d(0,0),
- new Point2d(0,1),
- new Point2d(1,1),
- new Point2d(1,0)
- };
+ var pts = new List { new(0, 0), new(0, 1), new(1, 1), new(1, 0) };
var res = EditorEx.GetLines(pts, false);
var res1 = EditorEx.GetLines(pts, true);
var res2 = pts.Select(pt => new TypedValue((int)LispDataType.Point2d, pt)).ToList();
- Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
+ var ed = Acaop.DocumentManager.MdiActiveDocument.Editor;
var pt = ed.GetPoint("qudiam", new Point3d(0, 0, 0));
var d = ed.GetDouble("qudoule");
var i = ed.GetInteger("quint");
var s = ed.GetString("qustr");
Env.Editor.WriteMessage("");
}
+
[CommandMethod(nameof(Test_Zoom))]
public void Test_Zoom()
{
@@ -31,6 +26,7 @@ public void Test_Zoom()
if (res.Status == PromptStatus.OK)
Env.Editor.ZoomObject(res.ObjectId.GetObject()!);
}
+
[CommandMethod(nameof(Test_ZoomExtents))]
public void Test_ZoomExtents()
{
@@ -47,41 +43,61 @@ public void Test_ZoomExtents()
[CommandMethod(nameof(Test_Zoom_1))]
public void Test_Zoom_1()
{
- Env.Editor.Zoom(new(0, 0, 0),200,200);
+ Env.Editor.Zoom(new Point3d(0, 0, 0), 200, 200);
}
+
[CommandMethod(nameof(Test_Zoom_2))]
public void Test_Zoom_2()
{
- Env.Editor.ZoomWindow(new Point3d(-100,-100,0),new(100,100,0));
+ Env.Editor.ZoomWindow(new Point3d(-100, -100, 0), new Point3d(100, 100, 0));
}
[CommandMethod(nameof(Test_Ssget))]
public void Test_Ssget()
{
-
var keyword = new Dictionary
{
- { "D", ("你好", () => { Env.Print("this is c"); }) },
- { "B", ("hello", () => { Env.Print("this is b"); }) }
+ {
+ "D",
+ (
+ "你好",
+ () =>
+ {
+ "this is c".Print();
+ }
+ )
+ },
+ {
+ "B",
+ (
+ "hello",
+ () =>
+ {
+ "this is b".Print();
+ }
+ )
+ },
};
- var ss = Env.Editor.SSGet(/*":S", */ messages: ("get", "del" ),
- keywords: keyword);
- Env.Print(ss!);
+ var ss = Env.Editor.SSGet( /*":S", */
+ messages: ("get", "del"),
+ keywords: keyword
+ );
+ ss.Print();
}
[CommandMethod(nameof(Test_ExportWMF), CommandFlags.Modal | CommandFlags.UsePickSet)]
public void Test_ExportWMF()
{
- var psr = Env.Editor.SelectImplied();// 预选
+ var psr = Env.Editor.SelectImplied(); // 预选
if (psr.Status != PromptStatus.OK)
- psr = Env.Editor.GetSelection();// 手选
+ psr = Env.Editor.GetSelection(); // 手选
if (psr.Status != PromptStatus.OK)
return;
var ids = psr.Value.GetObjectIds();
// acad21(acad08没有)先选择再执行..会让你再选择一次
// 而且只发生在启动cad之后第一次执行.
- Env.Editor.ComExportWMF(@"C:\Users\vic\Desktop\aaa.dwg", ids);
+ Env.Editor.ComExportWMF(Path.Combine(DeskTop, "aaa.dwg"), ids);
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestEntity/TestAddEntity.cs b/tests/TestShared/TestEntity/TestAddEntity.cs
index 920e6e03772c73b068e522d4d2a27374ad5c76f6..33342d1d406b24420b1a8c197bbf087b7b74f613 100644
--- a/tests/TestShared/TestEntity/TestAddEntity.cs
+++ b/tests/TestShared/TestEntity/TestAddEntity.cs
@@ -1,14 +1,14 @@
-namespace Test;
+namespace IFoxTest;
public class TestAddEntity
{
-#region 直线
+ #region 直线
[CommandMethod(nameof(Test_AddLinetoCurrentSpace))]
public void Test_AddLinetoCurrentSpace()
{
using DBTrans tr = new(); // 开启事务
- Line line = new(new(0, 0, 0), new(1, 1, 0)); // 定义一个直线
+ Line line = new(new Point3d(0, 0, 0), new Point3d(1, 1, 0)); // 定义一个直线
tr.CurrentSpace.AddEntity(line); // 将直线添加到当前空间
}
@@ -17,7 +17,7 @@ public void Test_AddLinetoModelSpace()
{
using DBTrans tr = new(); // 开启事务
- Line line = new(new(0, 0, 0), new(1, 1, 0)); // 定义一个直线
+ Line line = new(new Point3d(0, 0, 0), new Point3d(1, 1, 0)); // 定义一个直线
tr.ModelSpace.AddEntity(line); // 将直线添加到模型空间
}
@@ -26,7 +26,7 @@ public void Test_AddLinetoPaperSpace()
{
using DBTrans tr = new(); // 开启事务
- Line line = new(new(0, 0, 0), new(1, 1, 0)); // 定义一个直线
+ Line line = new(new Point3d(0, 0, 0), new Point3d(1, 1, 0)); // 定义一个直线
tr.PaperSpace.AddEntity(line); // 将直线添加到图纸空间
}
@@ -46,7 +46,7 @@ public void Test_AddEntities()
List lines = [line1, line2, line3];
tr.CurrentSpace.AddEntity(lines);
// 或者可以传入个数组
- Line[] lines1 = [line1, line2, line3];
+ Entity[] lines1 = [line1, line2, line3];
tr.CurrentSpace.AddEntity(lines1);
// 图元数组
Entity[] lines2 = [line1, line2, line3, circle];
@@ -54,45 +54,50 @@ public void Test_AddEntities()
// c#12 新语法,集合表达式
tr.CurrentSpace.AddEntity([line1, line2, circle]);
}
-#endregion
+ #endregion
-#region 圆
+ #region 圆
[CommandMethod(nameof(Test_AddCircle))]
public void Test_AddCircle()
{
- var cir = CircleEx.CreateCircle(Point3d.Origin, new(1,0,0)); // 两点创建圆
- var cir1 = CircleEx.CreateCircle(Point3d.Origin, new(1,1,0), new(2,0,0)); //三点创建圆
+ var cir = CircleEx.CreateCircle(Point3d.Origin, new Point3d(1, 0, 0)); // 两点创建圆
+ var cir1 = CircleEx.CreateCircle(Point3d.Origin, new Point3d(1, 1, 0), new Point3d(2, 0, 0)); //三点创建圆
var cir2 = CircleEx.CreateCircle(Point3d.Origin, 5); // 圆心半径创建圆
using DBTrans tr = new();
tr.CurrentSpace.AddEntity(cir, cir2);
-
+
// 由于三点不一定能成功创建一个圆,因此返回值是可空的,需要判空
if (cir1 is not null)
{
tr.CurrentSpace.AddEntity(cir1);
}
}
-#endregion
+ #endregion
-#region 圆弧
+ #region 圆弧
[CommandMethod(nameof(Test_AddArc))]
public void Test_AddArc()
{
using DBTrans tr = new();
- Arc arc1 = ArcEx.CreateArcSCE(new Point3d(2, 0, 0), new Point3d(0, 0, 0), new Point3d(0, 2, 0));// 起点,圆心,终点
- Arc arc2 = ArcEx.CreateArc(new Point3d(4, 0, 0), new Point3d(0, 0, 0), Math.PI / 2); // 起点,圆心,弧度
- Arc arc3 = ArcEx.CreateArc(new Point3d(1, 0, 0), new Point3d(0, 0, 0), new Point3d(0, 1, 0)); // 起点,圆上一点,终点
+ Arc arc1 = ArcEx.CreateArcSCE(
+ new Point3d(2, 0, 0),
+ new Point3d(0, 0, 0),
+ new Point3d(0, 2, 0)
+ ); // 起点,圆心,终点
+ Arc arc2 = ArcEx.CreateArc(new Point3d(4, 0, 0), new Point3d(0, 0, 0), Math.PI / 2); // 起点,圆心,弧度
+ Arc arc3 = ArcEx.CreateArc(
+ new Point3d(1, 0, 0),
+ new Point3d(0, 0, 0),
+ new Point3d(0, 1, 0)
+ ); // 起点,圆上一点,终点
tr.CurrentSpace.AddEntity(arc1, arc2, arc3);
}
-#endregion
-
-
+ #endregion
-
-#region 多段线
+ #region 多段线
[CommandMethod(nameof(Test_AddPolyline1))]
public void Test_AddPolyline1()
{
@@ -115,13 +120,13 @@ public void Test_AddPolyline2()
// 集合表达式
List<(Point3d, double, double, double)> pts =
[
- (new Point3d(0,0,0),0,0,0),
- (new Point3d(10,0,0),0,0,0),
- (new Point3d(10,10,0),0,0,0),
- (new Point3d(0,10,0),0,0,0),
- (new Point3d(5,5,0),0,0,0)
+ (new Point3d(0, 0, 0), 0, 0, 0),
+ (new Point3d(10, 0, 0), 0, 0, 0),
+ (new Point3d(10, 10, 0), 0, 0, 0),
+ (new Point3d(0, 10, 0), 0, 0, 0),
+ (new Point3d(5, 5, 0), 0, 0, 0),
];
-
+
using DBTrans tr = new();
var pl = pts.CreatePolyline();
tr.CurrentSpace.AddEntity(pl);
@@ -132,13 +137,7 @@ public void Test_AddPolyline3()
{
using var tr = new DBTrans();
- List pts =
- [
- new(0, 0, 0),
- new(0, 1, 0),
- new(1, 1, 0),
- new(1, 0, 0)
- ];
+ List pts = [new(0, 0, 0), new(0, 1, 0), new(1, 1, 0), new(1, 0, 0)];
var pline = pts.CreatePolyline();
tr.CurrentSpace.AddEntity(pline);
@@ -151,7 +150,5 @@ public void Test_AddPolyline3()
});
tr.CurrentSpace.AddEntity(pline1);
}
-
-#endregion
-
+ #endregion
}
diff --git a/tests/TestShared/TestEnv.cs b/tests/TestShared/TestEnv.cs
index d1df3b805e85db341e0c5d2b1dac25f400984ba3..a0314f5fd0b465329cb39cde0a7c9ceebf5625e0 100644
--- a/tests/TestShared/TestEnv.cs
+++ b/tests/TestShared/TestEnv.cs
@@ -1,12 +1,15 @@
-namespace Test;
+// ReSharper disable StringLiteralTypo
+// ReSharper disable CommentTypo
+namespace IFoxTest;
-public class Testenv
+public class TestEnv
{
[CommandMethod(nameof(Test_Enum))]
public void Test_Enum()
{
Env.CmdEcho = true;
}
+
[CommandMethod(nameof(Test_Enum1))]
public void Test_Enum1()
{
@@ -17,18 +20,19 @@ public void Test_Enum1()
public void Test_Dimblk()
{
Env.Dimblk = Env.DimblkType.Dot;
- Env.Print(Env.Dimblk);
- Env.Print(Env.GetDimblkId(Env.DimblkType.Dot));
+ Env.Dimblk.Print();
+ Env.GetDimblkId(Env.DimblkType.Dot).Print();
Env.Dimblk = Env.DimblkType.Default;
- Env.Print(Env.Dimblk);
- Env.Print(Env.GetDimblkId(Env.DimblkType.Default));
+ Env.Dimblk.Print();
+ Env.GetDimblkId(Env.DimblkType.Default).Print();
Env.Dimblk = Env.DimblkType.Oblique;
- Env.Print(Env.Dimblk);
- Env.Print(Env.GetDimblkId(Env.DimblkType.Oblique));
+ Env.Dimblk.Print();
+ Env.GetDimblkId(Env.DimblkType.Oblique).Print();
Env.Dimblk = Env.DimblkType.ArchTick;
- Env.Print(Env.Dimblk);
- Env.Print(Env.GetDimblkId(Env.DimblkType.ArchTick));
+ Env.Dimblk.Print();
+ Env.GetDimblkId(Env.DimblkType.ArchTick).Print();
}
+
[CommandMethod(nameof(Test_Dimblk1))]
public void Test_Dimblk1()
{
@@ -51,6 +55,7 @@ public void Test_Osmode()
Env.OSMode ^= Env.OSModeType.Center;
Env.Editor.WriteMessage(Env.OSMode.ToString());
}
+
[CommandMethod(nameof(Test_Osmode1))]
public void Test_Osmode1()
{
@@ -67,7 +72,7 @@ public void Test_Cadver()
1.Print();
"1".Print();
}
-#endif
+#endif
[CommandMethod(nameof(Test_GetVar))]
public void Test_GetVar()
{
@@ -77,8 +82,6 @@ public void Test_GetVar()
Env.SetVar("dbmod1", 1);
}
-
-
//[CommandMethod(nameof(Test_DwgVersion))]
//public void TestDwgVersion()
//{
@@ -88,24 +91,24 @@ public void Test_GetVar()
// ((DwgVersion)a).Print();
//}
-
#if !zcad
// 通过此功能获取全部变量,尚不清楚此处如何设置,没有通过测试
- [CommandMethod(nameof(Test_GetvarAll))]
- public static void Test_GetvarAll()
+ [CommandMethod(nameof(Test_GetVarAll))]
+ public static void Test_GetVarAll()
{
- GetvarAll();
+ GetVarAll();
}
- public static Dictionary GetvarAll()
+ private static Dictionary GetVarAll()
{
var dict = new Dictionary();
var en = new SystemVariableEnumerator();
while (en.MoveNext())
{
- Console.WriteLine(en.Current.Name + "-----" + en.Current.Value);// Value会出现异常
+ Console.WriteLine(en.Current.Name + "-----" + en.Current.Value); // Value会出现异常
dict.Add(en.Current.Name, en.Current.Value);
}
+
return dict;
}
#endif
@@ -123,13 +126,14 @@ public static void Test_GetEnv()
Env.Printl("GetEnv:" + Env.GetEnv("abc"));
Env.Printl("GetEnv PATH:" + Env.GetEnv("PATH"));
-
+
Env.Printl($"getenv-acad: {Env.GetEnv("ACAD")}");
Env.Printl($"getvar-acad: {Env.GetVar("TRUSTEDPATHS")}");
Env.Printl($"getenv-TRUSTEDPATHS: {Env.GetEnv("TRUSTEDPATHS")}");
Env.Printl($"getenv-osmode: {Env.GetEnv("osmode")}");
Env.Printl($"getvar-osmode: {Env.GetVar("osmode")}");
}
+
[CommandMethod(nameof(Test_AppendPath))]
public static void Test_AppendPath()
{
@@ -140,9 +144,8 @@ public static void Test_AppendPath()
Env.GetEnv("ACAD").Print();
// Env.SetEnv("ACAD", @"C:\Folder1;"+Env.GetEnv("ACAD"));
Env.GetEnv("ACAD").Contains(@"C:\Folder1").Print();
-
}
-
+
[CommandMethod(nameof(Test_RemovePath))]
public static void Test_RemovePath()
{
@@ -154,31 +157,26 @@ public static void Test_RemovePath()
// Env.RemoveTrustedPath(@"c:\a\x");
Env.GetEnv("ACAD").Print();
}
-
+
public static void AppendSupportPath(string path)
{
-
- string key = HostApplicationServices.Current.UserRegistryProductRootKey;
+ var key = HostApplicationServices.Current.UserRegistryProductRootKey;
// 计算机\HKEY_CURRENT_USER\SOFTWARE\Autodesk\AutoCAD\R24.0\ACAD-4101:804
var ackey = Registry.CurrentUser.OpenSubKey($@"{key}\Profiles") ?? null;
if (ackey != null)
{
- var listkey = ackey.GetSubKeyNames();
- foreach (var item in listkey)
+ var listKey = ackey.GetSubKeyNames();
+ foreach (var item in listKey)
{
- var acadkey = ackey.OpenSubKey($@"{item}\General", true);
+ var acadKey = ackey.OpenSubKey($@"{item}\General", true);
const string name = "ACAD";
- var str = acadkey?.GetValue(name)?.ToString();
+ var str = acadKey?.GetValue(name)?.ToString();
if (str != null && !str.ToLower().Contains(path.ToLower()))
- {
- acadkey?.SetValue(name, $@"{str}{path};");
- }
+ acadKey?.SetValue(name, $@"{str}{path};");
}
}
ackey?.Close();
}
-
-
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestExtents.cs b/tests/TestShared/TestExtents.cs
index 96c04db04ec8d7e080b1edf6ccd797b69afcc61e..0a8b242e395146b8861fba76ab9f2cca28e0e6fb 100644
--- a/tests/TestShared/TestExtents.cs
+++ b/tests/TestShared/TestExtents.cs
@@ -1,4 +1,4 @@
-namespace TestShared;
+namespace IFoxTest;
public class TestExtents
{
@@ -7,102 +7,95 @@ public void Test_BlockExtents()
{
using var tr = new DBTrans();
var ent = Env.Editor.GetEntity("pick the entity");
- if (ent.Status != PromptStatus.OK )
- {
+ if (ent.Status != PromptStatus.OK)
return;
- }
var block = ent.ObjectId.GetObject();
if (block != null && block.Bounds.HasValue)
{
var extent = block.GeometricExtents;
- List pts = [
+ List pts =
+ [
extent.MinPoint,
- new Point3d(extent.MinPoint.X,extent.MaxPoint.Y,0),
+ new(extent.MinPoint.X, extent.MaxPoint.Y, 0),
extent.MaxPoint,
- new Point3d(extent.MaxPoint.X,extent.MinPoint.Y,0),
-
+ new(extent.MaxPoint.X, extent.MinPoint.Y, 0),
];
- tr.CurrentSpace.AddEntity(pts.CreatePolyline(action: e => e.ColorIndex = 1));
-
+ tr.CurrentSpace.AddEntity(pts.CreatePolyline(e => e.ColorIndex = 1));
+
if (block is BlockReference block1)
{
var extents = block1.GeometryExtentsBestFit();
- List pts1 =
+ List pts1 =
[
extents.MinPoint,
- new Point3d(extents.MinPoint.X, extents.MaxPoint.Y, 0),
+ new(extents.MinPoint.X, extents.MaxPoint.Y, 0),
extents.MaxPoint,
- new Point3d(extents.MaxPoint.X, extents.MinPoint.Y, 0),
+ new(extents.MaxPoint.X, extents.MinPoint.Y, 0),
];
- tr.CurrentSpace.AddEntity(pts.CreatePolyline(action: e => e.ColorIndex = 2));
+ tr.CurrentSpace.AddEntity(pts.CreatePolyline(e => e.ColorIndex = 2));
var extents2 = block1.GetBoundingBoxEx();
- tr.CurrentSpace.AddEntity(pts.CreatePolyline(action: e => e.ColorIndex = 3));
-
+ tr.CurrentSpace.AddEntity(pts.CreatePolyline(e => e.ColorIndex = 3));
+
// 此处是计算块定义的包围盒,不是块参照的,所以一般情况下不需要使用。
var ext = new Extents3d();
ext.AddBlockExtents(block1.BlockTableRecord.GetObject());
- tr.CurrentSpace.AddEntity(ext.CreatePolyline(action: e => e.ColorIndex = 4));
+ tr.CurrentSpace.AddEntity(ext.CreatePolyline(e => e.ColorIndex = 4));
}
-
-
}
}
-
- [CommandMethod(nameof(Test_entextents))]
- public void Test_entextents()
+
+ [CommandMethod(nameof(Test_Extents))]
+ public void Test_Extents()
{
using var tr = new DBTrans();
- var a = Env.Editor.GetSelection().Value.
- GetEntities(OpenMode.ForWrite);
+ var a = Env.Editor.GetSelection().Value.GetEntities(OpenMode.ForWrite);
foreach (var e in a)
{
- var b = e.Bounds.HasValue; //获取是否有包围盒
+ var b = e.Bounds.HasValue; //获取是否有包围盒
var name = e.ObjectId.ObjectClass.DxfName;
- Env.Print($"{name}是否有包围盒-" + b);
+ ($"{name}是否有包围盒-" + b).Print();
if (b)
{
- tr.CurrentSpace.AddEntity(e.Bounds!.Value.CreatePolyline(action: e =>
- {
- e.ColorIndex = 4;
- e.Closed = true;
- }));
+ tr.CurrentSpace.AddEntity(
+ e.Bounds!.Value.CreatePolyline(polyline =>
+ {
+ polyline.ColorIndex = 4;
+ polyline.Closed = true;
+ })
+ );
var ext = e.GetBoundingBoxEx();
if (ext.HasValue)
- {
tr.CurrentSpace.AddEntity(
- ext.Value.Extents3d.CreatePolyline(action: e =>
+ ext.Value.Extents3d.CreatePolyline(polyline =>
{
- e.ColorIndex = 5;
- e.Closed = true;
- }));
- }
-
+ polyline.ColorIndex = 5;
+ polyline.Closed = true;
+ })
+ );
+
if (e is Curve spline)
{
var ge = spline.GetGeCurve();
var box = ge.BoundBlock;
- List lst =
+ List lst =
[
box.BasePoint,
box.BasePoint + box.Direction1,
box.BasePoint + box.Direction2,
box.BasePoint + box.Direction3,
];
- tr.CurrentSpace.AddEntity(lst.CreatePolyline(action: e =>
- {
- e.ColorIndex = 6;
- e.Closed = true;
- }));
+ tr.CurrentSpace.AddEntity(
+ lst.CreatePolyline(polyline =>
+ {
+ polyline.ColorIndex = 6;
+ polyline.Closed = true;
+ })
+ );
}
-
}
-
-
-
-
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestFileDatabase.cs b/tests/TestShared/TestFileDatabase.cs
index e5c58c326c09c5c083598fcbe1995940e2df70c0..33640ca529e2b9523779dd1608344bfc5a7cee53 100644
--- a/tests/TestShared/TestFileDatabase.cs
+++ b/tests/TestShared/TestFileDatabase.cs
@@ -1,9 +1,11 @@
-namespace Test;
+using System.Windows;
+
+namespace IFoxTest;
/**************************************************************
-*作者:Leon
-*创建时间:2022/2/11 9:55:32
-**************************************************************/
+ *作者:Leon
+ *创建时间:2022/2/11 9:55:32
+ **************************************************************/
public class TestFileDatabase
{
@@ -14,15 +16,15 @@ public void Test_FileDatabaseInit()
{
var fileName = @"C:\Users\Administrator\Desktop\合并详图测试BUG.dwg";
using DBTrans trans = new(fileName);
- trans.ModelSpace.AddEntity(new Line(new(0, 0, 0), new(1000, 1000, 0)));
+ trans.ModelSpace.AddEntity(new Line(new Point3d(0, 0, 0), new Point3d(1000, 1000, 0)));
if (trans.Document is not null && trans.Document.IsActive)
- trans.Document.SendStringToExecute("_qsave\n", false, true, true);
+ trans.Document.SendStringToExecute("_qSave\n", false, true, true);
else
trans.Database.SaveAs(fileName, (DwgVersion)27);
}
- catch (System.Exception e)
+ catch (Exception e)
{
- System.Windows.MessageBox.Show(e.Message);
+ MessageBox.Show(e.Message);
}
}
}
\ No newline at end of file
diff --git a/tests/TestShared/TestHatchinfo.cs b/tests/TestShared/TestHatch.cs
similarity index 31%
rename from tests/TestShared/TestHatchinfo.cs
rename to tests/TestShared/TestHatch.cs
index e241dfba01184c80bb1a7470f8e9048f39c92296..85264209913f858dc28d16a813eda7d56478eef6 100644
--- a/tests/TestShared/TestHatchinfo.cs
+++ b/tests/TestShared/TestHatch.cs
@@ -1,16 +1,16 @@
-namespace Test;
+namespace IFoxTest;
-public class TestHatchinfo
+public class TestHatchInfo
{
- [CommandMethod(" TestHatchInfo")]
- public void TestHatchInfo()
+ [CommandMethod(nameof(Test_HatchInfo))]
+ public void Test_HatchInfo()
{
using var tr = new DBTrans();
- var sf = new SelectionFilter(new TypedValue[] { new TypedValue(0, "*line,circle,arc") });
+ var sf = new SelectionFilter([new TypedValue(0, "*line,circle,arc")]);
var ids = Env.Editor.SSGet(null, sf).Value?.GetObjectIds();
- if (ids == null || ids.Count() <= 0) return;
- var hf = new HatchInfo(ids!, false, null, 1, 0).Mode2UserDefined();
+ if (ids == null || !ids.Any())
+ return;
+ var hf = new HatchInfo(ids, false).Mode2UserDefined();
hf.Build(tr.CurrentSpace);
}
}
-
diff --git a/tests/TestShared/TestId.cs b/tests/TestShared/TestId.cs
index 57f19cf512f635112ceef6637b3c36250ee02df5..4759e87f77627eab44fa2af14d90c684aaf99b76 100644
--- a/tests/TestShared/TestId.cs
+++ b/tests/TestShared/TestId.cs
@@ -1,6 +1,6 @@
-namespace Test;
+namespace IFoxTest;
-public class Testid
+public class TestId
{
[CommandMethod(nameof(Test_Id))]
public void Test_Id()
@@ -11,13 +11,10 @@ public void Test_Id()
tr.Dispose();
var res = Env.Editor.GetEntity("\npick ent:");
- if (res.Status == PromptStatus.OK)
- {
- res.ObjectId.Erase();
- }
+ if (res.Status == PromptStatus.OK) res.ObjectId.Erase();
// using (var tr = new DBTrans())
// {
- // var res = Env.Editor.GetEntity("\npick ent:");
+ // var res = Env.Editor.GetEntity("\n pick ent:");
// if(res.Status == PromptStatus.OK)
// {
// res.ObjectId.Erase();
@@ -29,16 +26,17 @@ public void Test_Id()
[CommandMethod(nameof(Test_MyCommand))]
public void Test_MyCommand()
{
- using DBTrans dbtrans = new(Env.Document, true, false);
+ using DBTrans dbTrans = new(Env.Document);
using var trans = Env.Database.TransactionManager.StartTransaction();
var l1 = new Line(new Point3d(0, 0, 0), new Point3d(100, 100, 0));
- var blkred = trans.GetObject(Env.Database.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
- blkred?.AppendEntity(l1);
+ var blkRed = trans.GetObject(Env.Database.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
+ blkRed?.AppendEntity(l1);
trans.AddNewlyCreatedDBObject(l1, true);
trans.Commit();
- // dbtrans.Dispose();
+ // dbTrans.Dispose();
}
+
[CommandMethod(nameof(Test_TextStyle))]
public void Test_TextStyle()
{
@@ -52,8 +50,8 @@ public void Test_TextStyle()
tr.TextStyleTable.Add("romas", FontTTF.Romans, 0.8);
-
- tr.TextStyleTable.Add("daziti", ttr => {
+ tr.TextStyleTable.Add("daziti", ttr =>
+ {
ttr.FileName = "ascii.shx";
ttr.BigFontFileName = "gbcbig.shx";
});
diff --git a/tests/TestShared/TestJig.cs b/tests/TestShared/TestJig.cs
index d0076f4fde2dd02dcf19b666e8a7bb79ba8c58b3..634c8b72bfd91e0338c2a5de937b86754d507554 100644
--- a/tests/TestShared/TestJig.cs
+++ b/tests/TestShared/TestJig.cs
@@ -1,8 +1,9 @@
-namespace Test;
-
using System.Windows.Forms;
+using Application = System.Windows.Forms.Application;
+
+namespace IFoxTest;
-public class Commands_Jig
+public class CommandsJig
{
// 已在数据库的图元如何进入jig
[CommandMethod(nameof(Test_Jig33))]
@@ -17,8 +18,9 @@ public static void Test_Jig33()
return;
var oldSp = cir.StartPoint;
JigEx? moveJig = null;
- moveJig = new JigEx((mousePoint, drawEntitys) => {
- moveJig!.SetOptions(oldSp);// 回调过程中也可以修改基点
+ moveJig = new JigEx((mousePoint, _) =>
+ {
+ moveJig!.SetOptions(oldSp); // 回调过程中也可以修改基点
// cir.UpgradeOpen();// 已经提权了,所以这里不需要提权
cir.Move(cir.StartPoint, mousePoint);
// cir.DowngradeOpen();
@@ -30,9 +32,7 @@ public static void Test_Jig33()
moveJig.SetOptions(cir.GeometricExtents.MinPoint);
// 此处详见方法注释
- moveJig.DatabaseEntityDraw(draw => {
- draw.RawGeometry.Draw(cir);
- });
+ moveJig.DatabaseEntityDraw(draw => { draw.RawGeometry.Draw(cir); });
while (true)
{
@@ -40,6 +40,7 @@ public static void Test_Jig33()
if (prDrag.Status == PromptStatus.OK)
break;
}
+
moveJig.Dispose();
}
@@ -62,7 +63,8 @@ public void Test_Jig44()
* 所以需要先声明再传入指针,但是我发现null也可以.
*/
JigPromptPointOptions? options = null;
- using var jig = new JigEx((mousePoint, drawEntitys) => {
+ using var jig = new JigEx((mousePoint, drawEntitys) =>
+ {
var closestPt = pl.GetClosestPointTo(mousePoint, false);
// 回调过程中SetOptions会覆盖配置,所以如果想增加关键字或者修改基点,
@@ -82,15 +84,15 @@ public void Test_Jig44()
});
options = jig.SetOptions(per.PickedPoint);
-
+
// 在这里加入关键字
// 如果没有这个,那么空格只会是 PromptStatus.None 而不是 PromptStatus.Keyword
// options.Keywords.Add(" ", " ", "空格结束啊");
// jig.SetSpaceIsKeyword();
- options.Keywords.Add("A","A","A");
+ options.Keywords.Add("A", "A", "A");
- bool flag = true;
+ var flag = true;
while (flag)
{
var pr = Env.Editor.Drag(jig);
@@ -99,79 +101,62 @@ public void Test_Jig44()
switch (pr.StringResult)
{
case "A":
- tr.Editor?.WriteMessage($"\n 您触发了关键字{pr.StringResult}");
- flag = false;
- break;
+ tr.Editor?.WriteMessage($"\n 您触发了关键字{pr.StringResult}");
+ flag = false;
+ break;
case " ":
- tr.Editor?.WriteMessage("\n 触发关键字空格");
- flag = false;
- break;
+ tr.Editor?.WriteMessage("\n 触发关键字空格");
+ flag = false;
+ break;
}
}
- else if (pr.Status != PromptStatus.OK)// PromptStatus.None == 右键,空格,回车,都在这里结束
+ else if (pr.Status != PromptStatus.OK) // PromptStatus.None == 右键,空格,回车,都在这里结束
{
- tr.Editor?.WriteMessage(Environment.NewLine + pr.Status.ToString());
+ tr.Editor?.WriteMessage(Environment.NewLine + pr.Status);
return;
}
else
+ {
flag = false;
+ }
}
+
tr.CurrentSpace.AddEntity(jig.Entities);
}
[CommandMethod(nameof(Test_MessageFilter))]
public void Test_MessageFilter()
{
- var dm = Acap.DocumentManager;
+ var dm = Acaop.DocumentManager;
var ed = dm.MdiActiveDocument.Editor;
// Create and add our message filter
MyMessageFilter filter = new();
- System.Windows.Forms.Application.AddMessageFilter(filter);
+ Application.AddMessageFilter(filter);
// Start the loop
while (true)
{
// Check for user input events
- System.Windows.Forms.Application.DoEvents();
+ Application.DoEvents();
// Check whether the filter has set the flag
- if (filter.bCanceled == true)
+ if (filter.BCanceled)
{
ed.WriteMessage("\nLoop cancelled.");
break;
}
+
ed.WriteMessage($"\nInside while loop...and {filter.Key}");
}
+
// We're done - remove the message filter
- System.Windows.Forms.Application.RemoveMessageFilter(filter);
- }
- // Our message filter class
- public class MyMessageFilter : IMessageFilter
- {
- public const int WM_KEYDOWN = 0x0100;
- public bool bCanceled = false;
- public Keys Key { get; private set; }
- public bool PreFilterMessage(ref Message m)
- {
- if (m.Msg == WM_KEYDOWN)
- {
- // Check for the Escape keypress
- Keys kc = (Keys)(int)m.WParam & Keys.KeyCode;
- if (m.Msg == WM_KEYDOWN && kc == Keys.Escape)
- bCanceled = true;
- Key = kc;
- // Return true to filter all keypresses
- return true;
- }
- // Return false to let other messages through
- return false;
- }
+ Application.RemoveMessageFilter(filter);
}
[CommandMethod(nameof(Test_QuickText))]
- static public void Test_QuickText()
+ public static void Test_QuickText()
{
- var dm = Acap.DocumentManager;
+ var dm = Acaop.DocumentManager;
var doc = dm.MdiActiveDocument;
var db = doc.Database;
var ed = doc.Editor;
@@ -205,27 +190,46 @@ static public void Test_QuickText()
if (state != PromptStatus.OK && state != PromptStatus.Keyword)
return;
}
+
tr.Commit();
}
+ // Our message filter class
+ private class MyMessageFilter : IMessageFilter
+ {
+ private const int WmKeydown = 0x0100;
+ public bool BCanceled;
+ public Keys Key { get; private set; }
+
+ public bool PreFilterMessage(ref Message m)
+ {
+ if (m.Msg == WmKeydown)
+ {
+ // Check for the Escape keypress
+ var kc = (Keys)(int)m.WParam & Keys.KeyCode;
+ if (m.Msg == WmKeydown && kc == Keys.Escape)
+ BCanceled = true;
+ Key = kc;
+ // Return true to filter all keypresses
+ return true;
+ }
+
+ // Return false to let other messages through
+ return false;
+ }
+ }
+
#if true
- class TextPlacementJig : EntityJig
+ private class TextPlacementJig(Transaction tr, Database db, Entity ent) : EntityJig(ent)
{
// Declare some internal state
- readonly Database _db;
- readonly Transaction _tr;
+ private readonly Database _db = db;
+ private readonly Transaction _tr = tr;
+ private double _angle, _txtSize = 1;
- Point3d _position;
- double _angle, _txtSize;
+ private Point3d _position;
// Constructor
- public TextPlacementJig(Transaction tr, Database db, Entity ent) : base(ent)
- {
- _db = db;
- _tr = tr;
- _angle = 0;
- _txtSize = 1;
- }
protected override SamplerStatus Sampler(JigPrompts jp)
{
@@ -233,31 +237,30 @@ protected override SamplerStatus Sampler(JigPrompts jp)
JigPromptPointOptions po = new("\nPosition of text")
{
UserInputControls =
- UserInputControls.Accept3dCoordinates |
- UserInputControls.NullResponseAccepted |
- UserInputControls.NoNegativeResponseAccepted |
- UserInputControls.GovernedByOrthoMode
+ UserInputControls.Accept3dCoordinates |
+ UserInputControls.NullResponseAccepted |
+ UserInputControls.NoNegativeResponseAccepted |
+ UserInputControls.GovernedByOrthoMode
};
po.SetMessageAndKeywords(
- "\nSpecify position of text or " +
- "[Bold/Italic/LArger/Smaller/" +
- "ROtate90/LEft/Middle/RIght]: ",
- "Bold Italic LArger Smaller " +
- "ROtate90 LEft Middle RIght"
+ "\nSpecify position of text or " +
+ "[Bold/Italic/LArger/Smaller/" +
+ "ROtate90/LEft/Middle/RIght]: ",
+ "Bold Italic LArger Smaller " +
+ "ROtate90 LEft Middle RIght"
);
- PromptPointResult ppr = jp.AcquirePoint(po);
+ var ppr = jp.AcquirePoint(po);
if (ppr.Status == PromptStatus.Keyword)
{
switch (ppr.StringResult)
{
case "Bold":
- break;
case "Italic":
- break;
+ break;
case "LArger":
{
- // Multiple the text size by two
+ // Multiply the text size by two
_txtSize *= 2;
break;
}
@@ -270,24 +273,21 @@ protected override SamplerStatus Sampler(JigPrompts jp)
case "ROtate90":
{
// To rotate clockwise we subtract 90 degrees and
- // then normalise the angle between 0 and 360
+ // then normalize the angle between 0 and 360
_angle -= Math.PI / 2;
- while (_angle < Math.PI * 2)
- {
- _angle += Math.PI * 2;
- }
+ while (_angle < Math.PI * 2) _angle += Math.PI * 2;
break;
}
case "LEft":
- break;
case "RIght":
- break;
case "Middle":
- break;
+ break;
}
+
return SamplerStatus.OK;
}
- else if (ppr.Status == PromptStatus.OK)
+
+ if (ppr.Status == PromptStatus.OK)
{
// Check if it has changed or not (reduces flicker)
if (_position.DistanceTo(ppr.Value) < Tolerance.Global.EqualPoint)
@@ -296,13 +296,14 @@ protected override SamplerStatus Sampler(JigPrompts jp)
_position = ppr.Value;
return SamplerStatus.OK;
}
+
return SamplerStatus.Cancel;
}
protected override bool Update()
{
// Set properties on our text object
- DBText txt = (DBText)Entity;
+ var txt = (DBText)Entity;
txt.Position = _position;
txt.Height = _txtSize;
txt.Rotation = _angle;
diff --git a/tests/TestShared/TestJigExTransient.cs b/tests/TestShared/TestJigExTransient.cs
index 52eb3f4be1f074790dfdaf2fea4e84c8a5c3dfb7..040f2322e99cda9ebe34f0d18f73c566a9514015 100644
--- a/tests/TestShared/TestJigExTransient.cs
+++ b/tests/TestShared/TestJigExTransient.cs
@@ -1,7 +1,6 @@
-
-namespace Test;
+namespace IFoxTest;
-public partial class Test
+public class TestJigEx
{
[CommandMethod(nameof(Test_JigExTransient))]
public void Test_JigExTransient()
@@ -20,7 +19,7 @@ public void Test_JigExTransient()
// 将c1以默认模式,c2以亮显模式加到瞬态容器,即在图纸上显示
jet.Add(c1);
- jet.Add(c2, Acgi.TransientDrawingMode.Highlight);
+ jet.Add(c2, TransientDrawingMode.Highlight);
// 再取一点,再建一个圆c3
var r2 = Env.Editor.GetPoint("\n选择下一点");
@@ -55,10 +54,10 @@ public static void Test_JigExTransentDim()
{
PromptPointOptions ppo = new("")
{
- AppendKeywordsToMessage = false,
+ AppendKeywordsToMessage = false
};
- List pts = new();
- for (int i = 0; i < 3; i++)
+ List pts = [];
+ for (var i = 0; i < 3; i++)
{
ppo.Message = $"\n选择标注点{i + 1}";
var ppr = Env.Editor.GetPoint(ppo);
@@ -70,7 +69,7 @@ public static void Test_JigExTransentDim()
using DBTrans tr = new();
using RotatedDimension dimension = new();
- dimension.SetDatabaseDefaults();// cad16没有这个不显示
+ dimension.SetDatabaseDefaults(); // cad16没有这个不显示
dimension.Rotation = 0;
dimension.XLine1Point = pts[0];
dimension.XLine2Point = pts[1];
@@ -85,4 +84,4 @@ public static void Test_JigExTransentDim()
Env.Editor.GetPoint("\n此拾取无意义,仅为了暂停查看");
tr.CurrentSpace.AddEntity(dimension);
}
-}
+}
\ No newline at end of file
diff --git a/tests/TestShared/TestJson.cs b/tests/TestShared/TestJson.cs
index 281e1b1bce4ee8e0a21e9aa11696d9f83b7ae2fd..015c49eaf237a09d48228c4e03d806e1673a5d15 100644
--- a/tests/TestShared/TestJson.cs
+++ b/tests/TestShared/TestJson.cs
@@ -1,4 +1,6 @@
-namespace TestShared;
+using System.Text.Json;
+
+namespace IFoxTest;
public class TestJson
{
@@ -9,19 +11,12 @@ public class TestJson
*
*
*/
- [CommandMethod(nameof(JavaScriptSerializer))]
- public void JavaScriptSerializer()
+ [CommandMethod(nameof(Test_JavaScriptSerializer))]
+ public void Test_JavaScriptSerializer()
{
- List RegisteredUsers = [];
- RegisteredUsers.Add(0);
- RegisteredUsers.Add(1);
- RegisteredUsers.Add(2);
- RegisteredUsers.Add(3);
-
- var serializedResult = System.Text.Json.JsonSerializer.Serialize(RegisteredUsers);
- var deserializedResult = System.Text.Json.JsonSerializer.Deserialize>(serializedResult);
+ List registeredUsers = [0, 1, 2, 3];
-
-
+ var serializedResult = JsonSerializer.Serialize(registeredUsers);
+ var deserializedResult = JsonSerializer.Deserialize>(serializedResult);
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestLayer.cs b/tests/TestShared/TestLayer.cs
index 62df5e1bf2723132947d5374c1f7b6d20389fbce..55b7dc5db82e7eff64df87e69fb1901634192663 100644
--- a/tests/TestShared/TestLayer.cs
+++ b/tests/TestShared/TestLayer.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class TestLayer
{
@@ -7,18 +7,25 @@ public void Test_LayerAdd0()
{
using DBTrans tr = new();
tr.LayerTable.Add("1");
- tr.LayerTable.Add("2", lt => {
- lt.Color = Color.FromColorIndex(ColorMethod.ByColor, 1);
- lt.LineWeight = LineWeight.LineWeight030;
- });
+ tr.LayerTable.Add(
+ "2",
+ lt =>
+ {
+ lt.Color = Color.FromColorIndex(ColorMethod.ByColor, 1);
+ lt.LineWeight = LineWeight.LineWeight030;
+ }
+ );
tr.LayerTable.Remove("3");
tr.LayerTable.Delete("0");
- tr.LayerTable.Change("4", lt => {
- lt.Color = Color.FromColorIndex(ColorMethod.ByColor, 2);
- });
+ tr.LayerTable.Change(
+ "4",
+ lt =>
+ {
+ lt.Color = Color.FromColorIndex(ColorMethod.ByColor, 2);
+ }
+ );
}
-
// 添加图层
[CommandMethod(nameof(Test_LayerAdd1))]
public void Test_LayerAdd1()
@@ -35,32 +42,31 @@ public void Test_LayerAdd2()
tr.LayerTable.Add("test2", 2);
// tr.LayerTable["3"] = new LayerTableRecord();
}
+
// 删除图层
[CommandMethod(nameof(Test_LayerDel))]
public void Test_LayerDel()
{
using DBTrans tr = new();
- tr.LayerTable.Remove("0"); // 删除图层 0
- tr.LayerTable.Remove("Defpoints");// 删除图层 Defpoints
- tr.LayerTable.Remove("1"); // 删除不存在的图层 1
- tr.LayerTable.Remove("2"); // 删除有图元的图层 2
- tr.LayerTable.Remove("3"); // 删除图层 3 // 删除图层 3
+ tr.LayerTable.Remove("0"); // 删除图层 0
+ tr.LayerTable.Remove("Defpoints"); // 删除图层 Defpoints
+ tr.LayerTable.Remove("1"); // 删除不存在的图层 1
+ tr.LayerTable.Remove("2"); // 删除有图元的图层 2
+ tr.LayerTable.Remove("3"); // 删除图层 3 // 删除图层 3
tr.LayerTable.Remove("2"); // 测试是否能强制删除
}
-
+
[CommandMethod(nameof(Test_PrintLayerName))]
public void Test_PrintLayerName()
{
using DBTrans tr = new();
foreach (var layerRecord in tr.LayerTable.GetRecords())
- {
Env.Printl(layerRecord.Name);
- }
foreach (var layerRecord in tr.LayerTable.GetRecords())
{
Env.Printl(layerRecord.Name);
break;
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestLisp.cs b/tests/TestShared/TestLisp.cs
index 4bd7b193b39beb6d5b61f31a5d4b7945ee7551f6..0dfb5224a2beca4b5db292f9d833e0a8ece25286 100644
--- a/tests/TestShared/TestLisp.cs
+++ b/tests/TestShared/TestLisp.cs
@@ -1,10 +1,10 @@
-namespace Test;
+namespace IFoxTest;
public class TestLisp
{
// 定义lisp函数
- [LispFunction(nameof(LispTest_RunLisp))]
- public static object LispTest_RunLisp(ResultBuffer rb)
+ [LispFunction(nameof(Test_RunLisp))]
+ public static object Test_RunLisp(ResultBuffer rb)
{
CmdTest_RunLisp();
return null!;
@@ -46,7 +46,7 @@ public static object LispTest_RunLisp(ResultBuffer rb)
[CommandMethod("CmdTest_RunLisp17", CommandFlags.Interruptible)]
// 命令不会被记录在命令历史记录
[CommandMethod("CmdTest_RunLisp18", CommandFlags.NoHistory)]
-#if (!zcad)
+#if !zcad
// 命令不会被 UNDO取消
[CommandMethod("CmdTest_RunLisp19", CommandFlags.NoUndoMarker)]
// 不能在参照块中使用命令
@@ -57,17 +57,16 @@ public static object LispTest_RunLisp(ResultBuffer rb)
// acad09增,会被动作录制器捕捉
[CommandMethod("CmdTest_RunLisp22", CommandFlags.ActionMacro)]
-
// 推断约束时不能使用命令
[CommandMethod("CmdTest_RunLisp23", CommandFlags.NoInferConstraint)]
// 命令允许在选择图元时临时显示动态尺寸
[CommandMethod("CmdTest_RunLisp24", CommandFlags.TempShowDynDimension)]
#endif
- public static void CmdTest_RunLisp()
+ private static void CmdTest_RunLisp()
{
// 测试方法1: (command "CmdTest_RunLisp1")
// 测试方式2: (LispTest_RunLisp)
- var dm = Acap.DocumentManager;
+ var dm = Acaop.DocumentManager;
var doc = dm.MdiActiveDocument;
var ed = doc.Editor;
@@ -77,6 +76,7 @@ public static void CmdTest_RunLisp()
sb.Append((byte)item);
sb.Append(',');
}
+
sb.Remove(sb.Length - 1, 1);
var option = new PromptIntegerOptions($"\n输入RunLispFlag枚举值:[{sb}]");
var ppr = ed.GetInteger(option);
@@ -88,10 +88,8 @@ public static void CmdTest_RunLisp()
if (flag == EditorEx.RunLispFlag.AdsQueueexpr)
{
// 同步
- Env.Editor.RunLisp("(setq a 10)(princ)",
- EditorEx.RunLispFlag.AdsQueueexpr);
- Env.Editor.RunLisp("(princ a)",
- EditorEx.RunLispFlag.AdsQueueexpr);// 成功输出
+ Env.Editor.RunLisp("(setq a 10)(princ)");
+ Env.Editor.RunLisp("(princ a)"); // 成功输出
}
else if (flag == EditorEx.RunLispFlag.AcedEvaluateLisp)
{
@@ -115,8 +113,7 @@ public static void CmdTest_RunLisp()
var str = "(setq c 40)(princ)";
Env.Editor.RunLisp(str,
EditorEx.RunLispFlag.SendStringToExecute); // 异步,后发送
- Env.Editor.RunLisp("(princ c)",
- EditorEx.RunLispFlag.AdsQueueexpr); // 同步,先发送了,输出是null
+ Env.Editor.RunLisp("(princ c)"); // 同步,先发送了,输出是null
}
}
}
\ No newline at end of file
diff --git a/tests/TestShared/TestLoop.cs b/tests/TestShared/TestLoop.cs
index 438253ae5a8b7e03c3a0660e9d31409db966afb8..b82e073705dec27e62967dadba10379c120233c7 100644
--- a/tests/TestShared/TestLoop.cs
+++ b/tests/TestShared/TestLoop.cs
@@ -1,4 +1,5 @@
-namespace Test;
+namespace IFoxTest;
+
public class TestLoop
{
[CommandMethod(nameof(Test_LoopList))]
@@ -14,12 +15,12 @@ public void Test_LoopList()
5
};
- Env.Print(loop);
+ loop.Print();
loop.SetFirst(loop.Last!);
- Env.Print(loop);
- Env.Print(loop.Min());
+ loop.Print();
+ loop.Min().Print();
loop.SetFirst(new LoopListNode(loop.Min(), loop));
- Env.Print(loop);
+ loop.Print();
}
}
\ No newline at end of file
diff --git a/tests/TestShared/TestMarshal.cs b/tests/TestShared/TestMarshal.cs
index c2c15f69be6162ed260363e85ab92522cbb845cf..22fa99dfbe46f5653241e870e254f218b64d11a5 100644
--- a/tests/TestShared/TestMarshal.cs
+++ b/tests/TestShared/TestMarshal.cs
@@ -1,12 +1,12 @@
-using System.Diagnostics;
+using System.Diagnostics;
using static Fs.Fox.Basal.WindowsAPI;
-namespace TestShared;
+namespace IFoxTest;
public class TestMarshal
{
- [CommandMethod(nameof(TestToBytes))]
- public void TestToBytes()
+ [CommandMethod(nameof(Test_ToBytes))]
+ public void Test_ToBytes()
{
var ptA = new Point3d(123, 456, 789);
var bytes = StructToBytes(ptA);
@@ -23,28 +23,32 @@ public void Test_ChangeLinePoint()
using DBTrans tr = new();
- prs.Value.GetObjectIds().ForEach(id => {
- var line = id.GetObject();
- if (line == null)
- return;
- using (line.ForWrite())
- unsafe
+ prs.Value.GetObjectIds()
+ .ForEach(id =>
+ {
+ var line = id.GetObject();
+ if (line == null)
+ return;
+ using (line.ForWrite())
{
- // 不允许直接 &这个表达式进行取址(因为它是属性,不是字段)
- // 实际上就是默认拷贝一份副本出来
- var p1 = line.StartPoint;
- ((Point3D*)&p1)->X = 0;
- ((Point3D*)&p1)->Y = 0;
- ((Point3D*)&p1)->Z = 0;
- line.StartPoint = p1;// 又放回去,节省了一个变量
-
- var p2 = line.EndPoint;
- ((Point3D*)&p2)->X = 100;
- ((Point3D*)&p2)->Y = 100;
- ((Point3D*)&p2)->Z = 0;
- line.EndPoint = p2;
+ unsafe
+ {
+ // 不允许直接 &这个表达式进行取址(因为它是属性,不是字段)
+ // 实际上就是默认拷贝一份副本出来
+ var p1 = line.StartPoint;
+ ((Point3D*)&p1)->X = 0;
+ ((Point3D*)&p1)->Y = 0;
+ ((Point3D*)&p1)->Z = 0;
+ line.StartPoint = p1; // 又放回去,节省了一个变量
+
+ var p2 = line.EndPoint;
+ ((Point3D*)&p2)->X = 100;
+ ((Point3D*)&p2)->Y = 100;
+ ((Point3D*)&p2)->Z = 0;
+ line.EndPoint = p2;
+ }
}
- });
+ });
}
[CommandMethod(nameof(Test_ImplicitPoint3D))]
@@ -63,28 +67,29 @@ public void Test_ImplicitPoint3D()
var pt2 = Point3D.Create(new IntPtr(&pt1));
DebugEx.Printl("pt1地址::" + (int)&pt1);
DebugEx.Printl("pt2地址::" + (int)&pt2);
- Debug.Assert(&pt1 == &pt2);//不相等,是申请了新内存
+ Debug.Assert(&pt1 == &pt2); //不相等,是申请了新内存
}
}
[CommandMethod(nameof(Test_Marshal))]
public void Test_Marshal()
{
- var dm = Acap.DocumentManager;
+ var dm = Acaop.DocumentManager;
var doc = dm.MdiActiveDocument;
var ed = doc.Editor;
// 0x01 如何修改Point3d内容?
Point3d pt = new(100, 50, 0);
- ed.WriteMessage("\n原始:" + pt.ToString());
+ ed.WriteMessage("\n原始:" + pt);
// 0x02 最佳方法:
// 将Point3d内存转为Point3D,以此避开get保护,实现修改内部值
// 为了避免在安全类型中转换,多了栈帧(无法内联),直接用指针处理
unsafe
{
- ((Point3D*)&pt)->X = 12345;//必须强转成这个指针类型,不然它为(Point3d*)
+ ((Point3D*)&pt)->X = 12345; //必须强转成这个指针类型,不然它为(Point3d*)
}
- ed.WriteMessage("\n指针法:" + pt.ToString());
+
+ ed.WriteMessage("\n指针法:" + pt);
// 0x03 此方法仍然需要不安全操作,而且多了几个函数调用...
unsafe
@@ -94,17 +99,21 @@ public void Test_Marshal()
result2.X = 220;
result2.ToPtr(p);
}
+
"封送法:".Print();
pt.Print();
// 拷贝到数组,还原指针到结构,最后将内存空间转换为目标结构体
// 浪费内存,这不闹嘛~
- int typeSize = Marshal.SizeOf(pt);
- byte[] bytes = new byte[typeSize];
- IntPtr structPtr = Marshal.AllocHGlobal(Marshal.SizeOf(pt));
+ var typeSize = Marshal.SizeOf(pt);
+ var bytes = new byte[typeSize];
+ var structPtr = Marshal.AllocHGlobal(Marshal.SizeOf(pt));
Marshal.StructureToPtr(pt, structPtr, true);
Marshal.Copy(structPtr, bytes, 0, typeSize);
- var result = (Point3d)(Marshal.PtrToStructure(structPtr, typeof(Point3d)) ?? throw new InvalidOperationException());
+ var result = (Point3d)(
+ Marshal.PtrToStructure(structPtr, typeof(Point3d))
+ ?? throw new InvalidOperationException()
+ );
"内存拷贝:".Print();
result.Print();
@@ -120,4 +129,4 @@ public void Test_Marshal()
// 释放内存
Marshal.FreeHGlobal(structPtr);
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestMirrorFile.cs b/tests/TestShared/TestMirrorFile.cs
index 76ac0337f5b8d657fbe37014ed74e07d24699c46..579168dc8bad70b2b7fa4de0a5640609d978c432 100644
--- a/tests/TestShared/TestMirrorFile.cs
+++ b/tests/TestShared/TestMirrorFile.cs
@@ -1,73 +1,87 @@
-namespace Test;
+namespace IFoxTest;
public class MirrorFile
{
- const string file = "D:/JX.dwg";
- const string fileSave = "D:/JX222.dwg";
+ private const string File = "D:/JX.dwg";
+ private const string FileSave = "D:/JX222.dwg";
///
- /// 测试:后台打开图纸,镜像文字是否存在文字偏移
- /// 答案:不存在
+ /// 测试:后台打开图纸,镜像文字是否存在文字偏移
+ /// 答案:不存在
///
- [CommandMethod(nameof(CmdTest_MirrorFile))]
- public static void CmdTest_MirrorFile()
+ [CommandMethod(nameof(Test_MirrorFile))]
+ public static void Test_MirrorFile()
{
var yaxis = new Point3d(0, 1, 0);
- using DBTrans tr = new(file, fileOpenMode: FileOpenMode.OpenForReadAndReadShare);
- tr.BlockTable.Change(tr.ModelSpace.ObjectId, modelSpace => {
- modelSpace.ForEach(entId => {
- var dbText = tr.GetObject(entId, OpenMode.ForRead)!;
- if (dbText is null)
- return;
+ using DBTrans tr = new(File, fileOpenMode: FileOpenMode.OpenForReadAndReadShare);
+ tr.BlockTable.Change(
+ tr.ModelSpace.ObjectId,
+ modelSpace =>
+ {
+ modelSpace.ForEach(entId =>
+ {
+ var dbText = tr.GetObject(entId);
+ if (dbText is null)
+ return;
- dbText.UpgradeOpen();
- var pos = dbText.Position;
- // text.Move(pos, Point3d.Origin);
- // Y轴
- dbText.Mirror(Point3d.Origin, yaxis);
- // text.Move(Point3d.Origin, pos);
- dbText.DowngradeOpen();
- });
- });
- var ver = (DwgVersion)27;/*AC1021 AutoCAD 2007/2008/2009.*/
- tr.Database.SaveAs(fileSave, ver);
+ dbText.UpgradeOpen();
+ var pos = dbText.Position;
+ // text.Move(pos, Point3d.Origin);
+ // Y轴
+ dbText.Mirror(Point3d.Origin, yaxis);
+ // text.Move(Point3d.Origin, pos);
+ dbText.DowngradeOpen();
+ });
+ }
+ );
+ var ver = (DwgVersion)27; /*AC1021 AutoCAD 2007/2008/2009.*/
+ tr.Database.SaveAs(FileSave, ver);
}
///
- /// 测试:后台设置 dbText.IsMirroredInX 属性会令文字偏移
- /// 答案:存在,并提出解决方案
+ /// 测试:后台设置 dbText.IsMirroredInX 属性会令文字偏移
+ /// 答案:存在,并提出解决方案
///
[CommandMethod(nameof(CmdTest_MirrorFile2))]
public static void CmdTest_MirrorFile2()
{
- using DBTrans tr = new(file);
+ using DBTrans tr = new(File);
- tr.Task(() => {
+ tr.Task(() =>
+ {
var yaxis = new Point3d(0, 1, 0);
- tr.BlockTable.Change(tr.ModelSpace.ObjectId, modelSpace => {
- modelSpace.ForEach(entId => {
- var entity = tr.GetObject(entId, OpenMode.ForWrite)!;
- if (entity is DBText dbText)
+ tr.BlockTable.Change(
+ tr.ModelSpace.ObjectId,
+ modelSpace =>
+ {
+ modelSpace.ForEach(entId =>
{
- dbText.Mirror(Point3d.Origin, yaxis);
- dbText.IsMirroredInX = true; // 这句将导致文字偏移
+ var entity = tr.GetObject(entId, OpenMode.ForWrite)!;
+ if (entity is DBText dbText)
+ {
+ dbText.Mirror(Point3d.Origin, yaxis);
+ dbText.IsMirroredInX = true; // 这句将导致文字偏移
- // 指定文字的垂直对齐方式
- if (dbText.VerticalMode == TextVerticalMode.TextBase)
- dbText.VerticalMode = TextVerticalMode.TextBottom;
+ // 指定文字的垂直对齐方式
+ if (dbText.VerticalMode == TextVerticalMode.TextBase)
+ dbText.VerticalMode = TextVerticalMode.TextBottom;
- // 指定文字的水平对齐方式
- dbText.HorizontalMode = dbText.HorizontalMode switch
- {
- TextHorizontalMode.TextLeft => TextHorizontalMode.TextRight,
- TextHorizontalMode.TextRight => TextHorizontalMode.TextLeft,
- _ => dbText.HorizontalMode
- };
- dbText.AdjustAlignment(tr.Database);
- }
- });
- });
+ // 指定文字的水平对齐方式
+ dbText.HorizontalMode = dbText.HorizontalMode switch
+ {
+ TextHorizontalMode.TextLeft => TextHorizontalMode.TextRight,
+ TextHorizontalMode.TextRight => TextHorizontalMode.TextLeft,
+ _ => dbText.HorizontalMode,
+ };
+ dbText.AdjustAlignment(tr.Database);
+ }
+ });
+ }
+ );
});
- tr.Database.SaveAs(fileSave, (DwgVersion)27 /*AC1021 AutoCAD 2007/2008/2009.*/);
+ tr.Database.SaveAs(
+ FileSave,
+ (DwgVersion)27 /*AC1021 AutoCAD 2007/2008/2009.*/
+ );
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestPoint.cs b/tests/TestShared/TestPoint.cs
index b69afeaec8a2e1a781ed669b371fee360d94c7e9..b13505439e2892bc9ccd6e3ec9c6ea5607df15b8 100644
--- a/tests/TestShared/TestPoint.cs
+++ b/tests/TestShared/TestPoint.cs
@@ -1,4 +1,6 @@
-namespace Test;
+// ReSharper disable ReturnValueOfPureMethodIsNotUsed
+namespace IFoxTest;
+
public class TestPoint
{
#if false
@@ -22,76 +24,62 @@ public void Test_Endtoend()
{
var pts = new Point2dCollection
{
- new(0, 0),
- new(0, 1),
- new(1, 1),
- new(1, 0)
+ new Point2d(0, 0),
+ new Point2d(0, 1),
+ new Point2d(1, 1),
+ new Point2d(1, 0),
};
-
- foreach (Point2d pt in pts)
- {
+ foreach (var pt in pts)
Env.Printl($"X={pt.X},Y={pt.Y}");
- }
pts.End2End();
Env.Printl("-------");
- foreach (Point2d pt in pts)
- {
+ foreach (var pt in pts)
Env.Printl($"X={pt.X},Y={pt.Y}");
- }
Env.Printl("--------");
var ptss = new Point3dCollection
{
- new(0, 0,0),
- new(0, 1,0),
- new(1, 1,0),
- new(1, 0,0)
+ new Point3d(0, 0, 0),
+ new Point3d(0, 1, 0),
+ new Point3d(1, 1, 0),
+ new Point3d(1, 0, 0),
};
-
+
foreach (Point3d pt in ptss)
- {
Env.Printl($"X={pt.X},Y={pt.Y},Z={pt.Z}");
- }
ptss.End2End();
Env.Printl("-------");
foreach (Point3d pt in ptss)
- {
Env.Printl($"X={pt.X},Y={pt.Y},Z={pt.Z}");
- }
-
}
-
+
///
- /// 红黑树排序点集
+ /// 红黑树排序点集
///
[CommandMethod(nameof(Test_PtSortedSet))]
public void Test_PtSortedSet()
{
var ss1 = new SortedSet
{
- new Point2d(1, 1),
- new Point2d(4.6, 2),
- new Point2d(8, 3),
- new Point2d(4, 3),
- new Point2d(5, 40),
- new Point2d(6, 5),
- new Point2d(1, 6),
- new Point2d(7, 6),
- new Point2d(9, 6)
+ new(1, 1),
+ new(4.6, 2),
+ new(8, 3),
+ new(4, 3),
+ new(5, 40),
+ new(6, 5),
+ new(1, 6),
+ new(7, 6),
+ new(9, 6),
};
/*判断区间,超过就中断*/
foreach (var item in ss1)
- {
- if (item.X > 3 && item.X < 7)
+ if (item.X is > 3 and < 7)
DebugEx.Printl(item);
else if (item.X >= 7)
break;
- }
}
-
-
[CommandMethod(nameof(Test_PtGethash))]
public void Test_PtGethash()
{
@@ -100,52 +88,57 @@ public void Test_PtGethash()
// Tools.TestTimes2(1_000_000, "新语法", () => {
// pt.GetHashString2();
// });
- Tools.TestTimes2(1_000_000, "旧语法", () => {
- pt.GetHashString();
- });
+ Tools.TestTimes2(
+ 1_000_000,
+ "旧语法",
+ () =>
+ {
+ pt.GetHashString();
+ }
+ );
}
[CommandMethod(nameof(Test_Point3dHash))]
public void Test_Point3dHash()
{
- Env.Print($"4位小数的hash:{new Point3d(0.0_001, 0.0_002, 0.0).GetHashCode()}");
- Env.Print($"5位小数的hash:{new Point3d(0.00_001, 0.00_002, 0.0).GetHashCode()}");
- Env.Print($"6位小数的hash:{new Point3d(0.000_001, 0.000_002, 0.0).GetHashCode()}");
- Env.Print($"7位小数的hash:{new Point3d(0.000_0_001, 0.000_0_002, 0.0).GetHashCode()}");
- Env.Print($"8位小数的hash:{new Point3d(0.000_00_001, 0.000_00_002, 0.0).GetHashCode()}");
- Env.Print($"9位小数的hash:{new Point3d(0.000_000_001, 0.000_000_002, 0.0).GetHashCode()}");
- Env.Print($"10位小数的hash:{new Point3d(0.000_000_0001, 0.000_000_0002, 0.0).GetHashCode()}");
- Env.Print($"10位小数的hash:{new Point3d(0.000_000_0001, 0.000_000_0001, 0.0).GetHashCode()}");
+ $"4位小数的hash:{new Point3d(0.0_001, 0.0_002, 0.0).GetHashCode()}".Print();
+ $"5位小数的hash:{new Point3d(0.00_001, 0.00_002, 0.0).GetHashCode()}".Print();
+ $"6位小数的hash:{new Point3d(0.000_001, 0.000_002, 0.0).GetHashCode()}".Print();
+ $"7位小数的hash:{new Point3d(0.000_0_001, 0.000_0_002, 0.0).GetHashCode()}".Print();
+ $"8位小数的hash:{new Point3d(0.000_00_001, 0.000_00_002, 0.0).GetHashCode()}".Print();
+ $"9位小数的hash:{new Point3d(0.000_000_001, 0.000_000_002, 0.0).GetHashCode()}".Print();
+ $"10位小数的hash:{new Point3d(0.000_000_0001, 0.000_000_0002, 0.0).GetHashCode()}".Print();
+ $"10位小数的hash:{new Point3d(0.000_000_0001, 0.000_000_0001, 0.0).GetHashCode()}".Print();
- Env.Print($"11位小数的hash:{new Point3d(0.000_000_000_01, 0.000_000_000_02, 0.0).GetHashCode()}");
- Env.Print($"11位小数的hash:{new Point3d(0.000_000_000_01, 0.000_000_000_01, 0.0).GetHashCode()}");
+ $"11位小数的hash:{new Point3d(0.000_000_000_01, 0.000_000_000_02, 0.0).GetHashCode()}".Print();
+ $"11位小数的hash:{new Point3d(0.000_000_000_01, 0.000_000_000_01, 0.0).GetHashCode()}".Print();
- Env.Print($"12位小数的hash:{new Point3d(0.000_000_000_001, 0.000_000_000_002, 0.0).GetHashCode()}");
- Env.Print($"12位小数的hash:{new Point3d(0.000_000_000_001, 0.000_000_000_001, 0.0).GetHashCode()}");
+ $"12位小数的hash:{new Point3d(0.000_000_000_001, 0.000_000_000_002, 0.0).GetHashCode()}".Print();
+ $"12位小数的hash:{new Point3d(0.000_000_000_001, 0.000_000_000_001, 0.0).GetHashCode()}".Print();
- Env.Print($"13位小数的hash:{new Point3d(0.000_000_000_0001, 0.000_000_000_0002, 0.0).GetHashCode()}");
- Env.Print($"13位小数的hash:{new Point3d(0.000_000_000_0001, 0.000_000_000_0001, 0.0).GetHashCode()}");
+ $"13位小数的hash:{new Point3d(0.000_000_000_0001, 0.000_000_000_0002, 0.0).GetHashCode()}".Print();
+ $"13位小数的hash:{new Point3d(0.000_000_000_0001, 0.000_000_000_0001, 0.0).GetHashCode()}".Print();
- Env.Print($"14位小数的hash:{new Point3d(0.000_000_000_000_01, 0.000_000_000_000_02, 0.0).GetHashCode()}");
- Env.Print($"14位小数的hash:{new Point3d(0.000_000_000_000_01, 0.000_000_000_000_01, 0.0).GetHashCode()}");
+ $"14位小数的hash:{new Point3d(0.000_000_000_000_01, 0.000_000_000_000_02, 0.0).GetHashCode()}".Print();
+ $"14位小数的hash:{new Point3d(0.000_000_000_000_01, 0.000_000_000_000_01, 0.0).GetHashCode()}".Print();
- Env.Print($"15位小数的hash:{new Point3d(0.000_000_000_000_001, 0.000_000_000_000_002, 0.0).GetHashCode()}");
- Env.Print($"15位小数的hash:{new Point3d(0.000_000_000_000_001, 0.000_000_000_000_001, 0.0).GetHashCode()}");
+ $"15位小数的hash:{new Point3d(0.000_000_000_000_001, 0.000_000_000_000_002, 0.0).GetHashCode()}".Print();
+ $"15位小数的hash:{new Point3d(0.000_000_000_000_001, 0.000_000_000_000_001, 0.0).GetHashCode()}".Print();
- Env.Print($"16位小数的hash:{new Point3d(0.000_000_000_000_000_1, 0.000_000_000_000_000_2, 0.0).GetHashCode()}");
- Env.Print($"16位小数的hash:{new Point3d(0.000_000_000_000_000_1, 0.000_000_000_000_000_1, 0.0).GetHashCode()}");
+ $"16位小数的hash:{new Point3d(0.000_000_000_000_000_1, 0.000_000_000_000_000_2, 0.0).GetHashCode()}".Print();
+ $"16位小数的hash:{new Point3d(0.000_000_000_000_000_1, 0.000_000_000_000_000_1, 0.0).GetHashCode()}".Print();
- Env.Print($"17位小数的hash:{new Point3d(0.000_000_000_000_000_01, 0.000_000_000_000_000_02, 0.0).GetHashCode()}");
- Env.Print($"17位小数的hash:{new Point3d(0.000_000_000_000_000_01, 0.000_000_000_000_000_01, 0.0).GetHashCode()}");
+ $"17位小数的hash:{new Point3d(0.000_000_000_000_000_01, 0.000_000_000_000_000_02, 0.0).GetHashCode()}".Print();
+ $"17位小数的hash:{new Point3d(0.000_000_000_000_000_01, 0.000_000_000_000_000_01, 0.0).GetHashCode()}".Print();
- Env.Print($"18位小数的hash:{new Point3d(0.000_000_000_000_000_001, 0.000_000_000_000_000_002, 0.0).GetHashCode()}");
- Env.Print($"18位小数的hash:{new Point3d(0.000_000_000_000_000_001, 0.000_000_000_000_000_001, 0.0).GetHashCode()}");
+ $"18位小数的hash:{new Point3d(0.000_000_000_000_000_001, 0.000_000_000_000_000_002, 0.0).GetHashCode()}".Print();
+ $"18位小数的hash:{new Point3d(0.000_000_000_000_000_001, 0.000_000_000_000_000_001, 0.0).GetHashCode()}".Print();
- Env.Print($"19位小数的hash:{new Point3d(0.000_000_000_000_000_000_1, 0.000_000_000_000_000_000_2, 0.0).GetHashCode()}");
- Env.Print($"19位小数的hash:{new Point3d(0.000_000_000_000_000_000_1, 0.000_000_000_000_000_000_1, 0.0).GetHashCode()}");
+ $"19位小数的hash:{new Point3d(0.000_000_000_000_000_000_1, 0.000_000_000_000_000_000_2, 0.0).GetHashCode()}".Print();
+ $"19位小数的hash:{new Point3d(0.000_000_000_000_000_000_1, 0.000_000_000_000_000_000_1, 0.0).GetHashCode()}".Print();
- Env.Print($"20位小数的hash:{new Point3d(0.000_000_000_000_000_000_01, 0.000_000_000_000_000_000_02, 0.0).GetHashCode()}");
- Env.Print($"20位小数的hash:{new Point3d(0.000_000_000_000_000_000_01, 0.000_000_000_000_000_000_01, 0.0).GetHashCode()}");
+ $"20位小数的hash:{new Point3d(0.000_000_000_000_000_000_01, 0.000_000_000_000_000_000_02, 0.0).GetHashCode()}".Print();
+ $"20位小数的hash:{new Point3d(0.000_000_000_000_000_000_01, 0.000_000_000_000_000_000_01, 0.0).GetHashCode()}".Print();
}
[CommandMethod(nameof(Test_ListEqualspeed))]
@@ -154,17 +147,66 @@ public void Test_ListEqualspeed()
var lst1 = new List { 1, 2, 3, 4 };
var lst2 = new List { 1, 2, 3, 4 };
lst1.SequenceEqual(null!);
- Tools.TestTimes2(1000000, "eqaulspeed:", () => {
- lst1.SequenceEqual(lst2);
- });
+ Tools.TestTimes2(
+ 1000000,
+ "eqaulspeed:",
+ () =>
+ {
+ lst1.SequenceEqual(lst2);
+ }
+ );
}
[CommandMethod(nameof(Test_Contains))]
public void Test_Contains()
{
// test list and dict contains speed
- var lst = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
- var hashset = new HashSet { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
+ var lst = new List
+ {
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ };
+ var hashset = new HashSet
+ {
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ };
var dict = new Dictionary
{
{ 1, 0 },
@@ -189,16 +231,31 @@ public void Test_Contains()
{ 20, 20 },
};
- Tools.TestTimes2(100_0000, "list:", () => {
- lst.Contains(20);
- });
+ Tools.TestTimes2(
+ 100_0000,
+ "list:",
+ () =>
+ {
+ lst.Contains(20);
+ }
+ );
- Tools.TestTimes2(100_0000, "hashset:", () => {
- hashset.Contains(20);
- });
+ Tools.TestTimes2(
+ 100_0000,
+ "hashset:",
+ () =>
+ {
+ hashset.Contains(20);
+ }
+ );
- Tools.TestTimes2(100_0000, "dict:", () => {
- dict.ContainsKey(20);
- });
+ Tools.TestTimes2(
+ 100_0000,
+ "dict:",
+ () =>
+ {
+ dict.ContainsKey(20);
+ }
+ );
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestPointEx.cs b/tests/TestShared/TestPointEx.cs
index 39ec186514fdec152ece92e8a84e23f52067743d..020e7cdc0990de1de3737e84dc6a3e30fca5740e 100644
--- a/tests/TestShared/TestPointEx.cs
+++ b/tests/TestShared/TestPointEx.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class TestPointEx
{
diff --git a/tests/TestShared/TestPointOnRegion.cs b/tests/TestShared/TestPointOnRegion.cs
index 62996a70d0b3672950126ea3be1c8e5371df844d..9773213327132e6b8f9056a6180169b34c936166 100644
--- a/tests/TestShared/TestPointOnRegion.cs
+++ b/tests/TestShared/TestPointOnRegion.cs
@@ -1,9 +1,9 @@
-namespace TestAcad2025;
+namespace IFoxTest;
public static class TestPointOnRegion
{
- [CommandMethod(nameof(TestPointOnRegionCommand))]
- public static void TestPointOnRegionCommand()
+ [CommandMethod(nameof(Test_PointOnRegionCommand))]
+ public static void Test_PointOnRegionCommand()
{
var r1 = Env.Editor.GetEntity("\n选择多段线");
if (r1.Status != PromptStatus.OK)
@@ -21,4 +21,4 @@ public static void TestPointOnRegionCommand()
stretchPoints.PointOnRegion(pt).Print();
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestQuadTree.cs b/tests/TestShared/TestQuadTree.cs
index 1c2e2a880eac3880a65558d5475e90cb187fae59..4146d54a7d6510107f3085ef0657d6b6b81743d9 100644
--- a/tests/TestShared/TestQuadTree.cs
+++ b/tests/TestShared/TestQuadTree.cs
@@ -1,4 +1,6 @@
-namespace Test;
+using Color = System.Drawing.Color;
+
+namespace IFoxTest;
/*
* 这里属于用户调用例子,
@@ -7,35 +9,38 @@ namespace Test;
*/
public class CadEntity : QuadEntity
{
- public ObjectId ObjectId;
- // 这里加入其他字段
- public List? Link;// 碰撞链
- public System.Drawing.Color Color;
public double Angle;
+
+ public Color Color;
+
+ // 这里加入其他字段
+ public List? Link; // 碰撞链
+ public ObjectId ObjectId;
+
public CadEntity(ObjectId objectId, Rect box) : base(box)
{
ObjectId = objectId;
}
+
public int CompareTo(CadEntity? other)
{
if (other == null)
return -1;
return GetHashCode() ^ other.GetHashCode();
}
+
public override int GetHashCode()
{
return (base.GetHashCode(), ObjectId.GetHashCode()).GetHashCode();
}
}
-
-
-
-
-public partial class TestQuadTree
+public class TestQuadTree
{
- QuadTree? _quadTreeRoot;
+ private QuadTree? _quadTreeRoot;
+
#region 四叉树创建并加入
+
[CommandMethod(nameof(Test_QuadTree))]
public void Test_QuadTree()
{
@@ -71,21 +76,22 @@ public void Test_QuadTree()
// 数据库边界
var pl = dbExt.ToPoints();
var databaseBoundary = new List<(Point3d, double, double, double)>
- {
- (new Point3d(pl[0].X,pl[0].Y,0),0,0,0),
- (new Point3d(pl[1].X,pl[1].Y,0),0,0,0),
- (new Point3d(pl[2].X,pl[2].Y,0),0,0,0),
- (new Point3d(pl[3].X,pl[3].Y,0),0,0,0),
- };
- tr.CurrentSpace.AddEntity(databaseBoundary.CreatePolyline(action: e => e.Closed = true));
+ {
+ (new Point3d(pl[0].X, pl[0].Y, 0), 0, 0, 0),
+ (new Point3d(pl[1].X, pl[1].Y, 0), 0, 0, 0),
+ (new Point3d(pl[2].X, pl[2].Y, 0), 0, 0, 0),
+ (new Point3d(pl[3].X, pl[3].Y, 0), 0, 0, 0)
+ };
+ tr.CurrentSpace.AddEntity(databaseBoundary.CreatePolyline(e => e.Closed = true));
// 生成多少个图元,导致cad会令undo出错(八叉树深度过大 treemax)
// int maximumItems = 30_0000;
- int maximumItems = 1000;
+ var maximumItems = 1000;
// 随机图元生成
- List ces = new(); // 用于随机获取图元
- Tools.TestTimes(1, "画圆消耗时间:", () => {
+ List ces = []; // 用于随机获取图元
+ Tools.TestTimes(1, "画圆消耗时间:", () =>
+ {
// 生成外边界和随机圆形
var grc = GenerateRandomCircle(maximumItems, dbExt);
foreach (var ent in grc)
@@ -109,23 +115,24 @@ public void Test_QuadTree()
var dbPointCe = new CadEntity(entId, entRect);
ces.Add(dbPointCe);
}
- });// 30万图元±3秒.cad2021
+ }); // 30万图元±3秒.cad2021
// 测试只加入四叉树的时间
- Tools.TestTimes(1, "插入四叉树时间:", () => {
- for (int i = 0; i < ces.Count; i++)
- _quadTreeRoot.Insert(ces[i]);
- });// 30万图元±0.7秒.cad2021
+ Tools.TestTimes(1, "插入四叉树时间:", () =>
+ {
+ foreach (var t in ces)
+ _quadTreeRoot.Insert(t);
+ }); // 30万图元±0.7秒.cad2021
tr.Editor?.WriteMessage($"\n加入图元数量:{maximumItems}");
}
///
- /// 创建随机圆形
+ /// 创建随机圆形
///
/// 创建数量
/// 数据库边界
- static IEnumerable GenerateRandomCircle(int createNumber, Rect dbExt)
+ private static IEnumerable GenerateRandomCircle(int createNumber, Rect dbExt)
{
var x1 = (int)dbExt.X;
var x2 = (int)(dbExt.X + dbExt.Width);
@@ -133,7 +140,7 @@ public void Test_QuadTree()
var y2 = (int)(dbExt.Y + dbExt.Height);
var rand = RandomEx.GetRandom();
- for (int i = 0; i < createNumber; i++)
+ for (var i = 0; i < createNumber; i++)
{
var x = rand.Next(x1, x2) + rand.NextDouble();
var y = rand.Next(y1, y2) + rand.NextDouble();
@@ -143,10 +150,9 @@ public void Test_QuadTree()
/* 啊惊: 有点懒不想改了*/
#if true2
-
// 选择加入到四叉树
- [CommandMethod(nameof(CmdTest_QuadTree21))]
- public void CmdTest_QuadTree21()
+ [CommandMethod(nameof(Test_QuadTree21))]
+ public void Test_QuadTree21()
{
var dm = Acap.DocumentManager;
var doc = dm.MdiActiveDocument;
@@ -162,8 +168,8 @@ public void CmdTest_QuadTree21()
}
// 自动加入全图到四叉树
- [CommandMethod(nameof(CmdTest_QuadTree20))]
- public void CmdTest_QuadTree20()
+ [CommandMethod(nameof(Test_QuadTree20))]
+ public void Test_QuadTree20()
{
var dm = Acap.DocumentManager;
var doc = dm.MdiActiveDocument;
@@ -183,7 +189,7 @@ public void CmdTest_QuadTree20()
{
// var ent = item.ToEntity(tr);
ss.Add(item);
- ++entnum;// 图元数量:100000, 遍历全图时间:0.216秒 CmdTest_QuadTree2
+ ++entnum;// 图元数量:100000, 遍历全图时间:0.216秒 Test_QuadTree2
}
return false;
});
@@ -221,10 +227,10 @@ void AddQuadTreeRoot(Database db, Editor ed, List ss)
/* 测试:
* 为了测试删除内容释放了分支,再重复加入是否报错
- * 先创建 CmdTest_QuadTree1
- * 再减去 CmdTest_QuadTree0
+ * 先创建 Test_QuadTree1
+ * 再减去 Test_QuadTree0
* 然后原有黑色边界,再生成边界 CmdTest_Create00,对比删除效果.
- * 然后加入 CmdTest_QuadTree2
+ * 然后加入 Test_QuadTree2
* 然后原有黑色边界,再生成边界 CmdTest_Create00,对比删除效果.
*/
@@ -257,11 +263,10 @@ void AddQuadTreeRoot(Database db, Editor ed, List ss)
/* 啊惊: 有点懒不想改了*/
#if true2
-
#region 节点边界显示
// 四叉树减去节点
- [CommandMethod(nameof(CmdTest_QuadTree0))]
- public void CmdTest_QuadTree0()
+ [CommandMethod(nameof(Test_QuadTree0))]
+ public void Test_QuadTree0()
{
var dm = Acap.DocumentManager;
var doc = dm.MdiActiveDocument;
@@ -281,8 +286,8 @@ public void CmdTest_QuadTree0()
}
// 创建节点边界
- [CommandMethod(nameof(CmdTest_CreateNodesRect))]
- public void CmdTest_CreateNodesRect()
+ [CommandMethod(nameof(Test_CreateNodesRect))]
+ public void Test_CreateNodesRect()
{
var dm = Acap.DocumentManager;
var doc = dm.MdiActiveDocument;
@@ -332,24 +337,25 @@ public void CmdTest_CreateNodesRect()
#endif
#region 四叉树查询节点
+
// 选择范围改图元颜色
- [CommandMethod(nameof(CmdTest_QuadTree3))]
- public void CmdTest_QuadTree3()
+ [CommandMethod(nameof(Test_QuadTree3))]
+ public void Test_QuadTree3()
{
Ssget(QuadTreeSelectMode.IntersectsWith);
}
- [CommandMethod(nameof(CmdTest_QuadTree4))]
- public void CmdTest_QuadTree4()
+ [CommandMethod(nameof(Test_QuadTree4))]
+ public void Test_QuadTree4()
{
Ssget(QuadTreeSelectMode.Contains);
}
///
- /// 改颜色
+ /// 改颜色
///
///
- void Ssget(QuadTreeSelectMode mode)
+ private void Ssget(QuadTreeSelectMode mode)
{
if (_quadTreeRoot is null)
return;
@@ -365,20 +371,21 @@ void Ssget(QuadTreeSelectMode mode)
// 仿选择集
var ces = _quadTreeRoot.Query(rect, mode);
- ces.ForEach(item => {
+ ces.ForEach(item =>
+ {
var ent = tr.GetObject(item.ObjectId, OpenMode.ForWrite);
- ent!.Color = Color.FromColor(item.Color);
+ ent!.Color = Autodesk.AutoCAD.Colors.Color.FromColor(item.Color);
ent.DowngradeOpen();
ent.Dispose();
});
}
///
- /// 交互获取
+ /// 交互获取
///
///
///
- public static Rect? GetCorner(Editor ed)
+ private static Rect? GetCorner(Editor ed)
{
var optionsA = new PromptPointOptions($"{Environment.NewLine}起点位置:");
var pprA = ed.GetPoint(optionsA);
@@ -386,17 +393,18 @@ void Ssget(QuadTreeSelectMode mode)
return null;
var optionsB = new PromptCornerOptions(Environment.NewLine + "输入矩形角点2:", pprA.Value)
{
- UseDashedLine = true,// 使用虚线
- AllowNone = true,// 回车
+ UseDashedLine = true, // 使用虚线
+ AllowNone = true // 回车
};
var pprB = ed.GetCorner(optionsB);
if (pprB.Status != PromptStatus.OK)
return null!;
return new Rect(new Point2d(pprA.Value.X, pprA.Value.Y),
- new Point2d(pprB.Value.X, pprB.Value.Y),
- true);
+ new Point2d(pprB.Value.X, pprB.Value.Y),
+ true);
}
+
#endregion
}
diff --git a/tests/TestShared/TestSelectfilter.cs b/tests/TestShared/TestSelectfilter.cs
index cab6c92c10c3b97915bf39ac743edb9e938e1031..44d22dc9b0cf2d29a9fec643e081211091404bde 100644
--- a/tests/TestShared/TestSelectfilter.cs
+++ b/tests/TestShared/TestSelectfilter.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class Testselectfilter
{
@@ -6,16 +6,17 @@ public class Testselectfilter
public void Test_Filter()
{
var p = new Point3d(10, 10, 0);
- var f = OpFilter.Build(
- e => !(e.Dxf(0) == "line" & e.Dxf(8) == "0")
- | e.Dxf(0) != "circle" & e.Dxf(8) == "2" & e.Dxf(10) >= p);
-
-
- var f2 = OpFilter.Build(
- e => e.Or(
- !e.And(e.Dxf(0) == "line", e.Dxf(8) == "0"),
- e.And(e.Dxf(0) != "circle", e.Dxf(8) == "2",
- e.Dxf(10) <= new Point3d(10, 10, 0))));
+ var f = OpFilter.Build(e =>
+ !((e.Dxf(0) == "line") & (e.Dxf(8) == "0"))
+ | ((e.Dxf(0) != "circle") & (e.Dxf(8) == "2") & (e.Dxf(10) >= p))
+ );
+
+ var f2 = OpFilter.Build(e =>
+ e.Or(
+ !e.And(e.Dxf(0) == "line", e.Dxf(8) == "0"),
+ e.And(e.Dxf(0) != "circle", e.Dxf(8) == "2", e.Dxf(10) <= new Point3d(10, 10, 0))
+ )
+ );
SelectionFilter f3 = f;
SelectionFilter f4 = f2;
@@ -37,12 +38,11 @@ public class TestSelectObjectType
public void Test_Select_type()
{
var sel = Env.Editor.SSGet();
- if (sel.Status != PromptStatus.OK) return;
+ if (sel.Status != PromptStatus.OK)
+ return;
var ids = sel.Value.GetObjectIds();
foreach (var item in ids)
- {
item.Print();
- }
var dxfName = RXObject.GetClass(typeof(Dimension)).DxfName;
dxfName.Print();
@@ -52,7 +52,5 @@ public void Test_Select_type()
item.Print();
item.ObjectClass.DxfName.Print();
}
-
}
-
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/TestShared.projitems b/tests/TestShared/TestShared.projitems
index 4dfb640586b4c0444d0b39fc6e8c99ffe1433c47..c2056cbcdf942270fc1ef12639a7979fceec9b64 100644
--- a/tests/TestShared/TestShared.projitems
+++ b/tests/TestShared/TestShared.projitems
@@ -1,53 +1,54 @@
-
- $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
- true
- ced63d2d-0af6-4831-806d-5e8e9b0d0a07
-
-
- TestShared
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ ced63d2d-0af6-4831-806d-5e8e9b0d0a07
+
+
+ TestShared
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/TestShared/TestShared.shproj b/tests/TestShared/TestShared.shproj
index 31ea779a25d8b662fbe52cf640dbcceff700c326..6ad3dd111c47a5dc2c3569c03fd23d22e521a5cb 100644
--- a/tests/TestShared/TestShared.shproj
+++ b/tests/TestShared/TestShared.shproj
@@ -1,13 +1,13 @@
-
- ced63d2d-0af6-4831-806d-5e8e9b0d0a07
- 14.0
-
-
-
-
-
-
-
+
+ ced63d2d-0af6-4831-806d-5e8e9b0d0a07
+ 14.0
+
+
+
+
+
+
+
diff --git a/tests/TestShared/TestSingleKeyWordHook.cs b/tests/TestShared/TestSingleKeyWordHook.cs
index 73fe216cf7e19ba408589117d8f99a58290527bb..98953e1a1de29441c33584e2edcbdfd5621c9441 100644
--- a/tests/TestShared/TestSingleKeyWordHook.cs
+++ b/tests/TestShared/TestSingleKeyWordHook.cs
@@ -1,14 +1,18 @@
-namespace TestShared;
+namespace IFoxTest;
+
public static class TestSingleKeyWordHook
{
- [CommandMethod(nameof(TestSingleKeyWordHookDemo))]
- public static void TestSingleKeyWordHookDemo()
+ [CommandMethod(nameof(Test_SingleKeyWordHook))]
+ public static void Test_SingleKeyWordHook()
{
var line1 = new Line(Point3d.Origin, new Point3d(100, 100, 0));
line1.SetDatabaseDefaults();
- using var j1 = new JigEx((mpw, _) => {
- line1.Move(line1.StartPoint, mpw);
- });
+ using var j1 = new JigEx(
+ (mpw, _) =>
+ {
+ line1.Move(line1.StartPoint, mpw);
+ }
+ );
j1.DatabaseEntityDraw(wd => wd.Geometry.Draw(line1));
var jppo = j1.SetOptions("\n选择位置或");
jppo.Keywords.Add("A", "A", "旋转90°(A)");
@@ -29,19 +33,22 @@ public static void TestSingleKeyWordHookDemo()
switch (skwh.IsResponsed ? skwh.StringResult : r1.StringResult.ToUpper())
{
case "A":
- line1.Rotation(line1.StartPoint, Math.PI * 0.5, Vector3d.ZAxis);
- break;
+ line1.Rotation(line1.StartPoint, Math.PI * 0.5, Vector3d.ZAxis);
+ break;
case "D":
- line1.Rotation(line1.StartPoint, Math.PI * 0.25, Vector3d.ZAxis);
- break;
+ line1.Rotation(line1.StartPoint, Math.PI * 0.25, Vector3d.ZAxis);
+ break;
}
+
continue;
}
+
if (r1.Status == PromptStatus.OK)
{
using var tr = new DBTrans();
tr.CurrentSpace.AddEntity(line1);
}
+
return;
}
}
diff --git a/tests/TestShared/TestText.cs b/tests/TestShared/TestText.cs
index b25dab69dab226d5dbcbc7708afb9c7bb8240209..3e57e28af2707d162c4cb2783d4ceb2513b078be 100644
--- a/tests/TestShared/TestText.cs
+++ b/tests/TestShared/TestText.cs
@@ -1,49 +1,73 @@
-
-namespace TestShared;
+namespace IFoxTest;
public class TestText
{
-
- [CommandMethod(nameof(TestDBText))]
- public void TestDBText()
+ [CommandMethod(nameof(Test_DBText))]
+ public void Test_DBText()
{
using var tr = new DBTrans();
- tr.CurrentSpace.AddEntity(DBTextEx.CreateDBText(new(-1, -1, 0), "123", 2.5, action:t=> t.ColorIndex = 1));
+ tr.CurrentSpace.AddEntity(
+ DBTextEx.CreateDBText(new Point3d(-1, -1, 0), "123", 2.5, action: t => t.ColorIndex = 1)
+ );
- tr.CurrentSpace.AddEntity(DBTextEx.CreateDBText(new(-1, -1, 0), "123", 2.5, action: t => {
- t.Justify = AttachmentPoint.BaseCenter;
- t.AlignmentPoint = new(1, 1, 0);
- t.ColorIndex = 2;
- }));
+ tr.CurrentSpace.AddEntity(
+ DBTextEx.CreateDBText(
+ new Point3d(-1, -1, 0),
+ "123",
+ 2.5,
+ action: t =>
+ {
+ t.Justify = AttachmentPoint.BaseCenter;
+ t.AlignmentPoint = new Point3d(1, 1, 0);
+ t.ColorIndex = 2;
+ }
+ )
+ );
}
- [CommandMethod(nameof(TestBackDBText))]
- public void TestBackDBText()
+ [CommandMethod(nameof(Test_BackDBText))]
+ public void Test_BackDBText()
{
- using var tr = new DBTrans(@"C:\Users\vic\Desktop\test.dwg");
- tr.CurrentSpace.AddEntity(DBTextEx.CreateDBText(new(-1, -1, 0), "123", 2.5, action: t => t.ColorIndex = 1));
+ using var tr = new DBTrans(Path.Combine(DeskTop, "test.dwg"));
+ tr.CurrentSpace.AddEntity(
+ DBTextEx.CreateDBText(new Point3d(-1, -1, 0), "123", 2.5, action: t => t.ColorIndex = 1)
+ );
- tr.CurrentSpace.AddEntity(DBTextEx.CreateDBText(new(-1, -1, 0), "123", 2.5, action: t =>
- {
- t.Justify = AttachmentPoint.BaseCenter;
- t.AlignmentPoint = new(1, 1, 0);
- t.ColorIndex = 2;
- }));
+ tr.CurrentSpace.AddEntity(
+ DBTextEx.CreateDBText(
+ new Point3d(-1, -1, 0),
+ "123",
+ 2.5,
+ action: t =>
+ {
+ t.Justify = AttachmentPoint.BaseCenter;
+ t.AlignmentPoint = new Point3d(1, 1, 0);
+ t.ColorIndex = 2;
+ }
+ )
+ );
tr.Database.SaveDwgFile();
}
-
-
- [CommandMethod(nameof(TestMText))]
- public void TestMText()
+ [CommandMethod(nameof(Test_MText))]
+ public void Test_MText()
{
using var tr = new DBTrans();
- tr.CurrentSpace.AddEntity(MTextEx.CreateMText(new(5, 5, 0), "123", 2.5, action: t => t.ColorIndex = 1));
+ tr.CurrentSpace.AddEntity(
+ MTextEx.CreateMText(new Point3d(5, 5, 0), "123", 2.5, action: t => t.ColorIndex = 1)
+ );
- tr.CurrentSpace.AddEntity(MTextEx.CreateMText(new(5, 5, 0), "123", 2.5, action: t => {
- t.Attachment = AttachmentPoint.TopCenter;
- t.ColorIndex = 2;
- }));
+ tr.CurrentSpace.AddEntity(
+ MTextEx.CreateMText(
+ new Point3d(5, 5, 0),
+ "123",
+ 2.5,
+ action: t =>
+ {
+ t.Attachment = AttachmentPoint.TopCenter;
+ t.ColorIndex = 2;
+ }
+ )
+ );
}
-
}
diff --git a/tests/TestShared/TestXRecord.cs b/tests/TestShared/TestXRecord.cs
index 2b8b95fd96c170c38b64cbe0d7a2050da1b7e3ca..61ca140eadd38fae259b910baabdeb8c47cdbad8 100644
--- a/tests/TestShared/TestXRecord.cs
+++ b/tests/TestShared/TestXRecord.cs
@@ -1,4 +1,5 @@
-//#define ExtendedDataBinaryChunk
+//#define ExtendedDataBinaryChunk
+
#define XTextString
#if NewtonsoftJson
@@ -6,7 +7,7 @@
using Newtonsoft.Json;
using static Fs.Fox.Cad.WindowsAPI;
-namespace Test_XRecord;
+namespace IFoxTest;
public class TestCmd_XRecord
{
diff --git a/tests/TestShared/TestXdata.cs b/tests/TestShared/TestXdata.cs
index a0c10afdeafa950b4893b6ef0445bfb9baa7fb32..9d5d9230f64b59e0fd3f57039a188b3d4ed50b1d 100644
--- a/tests/TestShared/TestXdata.cs
+++ b/tests/TestShared/TestXdata.cs
@@ -1,4 +1,4 @@
-namespace Test;
+namespace IFoxTest;
public class TestXdata
{
@@ -10,7 +10,7 @@ public class TestXdata
public void Test_AddXdata()
{
using DBTrans tr = new();
-
+
tr.RegAppTable.Add("myapp1");
tr.RegAppTable.Add(Appname); // add函数会默认的在存在这个名字的时候返回这个名字的regapp的id,不存在就新建
tr.RegAppTable.Add("myapp3");
@@ -18,28 +18,28 @@ public void Test_AddXdata()
var line = new Line(new Point3d(0, 0, 0), new Point3d(1, 1, 0))
{
- XData = new XDataList()
- {
- { DxfCode.ExtendedDataRegAppName, "myapp1" }, // 可以用dxfcode和int表示组码
- { DxfCode.ExtendedDataAsciiString, "xxxxxxx" },
- {1070, 12 },
- { DxfCode.ExtendedDataRegAppName, Appname }, // 可以用dxfcode和int表示组码,移除中间的测试
- { DxfCode.ExtendedDataAsciiString, "要移除的我" },
- { DxfCode.ExtendedDataAsciiString, "要移除的我" },
- { DxfCode.ExtendedDataAsciiString, "要移除的我" },
- { DxfCode.ExtendedDataAsciiString, "要移除的我" },
- {1070, 12 },
- { DxfCode.ExtendedDataRegAppName, "myapp3" }, // 可以用dxfcode和int表示组码
- { DxfCode.ExtendedDataAsciiString, "aaaaaaaaa" },
- {1070, 12 },
- { DxfCode.ExtendedDataRegAppName, "myapp4" }, // 可以用dxfcode和int表示组码
- { DxfCode.ExtendedDataAsciiString, "bbbbbbbbb" },
- {1070, 12 }
- }
+ XData = new XDataList
+ {
+ { DxfCode.ExtendedDataRegAppName, "myapp1" }, // 可以用dxfcode和int表示组码
+ { DxfCode.ExtendedDataAsciiString, "xxxxxxx" },
+ { 1070, 12 },
+ { DxfCode.ExtendedDataRegAppName, Appname }, // 可以用dxfcode和int表示组码,移除中间的测试
+ { DxfCode.ExtendedDataAsciiString, "要移除的我" },
+ { DxfCode.ExtendedDataAsciiString, "要移除的我" },
+ { DxfCode.ExtendedDataAsciiString, "要移除的我" },
+ { DxfCode.ExtendedDataAsciiString, "要移除的我" },
+ { 1070, 12 },
+ { DxfCode.ExtendedDataRegAppName, "myapp3" }, // 可以用dxfcode和int表示组码
+ { DxfCode.ExtendedDataAsciiString, "aaaaaaaaa" },
+ { 1070, 12 },
+ { DxfCode.ExtendedDataRegAppName, "myapp4" }, // 可以用dxfcode和int表示组码
+ { DxfCode.ExtendedDataAsciiString, "bbbbbbbbb" },
+ { 1070, 12 }
+ }
};
- var line1 = new Line(new(0, 0, 0), new(2, 0, 0));
- line1.XData = new XDataList()
+ var line1 = new Line(new Point3d(0, 0, 0), new Point3d(2, 0, 0));
+ line1.XData = new XDataList
{
{ DxfCode.ExtendedDataRegAppName, "myapp1" }, // 可以用dxfcode和int表示组码
{ DxfCode.ExtendedDataAsciiString, "xxxxxxx" },
@@ -59,15 +59,16 @@ public void Test_AddXdata()
{ 1070, 12 }
};
- tr.CurrentSpace.AddEntity(line,line1);
+ tr.CurrentSpace.AddEntity(line, line1);
}
+
// 删
[CommandMethod(nameof(Test_RemoveXdata))]
public void Test_RemoveXdata()
{
var res = Env.Editor.GetEntity("\n select the entity:");
if (res.Status != PromptStatus.OK) return;
-
+
using DBTrans tr = new();
var ent = tr.GetObject(res.ObjectId);
if (ent == null || ent.XData == null)
@@ -81,6 +82,7 @@ public void Test_RemoveXdata()
ent.RemoveXData(Appname);
Env.Printl("\n移除appName后:" + ent.XData);
}
+
// 查
[CommandMethod(nameof(Test_GetXdata))]
public void Test_GetXdata()
@@ -91,12 +93,12 @@ public void Test_GetXdata()
tr.RegAppTable.GetRecords().ForEach(rec => rec.Name.Print());
tr.RegAppTable.GetRecordNames().ForEach(name => name.Print());
tr.RegAppTable.ForEach(reg => reg.Name.Print(), checkIdOk: false);
-
+
// 查询appName里面是否含有某个
var res = Env.Editor.GetEntity("\n select the entity:");
if (res.Status != PromptStatus.OK) return;
-
+
var ent = tr.GetObject(res.ObjectId);
if (ent == null || ent.XData == null)
return;
@@ -113,13 +115,14 @@ public void Test_GetXdata()
else
Env.Printl("不含有内容:" + str);
}
+
// 改
[CommandMethod(nameof(Test_ChangeXdata))]
public void Test_ChangeXdata()
{
var res = Env.Editor.GetEntity("\n select the entity:");
if (res.Status != PromptStatus.OK) return;
-
+
using DBTrans tr = new();
var data = tr.GetObject(res.ObjectId)!;
data.ChangeXData(Appname, DxfCode.ExtendedDataAsciiString, "change");
@@ -128,5 +131,4 @@ public void Test_ChangeXdata()
return;
Env.Printl(data.XData.ToString());
}
-
}
\ No newline at end of file
diff --git a/tests/TestShared/TestXrefEx.cs b/tests/TestShared/TestXrefEx.cs
index 7fa7f3e8b7ae0542f611061f082e48ac44c44130..7cbdca5856653049f8403d96e0059aeb60bebb97 100644
--- a/tests/TestShared/TestXrefEx.cs
+++ b/tests/TestShared/TestXrefEx.cs
@@ -1,14 +1,14 @@
-namespace Test;
+namespace IFoxTest;
-public class TestCmd_BindXrefs
+public class TestCmdBindXrefs
{
//后台绑定
[CommandMethod(nameof(Test_Bind1))]
public static void Test_Bind1()
{
- string fileName = @"D:\Test.dwg";
+ const string fileName = @"D:\Test.dwg";
using var tr = new DBTrans(fileName,
- fileOpenMode: FileOpenMode.OpenForReadAndAllShare/*后台绑定特别注意*/);
+ fileOpenMode: FileOpenMode.OpenForReadAndAllShare /*后台绑定特别注意*/);
tr.XrefFactory(XrefModes.Bind);
tr.Database.SaveDwgFile();
}
diff --git a/tests/TestShared/Timer.cs b/tests/TestShared/Timer.cs
index 6bd03f1efb38e28c6da60571626f24edcdbafb56..0d346f468ebffaae28ad1c3a72315699cad9326e 100644
--- a/tests/TestShared/Timer.cs
+++ b/tests/TestShared/Timer.cs
@@ -1,6 +1,4 @@
-
-
-namespace Test;
+namespace IFoxTest;
/*
// 测试例子,同时验证两个计时器
@@ -15,51 +13,42 @@ namespace Test;
*/
///
-/// 时间定时类
+/// 时间定时类
///
public class Timer
{
///
- /// 时间单位枚举
+ /// 时间单位枚举
///
public enum TimeEnum
{
///
- /// 秒
+ /// 秒
///
Second,
+
///
- /// 毫秒
+ /// 毫秒
///
Millisecond,
+
///
- /// 微秒
+ /// 微秒
///
Microsecond,
+
///
- /// 纳秒
+ /// 纳秒
///
- Nanosecond,
+ Nanosecond
}
- [DllImport("Kernel32.dll")]
- private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
-
- ///
- /// 这个函数会检索性能计数器的频率.
- /// 性能计数器的频率在系统启动时是固定的,并且在所有处理器上都是一致的
- /// 因此,只需在应用初始化时查询频率,即可缓存结果
- /// 在运行 Windows XP 或更高版本的系统上,该函数将始终成功,因此永远不会返回零
- ///
- ///
- ///
- [DllImport("Kernel32.dll")]
- private static extern bool QueryPerformanceFrequency(out long lpFrequency);
+ private readonly long _freq;
private long _startTime, _stopTime;
- private readonly long _freq;
+
///
- /// 构造函数
+ /// 构造函数
///
///
public Timer()
@@ -71,8 +60,43 @@ public Timer()
throw new Win32Exception("不支持高性能计数器");
}
+ // 返回计时器经过时间
+ ///
+ /// 秒
+ ///
+ public double Second { get; private set; }
+
+ ///
+ /// 毫秒
+ ///
+ public double Millisecond => Second * 1000.0;
+
+ ///
+ /// 微秒
+ ///
+ public double Microsecond => Second * 1000000.0;
+
///
- /// 开始计时器
+ /// 纳秒
+ ///
+ public double Nanosecond => Second * 1000000000.0;
+
+ [DllImport("Kernel32.dll")]
+ private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
+
+ ///
+ /// 这个函数会检索性能计数器的频率.
+ /// 性能计数器的频率在系统启动时是固定的,并且在所有处理器上都是一致的
+ /// 因此,只需在应用初始化时查询频率,即可缓存结果
+ /// 在运行 Windows XP 或更高版本的系统上,该函数将始终成功,因此永远不会返回零
+ ///
+ ///
+ ///
+ [DllImport("Kernel32.dll")]
+ private static extern bool QueryPerformanceFrequency(out long lpFrequency);
+
+ ///
+ /// 开始计时器
///
public void Start()
{
@@ -81,7 +105,7 @@ public void Start()
}
///
- /// 停止计时器
+ /// 停止计时器
///
public void Stop()
{
@@ -89,26 +113,8 @@ public void Stop()
Second = (double)(_stopTime - _startTime) / _freq;
}
- // 返回计时器经过时间
- ///
- /// 秒
- ///
- public double Second { get; private set; }
-
- ///
- /// 毫秒
- ///
- public double Millisecond => Second * 1000.0;
- ///
- /// 微秒
- ///
- public double Microsecond => Second * 1000000.0;
- ///
- /// 纳秒
- ///
- public double Nanosecond => Second * 1000000000.0;
///
- /// 计算执行委托的时间
+ /// 计算执行委托的时间
///
/// 要执行的委托
/// 时间单位
diff --git a/tests/TestShared/Tools.cs b/tests/TestShared/Tools.cs
index 4a9eefa144f623f27836936913f7ae06894632bd..b1d73c3cd88cb98b40bffb85b9b74e2256fca3d8 100644
--- a/tests/TestShared/Tools.cs
+++ b/tests/TestShared/Tools.cs
@@ -1,14 +1,16 @@
-namespace Test;
+using System.Diagnostics;
+
+namespace IFoxTest;
public static class Tools
{
///
- /// 计时器
+ /// 计时器
///
- [System.Diagnostics.DebuggerStepThrough]
+ [DebuggerStepThrough]
public static void TestTimes2(int count, string message, Action action)
{
- System.Diagnostics.Stopwatch watch = new();
+ Stopwatch watch = new();
watch.Start(); // 开始监视代码运行时间
for (var i = 0; i < count; i++)
action.Invoke(); // 需要测试的代码
@@ -26,12 +28,12 @@ public static void TestTimes2(int count, string message, Action action)
}
///
- /// 计时器
+ /// 计时器
///
- [System.Diagnostics.DebuggerStepThrough]
+ [DebuggerStepThrough]
public static void TestTimes3(int count, string message, Action action)
{
- System.Diagnostics.Stopwatch watch = new();
+ Stopwatch watch = new();
watch.Start(); // 开始监视代码运行时间
for (var i = 0; i < count; i++)
action.Invoke(i); // 需要测试的代码
@@ -48,28 +50,34 @@ public static void TestTimes3(int count, string message, Action action)
$"{message} 代码执行 {count} 次的时间:{time} ({name})".Print(); // 总毫秒数
}
-
///
- /// 纳秒计时器
+ /// 纳秒计时器
///
- [System.Diagnostics.DebuggerStepThrough]
- public static void TestTimes(int count, string message, Action action,
- Timer.TimeEnum timeEnum = Timer.TimeEnum.Millisecond)
+ [DebuggerStepThrough]
+ public static void TestTimes(
+ int count,
+ string message,
+ Action action,
+ Timer.TimeEnum timeEnum = Timer.TimeEnum.Millisecond
+ )
{
- var time = Timer.RunTime(() =>
- {
- for (var i = 0; i < count; i++)
- action.Invoke();
- }, timeEnum);
+ var time = Timer.RunTime(
+ () =>
+ {
+ for (var i = 0; i < count; i++)
+ action.Invoke();
+ },
+ timeEnum
+ );
var timeNameZn = timeEnum switch
{
Timer.TimeEnum.Millisecond => " 毫秒",
Timer.TimeEnum.Microsecond => " 微秒",
Timer.TimeEnum.Nanosecond => " 纳秒",
- _ => " 秒"
+ _ => " 秒",
};
$"{message} 代码执行 {count} 次的时间:{time} ({timeNameZn})".Print();
}
-}
\ No newline at end of file
+}
diff --git a/tests/TestShared/readme.md b/tests/TestShared/readme.md
index 81b106fd2b210f7fc23c9a0297d73b54fc171b46..6c29a8bcb2147e6870dffb84c7c75d25799c1d83 100644
--- a/tests/TestShared/readme.md
+++ b/tests/TestShared/readme.md
@@ -1,13 +1,14 @@
# 测试项目文件结构
+
- 图元类 - TestEntity
- + TestAddEntity.cs
- + TestRemoveEntity.cs
- + ....
+ + TestAddEntity.cs
+ + TestRemoveEntity.cs
+ + ....
- 事务类 - TestDBtrans
- 符号表类 - TestSymTable
- + TestLayer.cs
- + TestTextStyle.cs
- + ...
+ + TestLayer.cs
+ + TestTextStyle.cs
+ + ...
- 选择集类
- 扩展数据类
- editor类