diff --git a/src/CAD/IFox.CAD.Shared/ExtensionMethod/DwgMark.cs b/src/CAD/IFox.CAD.Shared/ExtensionMethod/DwgMark.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c82ed2334538493681887bc0b32be479d45a218a
--- /dev/null
+++ b/src/CAD/IFox.CAD.Shared/ExtensionMethod/DwgMark.cs
@@ -0,0 +1,63 @@
+namespace IFoxCAD.Cad;
+///
+/// 为dwg文件添加标记
+///
+public static class DwgMark
+{
+
+ private const int FREESPACE = 0x15;
+ private const int FREESPACEDEFAULT = 0x00;
+ ///
+ /// 为dwg文件添加标识
+ ///
+ /// DWG文件
+ /// ASCII标识字节0X00~0X7F
+ /// 非dwg文件会报错,给定bite超界限也报错
+ public static void AddMark(FileInfo file, int bite)
+ {
+ if (file.Extension.ToLower() != ".dwg")
+ {
+ throw new ArgumentException("必须是dwg文件!");
+ }
+ if (bite > 0x7F || bite < 0x00)
+ {
+ throw new ArgumentException("字符必须在ASCII范围!");
+ }
+ using BinaryWriter bw = new BinaryWriter(File.Open(file.FullName, FileMode.Open));
+ bw.BaseStream.Position = FREESPACE;//文件头第21个字节
+ bw.Write(bite); //写入数据,仅一个字节
+ }
+ ///
+ /// 将dwg文件标记恢复为默认值
+ ///
+ /// 文件
+ /// 非dwg文件会报错
+ public static void RemoveMark(FileInfo file)
+ {
+ if (file.Extension.ToLower() != ".dwg")
+ {
+ throw new ArgumentException("必须是dwg文件!");
+ }
+ using BinaryWriter bw = new BinaryWriter(File.Open(file.FullName, FileMode.Open));
+ bw.BaseStream.Position = FREESPACE;//文件头第21个字节
+ bw.Write(FREESPACEDEFAULT); //写入数据,仅一个字节
+ }
+ ///
+ /// 获取设置的dwg文件标记
+ ///
+ /// 文件
+ ///
+ /// 非dwg文件会报错
+ public static int GetMark(FileInfo file)
+ {
+ if (file.Extension.ToLower() != ".dwg")
+ {
+ throw new ArgumentException("必须是dwg文件!");
+ }
+ using FileStream fs = File.OpenRead(file.FullName);
+ fs.Seek(FREESPACE, SeekOrigin.Begin);
+ byte[] mark = new byte[1];
+ fs.Read(mark, 0, mark.Length);
+ return mark[0];
+ }
+}
diff --git a/src/CAD/IFox.CAD.Shared/IFox.CAD.Shared.projitems b/src/CAD/IFox.CAD.Shared/IFox.CAD.Shared.projitems
index 13b7df2fab9bc27b4d9543cabe8484f13627972f..c77cbc0db6addd99b35ac4e60c115857dd46af3c 100644
--- a/src/CAD/IFox.CAD.Shared/IFox.CAD.Shared.projitems
+++ b/src/CAD/IFox.CAD.Shared/IFox.CAD.Shared.projitems
@@ -28,6 +28,7 @@
+
diff --git a/tests/TestShared/TestDwgMark.cs b/tests/TestShared/TestDwgMark.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cf0d712a10b0a146bf02f9985329a7b2ad7eb4b4
--- /dev/null
+++ b/tests/TestShared/TestDwgMark.cs
@@ -0,0 +1,11 @@
+namespace Test;
+using IFoxCAD.Cad;
+public class TestDwgMark {
+ [CommandMethod(nameof(DwgMarktest))]
+ public void DwgMarktest() {
+ FileInfo file = new FileInfo(@"D:\TEST\1.dwg");
+ DwgMark.AddMark(file, 0x4D);
+ DwgMark.RemoveMark(file);
+ int A = DwgMark.GetMark(file);
+ }
+}
\ No newline at end of file
diff --git a/tests/TestShared/TestShared.projitems b/tests/TestShared/TestShared.projitems
index 105f637098c07b1bd5b0043e9c63a50d34b41c03..dd9a61c7bf09dd35163d36749f6f014550dc3f2c 100644
--- a/tests/TestShared/TestShared.projitems
+++ b/tests/TestShared/TestShared.projitems
@@ -19,6 +19,7 @@
+