diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..013007b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "dotnet.preferCSharpExtension": true +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..31c32bd --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,24 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "shell", + "args": [ + "build", + // Ask dotnet build to generate full paths for file names. + "/property:GenerateFullPaths=true", + // Do not generate summary otherwise it leads to duplicate errors in Problems panel + "/consoleloggerparameters:NoSummary" + ], + "group": "build", + "presentation": { + "reveal": "silent" + }, + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/AutoCADCommands.sln b/AutoCADCommands.sln index 2c2576a..96a1c28 100755 --- a/AutoCADCommands.sln +++ b/AutoCADCommands.sln @@ -5,10 +5,6 @@ VisualStudioVersion = 15.0.28307.572 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoCADCommands", "AutoCADCommands\AutoCADCommands.csproj", "{C5F6C326-952B-43E8-9830-311F190BAB11}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoCADCommands.R18", "AutoCADCommands\AutoCADCommands.R18.csproj", "{EDA1D1A6-3204-4B82-8D5F-4F59815F072E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoCADCommands.R19", "AutoCADCommands\AutoCADCommands.R19.csproj", "{77B9F8FE-F75B-48C8-8249-6859E8D347E1}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/AutoCADCommands/Algorithms.cs b/AutoCADCommands/Algorithms.cs index 032bc4b..89a65ea 100755 --- a/AutoCADCommands/Algorithms.cs +++ b/AutoCADCommands/Algorithms.cs @@ -1388,13 +1388,30 @@ public static int PolyClean_ReducePoints(Polyline poly, double epsilon) public static void PolyClean_RemoveColinearPoints(Polyline poly) { var points = poly.GetPolyPoints().ToArray(); - var cleanList = new List(); - int j = 0; - for (int i = 1; i < points.Length; i++) + var cleanList = new List(); + cleanList.Add(points[0]); // Add the first point + + for (int i = 1; i < points.Length - 1; i++) { - // TODO: implement this. - throw new NotImplementedException(); + var prev = points[i - 1]; + var curr = points[i]; + var next = points[i + 1]; + + // Calculate the direction of the vectors prev-curr and curr-next + var dir1 = new Point2D(curr.X - prev.X, curr.Y - prev.Y); + var dir2 = new Point2D(next.X - curr.X, next.Y - curr.Y); + + // If the directions are not the same, add the point to the clean list + if (dir1.X * dir2.Y - dir1.Y * dir2.X != 0) + { + cleanList.Add(curr); + } } + + cleanList.Add(points[points.Length - 1]); // Add the last point + + // Replace the points in the polyline with the clean list + poly.SetPolyPoints(cleanList.ToArray()); } /// diff --git a/AutoCADCommands/AutoCADCommands.R18.csproj b/AutoCADCommands/AutoCADCommands.R18.csproj deleted file mode 100644 index ffdbfbf..0000000 --- a/AutoCADCommands/AutoCADCommands.R18.csproj +++ /dev/null @@ -1,129 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {EDA1D1A6-3204-4B82-8D5F-4F59815F072E} - Library - Properties - AutoCADCommands - AutoCADCommands - v3.5 - 512 - true - - - true - full - false - ..\bin\r18\ - TRACE;DEBUG;R18 - prompt - 4 - ..\bin\r18\AutoCADCommands.xml - false - AutoCADCommands.ruleset - true - - - pdbonly - true - ..\bin\Release\r18\ - TRACE;R18 - prompt - 4 - false - AutoCADCommands.ruleset - - - - ..\Reference\AutoCAD\r18\acdbmgd.dll - False - - - ..\Reference\AutoCAD\r18\acmgd.dll - False - - - ..\Reference\AutoCAD\r18\AdWindows.dll - False - - - - - - - - - - - - - - - - - - - - DictionaryViewer.xaml - - - - InputBox.xaml - - - TaskProgressWindow.xaml - - - - - - MultiInputs.xaml - - - - - - - TextReport.xaml - - - - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - - - - - - - \ No newline at end of file diff --git a/AutoCADCommands/AutoCADCommands.R19.csproj b/AutoCADCommands/AutoCADCommands.R19.csproj deleted file mode 100644 index 380c76b..0000000 --- a/AutoCADCommands/AutoCADCommands.R19.csproj +++ /dev/null @@ -1,133 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {77B9F8FE-F75B-48C8-8249-6859E8D347E1} - Library - Properties - AutoCADCommands - AutoCADCommands - v4.5 - 512 - true - - - true - full - false - ..\bin\r19\ - TRACE;DEBUG;R19 - prompt - 4 - ..\bin\r19\AutoCADCommands.xml - false - AutoCADCommands.ruleset - true - - - pdbonly - true - ..\bin\Release\r19\ - TRACE;R19 - prompt - 4 - false - AutoCADCommands.ruleset - - - - ..\Reference\AutoCAD\r19\accoremgd.dll - False - - - ..\Reference\AutoCAD\r19\acdbmgd.dll - False - - - ..\Reference\AutoCAD\r19\acmgd.dll - False - - - ..\Reference\AutoCAD\r19\AdWindows.dll - False - - - - - - - - - - - - - - - - - - - - - DictionaryViewer.xaml - - - - InputBox.xaml - - - TaskProgressWindow.xaml - - - - - - MultiInputs.xaml - - - - - - - TextReport.xaml - - - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - - - - - - - \ No newline at end of file diff --git a/AutoCADCommands/AutoCADCommands.csproj b/AutoCADCommands/AutoCADCommands.csproj index e2cd909..7fc8530 100755 --- a/AutoCADCommands/AutoCADCommands.csproj +++ b/AutoCADCommands/AutoCADCommands.csproj @@ -1,169 +1,45 @@ - - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {C5F6C326-952B-43E8-9830-311F190BAB11} - Library - Properties - AutoCADCommands - AutoCADCommands - v4.7.1 - 512 - true + net48 + true + true + disable - - true - full - false - ..\bin\r23\ - TRACE;DEBUG;R23 - prompt - 4 - ..\bin\r23\AutoCADCommands.xml - false - AutoCADCommands.ruleset - true - - - pdbonly - true - ..\bin\Release\r23\ - TRACE;R23 - prompt - 4 - false - AutoCADCommands.ruleset - - - - ..\packages\AutoCAD.NET.Core.23.0.0\lib\net47\AcCoreMgd.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcCui.dll - False - - - ..\packages\AutoCAD.NET.Model.23.0.0\lib\net47\AcDbMgd.dll - False - - - ..\packages\AutoCAD.NET.Model.23.0.0\lib\net47\acdbmgdbrep.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcDx.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcMgd.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcMr.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcSeamless.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcTcMgd.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AcWindows.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AdUIMgd.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AdUiPalettes.dll - False - - - ..\packages\AutoCAD.NET.23.0.0\lib\net47\AdWindows.dll - False - - - - - - - - - - - - - - - - - - - - - DictionaryViewer.xaml - - - - InputBox.xaml - - - TaskProgressWindow.xaml - - - - - - MultiInputs.xaml - - - - - - - TextReport.xaml - - - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - + + + false + + - - + + C:\Program Files\Autodesk\AutoCAD 2023\acdbmgd.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\acmgd.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\accoremgd.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\adWindows.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\acWindows.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\acTcmgd.dll + false + + + C:\Program Files\Autodesk\AutoCAD 2023\acCui.dll + false + - - + \ No newline at end of file diff --git a/AutoCADCommands/DbHelper.cs b/AutoCADCommands/DbHelper.cs index aa912c7..5ae17de 100755 --- a/AutoCADCommands/DbHelper.cs +++ b/AutoCADCommands/DbHelper.cs @@ -615,9 +615,10 @@ public static bool HasTag(this DBObject dbo, string tag) { var buffer = dbo.GetXDataForApplication(Consts.AppNameForTags); return buffer.AsArray().Any(typedValue => typedValue.TypeCode == (int)DxfCode.ExtendedDataAsciiString - && typedValue.Value == tag); + && (typedValue.Value as string) == tag); } + [Obsolete("Legacy data store mechanism. Use FlexDataStore instead.")] public static bool HasTag(this ObjectId id, string tag) { @@ -652,10 +653,11 @@ public static void RemoveTag(this DBObject dbo, string tag) { var buffer = dbo.GetXDataForApplication(Consts.AppNameForTags); var data = buffer.AsArray().Where(typedValue => typedValue.TypeCode == (int)DxfCode.ExtendedDataAsciiString - && typedValue.Value != tag).ToArray(); + && (string)typedValue.Value != tag).ToArray(); dbo.XData = new ResultBuffer(data); } + [Obsolete("Legacy data store mechanism. Use FlexDataStore instead.")] public static void RemoveTag(this ObjectId id, string tag) { diff --git a/AutoCADCommands/GUIs/DictionaryViewer.xaml.cs b/AutoCADCommands/GUIs/DictionaryViewer.xaml.cs index 9a735cf..92c1e37 100755 --- a/AutoCADCommands/GUIs/DictionaryViewer.xaml.cs +++ b/AutoCADCommands/GUIs/DictionaryViewer.xaml.cs @@ -11,6 +11,11 @@ using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using Autodesk.AutoCAD.Runtime; +using Autodesk.AutoCAD.ApplicationServices; +using Autodesk.AutoCAD.DatabaseServices; +using Autodesk.AutoCAD.EditorInput; + namespace Dreambuild.AutoCAD { @@ -43,49 +48,97 @@ public DictionaryViewer( _setValue = setValue; } + public IEnumerable SafeGetDictNames() + { + try + { + var ids = _getDictNames(); + if (ids != null && ids.All(id => id != ObjectId.Null.ToString())) + { + return ids; + } + else + { + MessageBox.Show("No valid dictionaries found.", "Error", MessageBoxButton.OK, MessageBoxImage.Warning); + return Enumerable.Empty(); + } + } + catch (System.Exception ex) + { + MessageBox.Show($"Failed to load dictionaries: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + return Enumerable.Empty(); + } + } + public void DictionaryViewer_Loaded(object sender, RoutedEventArgs e) { - _getDictNames().ForEach(name => this.DictionaryList.Items.Add(name)); - this.DictionaryList.SelectedIndex = 0; + try + { + SafeGetDictNames().ForEach(name => this.DictionaryList.Items.Add(name)); + this.DictionaryList.SelectedIndex = 0; + } + catch (System.Exception ex) + { + MessageBox.Show($"Error loading dictionaries: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } } + private void DictionaryList_SelectionChanged(object sender, SelectionChangedEventArgs e) { - this.EntryList.Items.Clear(); - string dict = this.DictionaryList.SelectedItem.ToString(); - _getEntryNames(dict) - .OrderBy(name => name) - .Select(name => new - { - Key = name, - Value = _getValue(dict, name) - }) - .ForEach(entry => this.EntryList.Items.Add(entry)); + try + { + this.EntryList.Items.Clear(); + string dict = this.DictionaryList.SelectedItem?.ToString(); + if (dict == null) return; + + _getEntryNames(dict) + .OrderBy(name => name) + .Select(name => new + { + Key = name, + Value = _getValue(dict, name) + }) + .ForEach(entry => this.EntryList.Items.Add(entry)); + } + catch (System.Exception ex) + { + MessageBox.Show($"Error loading entries: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } } + private void EntryList_MouseDoubleClick(object sender, MouseButtonEventArgs e) { - if (this.DictionaryList.SelectedIndex == -1 || this.EntryList.SelectedIndex == -1) + try { - return; - } + if (this.DictionaryList.SelectedIndex == -1 || this.EntryList.SelectedIndex == -1) + { + return; + } - string dict = this.DictionaryList.SelectedItem.ToString(); - string key = _getEntryNames(dict).OrderBy(name => name).ToList()[this.EntryList.SelectedIndex]; - string oldValue = _getValue(dict, key); + string dict = this.DictionaryList.SelectedItem.ToString(); + string key = _getEntryNames(dict).OrderBy(name => name).ToList()[this.EntryList.SelectedIndex]; + string oldValue = _getValue(dict, key); - var inputBox = new InputBox(oldValue) - { - Owner = this - }; + var inputBox = new InputBox(oldValue) + { + Owner = this + }; + + if (inputBox.ShowDialog() == true) + { + _setValue(dict, key, inputBox.Value); + } - if (inputBox.ShowDialog() == true) + // Update ListView + this.DictionaryList_SelectionChanged(null, null); + } + catch (System.Exception ex) { - _setValue(dict, key, inputBox.Value); + MessageBox.Show($"Error processing entry: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } - - // Update ListView - this.DictionaryList_SelectionChanged(null, null); } + } } diff --git a/AutoCADCommands/Interaction.cs b/AutoCADCommands/Interaction.cs index 2ac02e0..12c5efa 100755 --- a/AutoCADCommands/Interaction.cs +++ b/AutoCADCommands/Interaction.cs @@ -1044,6 +1044,11 @@ public static PromptResult StartDrag(string message, Func updateAction((PromptPointResult)result)); return ed.Drag(jig); } + + internal static bool GetYesNo(string v) + { + throw new NotImplementedException(); + } } internal class LineJig : EntityJig diff --git a/AutoCADCommands/Internal/CustomDictionary.cs b/AutoCADCommands/Internal/CustomDictionary.cs index d33a751..3c73c92 100644 --- a/AutoCADCommands/Internal/CustomDictionary.cs +++ b/AutoCADCommands/Internal/CustomDictionary.cs @@ -229,14 +229,27 @@ public static IEnumerable GetDictionaryNames(ObjectId id) using (var trans = id.Database.TransactionManager.StartTransaction()) { var dbo = trans.GetObject(id, OpenMode.ForRead); + // 확장 딕셔너리가 없다면 새로 생성 + if (dbo.ExtensionDictionary == ObjectId.Null) + { + dbo.UpgradeOpen(); + dbo.CreateExtensionDictionary(); + trans.Commit(); + yield break; // 새로 생성된 딕셔너리는 비어 있으므로 바로 반환 + } + var dictRoot = trans.GetObject(dbo.ExtensionDictionary, OpenMode.ForRead) as DBDictionary; - foreach (var entry in dictRoot) + if (dictRoot != null) { - yield return entry.Key; + foreach (var entry in dictRoot) + { + yield return entry.Key; + } } } } + /// /// Gets all keys from a dictionary. /// @@ -273,5 +286,38 @@ private static ObjectId GetDictionaryId(ObjectId id, string dictionaryName) } } } + + public static void AddDictionaryData(ObjectId id, string dictionaryName, string key, string value) + { + using (var doclock = Application.DocumentManager.MdiActiveDocument.LockDocument()) + { + using (var trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()) + { + var nod = trans.GetObject(HostApplicationServices.WorkingDatabase.NamedObjectsDictionaryId, OpenMode.ForRead) as DBDictionary; + if (!nod.Contains(dictionaryName)) + { + nod.UpgradeOpen(); + var newDict = new DBDictionary(); + nod.SetAt(dictionaryName, newDict); + trans.AddNewlyCreatedDBObject(newDict, true); + } + + var dict = trans.GetObject(nod.GetAt(dictionaryName), OpenMode.ForWrite) as DBDictionary; + var entry = new Xrecord + { + Data = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataAsciiString, value)) + }; + if (dict.Contains(key)) + { + dict.Remove(key); + } + dict.SetAt(key, entry); + trans.AddNewlyCreatedDBObject(entry, true); + + trans.Commit(); + } + } + } + } } diff --git a/AutoCADCommands/Test.cs b/AutoCADCommands/Test.cs index 669e6d8..6ff8fc7 100755 --- a/AutoCADCommands/Test.cs +++ b/AutoCADCommands/Test.cs @@ -1,10 +1,10 @@ -using Autodesk.AutoCAD.ApplicationServices; +using System; +using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using Dreambuild.AutoCAD.Internal; -using System; using System.Collections.Generic; using System.Linq; @@ -38,20 +38,86 @@ public static void ViewGlobalDict() [CommandMethod("ViewObjectDict")] public static void ViewObjectDict() { - var id = Interaction.GetEntity("\nSelect entity"); - if (id == ObjectId.Null) + Document doc = Application.DocumentManager.MdiActiveDocument; + Database db = doc.Database; + Editor ed = doc.Editor; + + // 사용자로부터 엔티티 선택 요청 + PromptEntityResult ers = ed.GetEntity("\nSelect entity"); + if (ers.Status != PromptStatus.OK) { + Interaction.WriteLine("No entity selected."); return; } - var dv = new DictionaryViewer( // Currying - () => CustomObjectDictionary.GetDictionaryNames(id), - dict => CustomObjectDictionary.GetEntryNames(id, dict), - (dict, key) => CustomObjectDictionary.GetValue(id, dict, key), - (dict, key, value) => CustomObjectDictionary.SetValue(id, dict, key, value) - ); - Application.ShowModalWindow(dv); + + ObjectId id = ers.ObjectId; + + // 디버깅을 위해 선택된 엔티티의 정보 출력 + Interaction.WriteLine($"Selected entity ID: {id}"); + + IEnumerable dictNames = new List(); + using (Transaction tr = db.TransactionManager.StartTransaction()) + { + DBObject dbObj = tr.GetObject(id, OpenMode.ForRead); + ObjectId extId = dbObj.ExtensionDictionary; + + // 엔티티에 확장 딕셔너리가 없는 경우 새로 생성 + if (extId == ObjectId.Null) + { + dbObj.UpgradeOpen(); + dbObj.CreateExtensionDictionary(); + extId = dbObj.ExtensionDictionary; + + // 확장 딕셔너리에 새 딕셔너리 항목 추가 + DBDictionary dbExt = (DBDictionary)tr.GetObject(extId, OpenMode.ForWrite); + Xrecord xRec = new Xrecord(); + ResultBuffer rb = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataAsciiString, "Newly Added Data")); + xRec.Data = rb; + + dbExt.SetAt("NewDictionary", xRec); + tr.AddNewlyCreatedDBObject(xRec, true); + + dictNames = new List { "NewDictionary" }; + Interaction.WriteLine("A new dictionary has been added."); + } + else + { + // 기존 딕셔너리 이름을 가져옴 + DBDictionary dbExt = (DBDictionary)tr.GetObject(extId, OpenMode.ForRead); + dictNames = dbExt.Cast().Select(e => e.Key); + if (!dictNames.Any()) + { + Interaction.WriteLine("No dictionaries found for the selected entity."); + } + else + { + Interaction.WriteLine("Dictionaries found:"); + foreach (var name in dictNames) + { + Interaction.WriteLine(name); + } + } + } + tr.Commit(); + } + + if (dictNames.Any()) + { + // 딕셔너리 뷰어로 화면 표시 + var dv = new DictionaryViewer( + () => dictNames, + dict => CustomObjectDictionary.GetEntryNames(id, dict), + (dict, key) => CustomObjectDictionary.GetValue(id, dict, key), + (dict, key, value) => CustomObjectDictionary.SetValue(id, dict, key, value) + ); + + Application.ShowModalWindow(dv); + } } + + + /// /// Eliminates zero-length polylines. /// @@ -776,7 +842,7 @@ public void TestJigDrag() [CommandMethod("TestQOpen")] public void TestQOpen() { - var ids = QuickSelection.SelectAll("LWPOLYLINE").QWhere(pline => pline.GetCode() == "parcel").ToArray(); + var ids = QuickSelection.SelectAll("LWPOLYLINE").QWhere(pline => pline.Database.FlexDataStore().GetCode() == "parcel").ToArray(); ids.QForEach(poly => { poly.ConstantWidth = 2; diff --git a/AutoCADCommands/lib/AcCui.dll b/AutoCADCommands/lib/AcCui.dll new file mode 100644 index 0000000..8778293 Binary files /dev/null and b/AutoCADCommands/lib/AcCui.dll differ diff --git a/AutoCADCommands/lib/AcDx.dll b/AutoCADCommands/lib/AcDx.dll new file mode 100644 index 0000000..f1d3e99 Binary files /dev/null and b/AutoCADCommands/lib/AcDx.dll differ diff --git a/AutoCADCommands/lib/AcMr.DLL b/AutoCADCommands/lib/AcMr.DLL new file mode 100644 index 0000000..e3233c5 Binary files /dev/null and b/AutoCADCommands/lib/AcMr.DLL differ diff --git a/AutoCADCommands/lib/AcSeamless.dll b/AutoCADCommands/lib/AcSeamless.dll new file mode 100644 index 0000000..46c3586 Binary files /dev/null and b/AutoCADCommands/lib/AcSeamless.dll differ diff --git a/AutoCADCommands/lib/AcTcMgd.dll b/AutoCADCommands/lib/AcTcMgd.dll new file mode 100644 index 0000000..72ca64d Binary files /dev/null and b/AutoCADCommands/lib/AcTcMgd.dll differ diff --git a/AutoCADCommands/lib/AcWindows.dll b/AutoCADCommands/lib/AcWindows.dll new file mode 100644 index 0000000..f46206c Binary files /dev/null and b/AutoCADCommands/lib/AcWindows.dll differ diff --git a/AutoCADCommands/lib/AdUIMgd.dll b/AutoCADCommands/lib/AdUIMgd.dll new file mode 100644 index 0000000..aada2e5 Binary files /dev/null and b/AutoCADCommands/lib/AdUIMgd.dll differ diff --git a/AutoCADCommands/lib/AdUiPalettes.dll b/AutoCADCommands/lib/AdUiPalettes.dll new file mode 100644 index 0000000..000e013 Binary files /dev/null and b/AutoCADCommands/lib/AdUiPalettes.dll differ diff --git a/AutoCADCommands/lib/AdWindows.dll b/AutoCADCommands/lib/AdWindows.dll new file mode 100644 index 0000000..95b66d6 Binary files /dev/null and b/AutoCADCommands/lib/AdWindows.dll differ diff --git a/AutoCADCommands/lib/accoremgd.dll b/AutoCADCommands/lib/accoremgd.dll new file mode 100644 index 0000000..7a41991 Binary files /dev/null and b/AutoCADCommands/lib/accoremgd.dll differ diff --git a/AutoCADCommands/lib/acdbmgd.dll b/AutoCADCommands/lib/acdbmgd.dll new file mode 100644 index 0000000..f2db6e2 Binary files /dev/null and b/AutoCADCommands/lib/acdbmgd.dll differ diff --git a/AutoCADCommands/lib/acdbmgdbrep.dll b/AutoCADCommands/lib/acdbmgdbrep.dll new file mode 100644 index 0000000..aaf6c8c Binary files /dev/null and b/AutoCADCommands/lib/acdbmgdbrep.dll differ diff --git a/AutoCADCommands/lib/acmgd.dll b/AutoCADCommands/lib/acmgd.dll new file mode 100644 index 0000000..30b98e9 Binary files /dev/null and b/AutoCADCommands/lib/acmgd.dll differ diff --git a/Reference/AutoCAD/r23/AcCui.dll b/Reference/AutoCAD/r23/AcCui.dll new file mode 100644 index 0000000..901ad9b Binary files /dev/null and b/Reference/AutoCAD/r23/AcCui.dll differ diff --git a/Reference/AutoCAD/r23/AcTcMgd.dll b/Reference/AutoCAD/r23/AcTcMgd.dll new file mode 100644 index 0000000..00a1c7d Binary files /dev/null and b/Reference/AutoCAD/r23/AcTcMgd.dll differ diff --git a/Reference/AutoCAD/r23/AcWindows.dll b/Reference/AutoCAD/r23/AcWindows.dll new file mode 100644 index 0000000..4df56a3 Binary files /dev/null and b/Reference/AutoCAD/r23/AcWindows.dll differ diff --git a/Reference/AutoCAD/r23/AdWindows.dll b/Reference/AutoCAD/r23/AdWindows.dll new file mode 100644 index 0000000..95b66d6 Binary files /dev/null and b/Reference/AutoCAD/r23/AdWindows.dll differ diff --git a/Reference/AutoCAD/r23/accoremgd.dll b/Reference/AutoCAD/r23/accoremgd.dll new file mode 100644 index 0000000..a78bddb Binary files /dev/null and b/Reference/AutoCAD/r23/accoremgd.dll differ diff --git a/Reference/AutoCAD/r23/acdbmgd.dll b/Reference/AutoCAD/r23/acdbmgd.dll new file mode 100644 index 0000000..ffab00f Binary files /dev/null and b/Reference/AutoCAD/r23/acdbmgd.dll differ diff --git a/Reference/AutoCAD/r23/acmgd.dll b/Reference/AutoCAD/r23/acmgd.dll new file mode 100644 index 0000000..134c5e3 Binary files /dev/null and b/Reference/AutoCAD/r23/acmgd.dll differ