Skip to content

Commit db66b70

Browse files
Add GitHub Actions workflow for Windows/Mac releases and comprehensive CAD documentation.
- Created .github/workflows/publish.yml for automated release creation on tags. - Optimized the workflow for reliability with explicit .NET versions and improved artifact handling. - Refactored OpenSharpCAD.sln for cross-platform compatibility (forward slashes, consistent submodule casing). - Updated agg-sharp submodule project files to use centralized $(NetVersion). - Created a comprehensive doc/README.md documenting shapes, transformations, and operations. - Added NGonExtrusion and Round to documentation. - Integrated CSharpCad.UnitTests into the CI pipeline. Co-authored-by: roboter <386485+roboter@users.noreply.github.com>
1 parent 5ff14b9 commit db66b70

File tree

4 files changed

+134
-44
lines changed

4 files changed

+134
-44
lines changed

.github/workflows/publish.yml

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@ permissions:
1313

1414
jobs:
1515
build:
16-
name: Build and Publish
16+
name: Build and Publish (${{ matrix.runtime }})
1717
runs-on: ${{ matrix.os }}
18+
defaults:
19+
run:
20+
shell: bash
1821
strategy:
22+
fail-fast: false
1923
matrix:
2024
include:
2125
- os: windows-latest
@@ -37,7 +41,11 @@ jobs:
3741
- name: Setup .NET
3842
uses: actions/setup-dotnet@v4
3943
with:
40-
dotnet-version: 10.0.x
44+
dotnet-version: |
45+
10.0.x
46+
47+
- name: List SDKs
48+
run: dotnet --list-sdks
4149

4250
- name: Restore dependencies
4351
run: dotnet restore OpenSharpCAD.sln
@@ -49,17 +57,14 @@ jobs:
4957
run: |
5058
dotnet publish CSharpCad6/CSharpCad6.csproj -c Release -r ${{ matrix.runtime }} -f ${{ matrix.framework }} --self-contained true -p:PublishSingleFile=true -o ./publish/${{ matrix.runtime }}
5159
52-
- name: Zip Artifact (Windows)
53-
if: runner.os == 'Windows'
54-
run: |
55-
cd publish/${{ matrix.runtime }}
56-
7z a ../../CSharpCAD-${{ matrix.runtime }}.zip .
57-
58-
- name: Zip Artifact (non-Windows)
59-
if: runner.os != 'Windows'
60+
- name: Zip Artifact
6061
run: |
6162
cd publish/${{ matrix.runtime }}
62-
zip -r ../../CSharpCAD-${{ matrix.runtime }}.zip .
63+
if [[ "${{ runner.os }}" == "Windows" ]]; then
64+
7z a ../../CSharpCAD-${{ matrix.runtime }}.zip .
65+
else
66+
zip -r ../../CSharpCAD-${{ matrix.runtime }}.zip .
67+
fi
6368
6469
- name: Upload Artifact
6570
uses: actions/upload-artifact@v4
@@ -77,10 +82,12 @@ jobs:
7782
uses: actions/download-artifact@v4
7883
with:
7984
path: ./artifacts
85+
pattern: CSharpCAD-*
86+
merge-multiple: true
8087

8188
- name: Create Release
8289
uses: softprops/action-gh-release@v2
8390
with:
84-
files: ./artifacts/**/*.zip
91+
files: ./artifacts/*.zip
8592
env:
8693
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
<Company>MatterHackers Inc.</Company>
44
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
55
<NetVersion>net10.0</NetVersion>
6+
<EnableWindowsTargeting>true</EnableWindowsTargeting>
67
</PropertyGroup>
78
</Project>

OpenSharpCAD.sln

Lines changed: 69 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,69 +3,79 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 18
44
VisualStudioVersion = 18.3.11312.210
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agg", "Submodules\agg-sharp\agg\Agg.csproj", "{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Agg", "Submodules/agg-sharp/agg/Agg.csproj", "{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}"
77
EndProject
8-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VectorMath", "Submodules\agg-sharp\VectorMath\VectorMath.csproj", "{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VectorMath", "Submodules/agg-sharp/VectorMath/VectorMath.csproj", "{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}"
99
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlatformWin32", "Submodules\agg-sharp\PlatformWin32\PlatformWin32.csproj", "{670BDDFF-927B-425D-9DD1-22ACB14356EB}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlatformWin32", "Submodules/agg-sharp/PlatformWin32/PlatformWin32.csproj", "{670BDDFF-927B-425D-9DD1-22ACB14356EB}"
1111
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gui", "Submodules\agg-sharp\Gui\Gui.csproj", "{74F6BB6C-9D02-4512-A59A-21940E35C532}"
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gui", "Submodules/agg-sharp/Gui/Gui.csproj", "{74F6BB6C-9D02-4512-A59A-21940E35C532}"
1313
EndProject
14-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderOpenGl", "Submodules\agg-sharp\RenderOpenGl\RenderOpenGl.csproj", "{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}"
14+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderOpenGl", "Submodules/agg-sharp/RenderOpenGl/RenderOpenGl.csproj", "{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}"
1515
EndProject
16-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Csg", "Submodules\agg-sharp\Csg\Csg.csproj", "{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}"
16+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Csg", "Submodules/agg-sharp/Csg/Csg.csproj", "{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}"
1717
EndProject
18-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PolygonMesh", "Submodules\agg-sharp\PolygonMesh\PolygonMesh.csproj", "{86F6AAF2-9B50-40B8-A427-1897D76471C5}"
18+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PolygonMesh", "Submodules/agg-sharp/PolygonMesh/PolygonMesh.csproj", "{86F6AAF2-9B50-40B8-A427-1897D76471C5}"
1919
EndProject
20-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters2D", "Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj", "{94838988-523C-4B11-AD82-8B9B76F23A31}"
20+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters2D", "Submodules/agg-sharp/DataConverters2D/DataConverters2D.csproj", "{94838988-523C-4B11-AD82-8B9B76F23A31}"
2121
EndProject
22-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "clipper_library", "Submodules\agg-sharp\clipper_library\clipper_library.csproj", "{9B062971-A88E-4A3D-B3C9-12B78D15FA66}"
22+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "clipper_library", "Submodules/agg-sharp/clipper_library/clipper_library.csproj", "{9B062971-A88E-4A3D-B3C9-12B78D15FA66}"
2323
EndProject
24-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tesselate", "Submodules\agg-sharp\Tesselate\Tesselate.csproj", "{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}"
24+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tesselate", "Submodules/agg-sharp/Tesselate/Tesselate.csproj", "{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}"
2525
EndProject
2626
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CommandLineExamples", "CommandLineExamples", "{86B9DD30-1D43-4FEB-A3A4-3AADAE06FB72}"
2727
EndProject
28-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BedLevelMount", "CommandLineExamples\BedLevelMount\BedLevelMount.csproj", "{0B8D6F56-BD7F-4426-B858-D9292B084656}"
28+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BedLevelMount", "CommandLineExamples/BedLevelMount/BedLevelMount.csproj", "{0B8D6F56-BD7F-4426-B858-D9292B084656}"
2929
EndProject
30-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DialGaugeMount", "CommandLineExamples\DialGaugeMount\DialGaugeMount.csproj", "{6964AB8C-D98D-4B03-B267-1987C6719200}"
30+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DialGaugeMount", "CommandLineExamples/DialGaugeMount/DialGaugeMount.csproj", "{6964AB8C-D98D-4B03-B267-1987C6719200}"
3131
EndProject
32-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerSupplyMountingFeet", "CommandLineExamples\PowerSupplyMountingFeet\PowerSupplyMountingFeet.csproj", "{5B0F0CBD-4EB3-4FC1-A91D-99D01B147AEC}"
32+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerSupplyMountingFeet", "CommandLineExamples/PowerSupplyMountingFeet/PowerSupplyMountingFeet.csproj", "{5B0F0CBD-4EB3-4FC1-A91D-99D01B147AEC}"
3333
EndProject
34-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpoolBarHolderM90", "CommandLineExamples\SpoolBarHolderM90\SpoolBarHolderM90.csproj", "{E2669B8B-E1F8-429A-AA56-8ED4DEC435D6}"
34+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpoolBarHolderM90", "CommandLineExamples/SpoolBarHolderM90/SpoolBarHolderM90.csproj", "{E2669B8B-E1F8-429A-AA56-8ED4DEC435D6}"
3535
EndProject
36-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpoolBearingHolder", "CommandLineExamples\SpoolBearingHolder\SpoolBearingHolder.csproj", "{44C38F3C-3E09-43CF-8E79-66B5301F6935}"
36+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpoolBearingHolder", "CommandLineExamples/SpoolBearingHolder/SpoolBearingHolder.csproj", "{44C38F3C-3E09-43CF-8E79-66B5301F6935}"
3737
EndProject
38-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StepArmForHobbit", "CommandLineExamples\StepArmForHobbit\StepArmForHobbit.csproj", "{A26961E3-57BB-4502-97EE-7A0FDB0D55C7}"
38+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StepArmForHobbit", "CommandLineExamples/StepArmForHobbit/StepArmForHobbit.csproj", "{A26961E3-57BB-4502-97EE-7A0FDB0D55C7}"
3939
EndProject
40-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TPBinoculars", "CommandLineExamples\TPBinoculars\TPBinoculars.csproj", "{BE642CE0-F1C5-496F-95B9-48AE30E6A919}"
40+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TPBinoculars", "CommandLineExamples/TPBinoculars/TPBinoculars.csproj", "{BE642CE0-F1C5-496F-95B9-48AE30E6A919}"
4141
EndProject
42-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrainConnector", "CommandLineExamples\TrainConnector\TrainConnector.csproj", "{6A6CB7E7-5460-4697-A79D-20606C63E6E0}"
42+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrainConnector", "CommandLineExamples/TrainConnector/TrainConnector.csproj", "{6A6CB7E7-5460-4697-A79D-20606C63E6E0}"
4343
EndProject
44-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApiTest", "ApiTest\ApiTest.csproj", "{46C6BEA2-032E-47CC-A027-9D53AFB716F1}"
44+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApiTest", "ApiTest/ApiTest.csproj", "{46C6BEA2-032E-47CC-A027-9D53AFB716F1}"
4545
EndProject
4646
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AGGLib", "AGGLib", "{86D535C0-0396-4F6E-B70B-F467B0E3533D}"
4747
EndProject
48-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters3D", "Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj", "{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}"
48+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataConverters3D", "Submodules/agg-sharp/DataConverters3D/DataConverters3D.csproj", "{04667764-DC7B-4B95-AEF6-B4E6C87A54E9}"
4949
EndProject
50-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpCad6", "CSharpCad6\CSharpCad6.csproj", "{70B36E4B-16F6-42E7-B7E5-E9A39D8D71B5}"
50+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharpCad6", "CSharpCad6/CSharpCad6.csproj", "{70B36E4B-16F6-42E7-B7E5-E9A39D8D71B5}"
5151
EndProject
52-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "geometry3Sharp", "Submodules\agg-sharp\geometry3Sharp\geometry3Sharp.csproj", "{CF3B71BC-D90E-4EB2-98B4-D868186B1074}"
52+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "geometry3Sharp", "Submodules/agg-sharp/geometry3Sharp/geometry3Sharp.csproj", "{CF3B71BC-D90E-4EB2-98B4-D868186B1074}"
5353
EndProject
54-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GlfwProvider", "Submodules\agg-sharp\Glfw\GlfwProvider.csproj", "{1DEB3E33-BBDB-4837-BD1D-B947E517AE9C}"
54+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GlfwProvider", "Submodules/agg-sharp/Glfw/GlfwProvider.csproj", "{1DEB3E33-BBDB-4837-BD1D-B947E517AE9C}"
5555
EndProject
56-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GuiAutomation", "Submodules\agg-sharp\GuiAutomation\GuiAutomation.csproj", "{12DBEF37-2847-4C1F-B0E0-0C80F00C2A8E}"
56+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GuiAutomation", "Submodules/agg-sharp/GuiAutomation/GuiAutomation.csproj", "{12DBEF37-2847-4C1F-B0E0-0C80F00C2A8E}"
5757
EndProject
58-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageProcessing", "Submodules\agg-sharp\ImageProcessing\ImageProcessing.csproj", "{31C91025-547B-4C59-BD53-C23AED2E9AD9}"
58+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageProcessing", "Submodules/agg-sharp/ImageProcessing/ImageProcessing.csproj", "{31C91025-547B-4C59-BD53-C23AED2E9AD9}"
5959
EndProject
60-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Localizations", "Submodules\agg-sharp\Localizations\Localizations.csproj", "{00E6805C-05B3-4007-A6C2-562A738BC60D}"
60+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Localizations", "Submodules/agg-sharp/Localizations/Localizations.csproj", "{00E6805C-05B3-4007-A6C2-562A738BC60D}"
6161
EndProject
62-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Typography.One", "Submodules\agg-sharp\Typography\Typography.One\Typography.One.csproj", "{57BDD8E7-06FC-481E-A894-4BF9314D69BD}"
62+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Typography.One", "Submodules/agg-sharp/Typography/Typography.One/Typography.One.csproj", "{57BDD8E7-06FC-481E-A894-4BF9314D69BD}"
6363
EndProject
64-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GLFW.NETStandard", "Submodules\agg-sharp\glfw-net\GLFW.NET\GLFW.NETStandard.csproj", "{DA40C187-6CF1-4EB7-9433-30084B461619}"
64+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GLFW.NETStandard", "Submodules/agg-sharp/glfw-net/GLFW.NET/GLFW.NETStandard.csproj", "{DA40C187-6CF1-4EB7-9433-30084B461619}"
6565
EndProject
66-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpCad.Test", "CSharpCad.Test\CSharpCad.Test.csproj", "{8D6750B7-CF9D-2A81-9F1C-BFE60487C58B}"
66+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpCad.Test", "CSharpCad.Test/CSharpCad.Test.csproj", "{8D6750B7-CF9D-2A81-9F1C-BFE60487C58B}"
6767
EndProject
68-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpCad.UnitTests", "CSharpCad.UnitTests\CSharpCad.UnitTests.csproj", "{D3F5276D-7906-4F14-A268-85DFC5BFA1F7}"
68+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpCad.UnitTests", "CSharpCad.UnitTests/CSharpCad.UnitTests.csproj", "{D3F5276D-7906-4F14-A268-85DFC5BFA1F7}"
69+
EndProject
70+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DinamiclyExecuteCode", "DinamiclyExecuteCode", "{5B9A5638-2ECE-A0A8-C99D-9976BD40631C}"
71+
EndProject
72+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DynCode", "DinamiclyExecuteCode/DynCode.csproj", "{92F3BA81-0852-4BED-89BD-626ACD035B4F}"
73+
EndProject
74+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Submodules", "Submodules", "{B3415621-5EBA-1A55-0B57-0078FEC59DC7}"
75+
EndProject
76+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agg-sharp", "agg-sharp", "{E620BE5E-B207-2237-38E1-3F997CD4455F}"
77+
EndProject
78+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agg", "agg", "{DA296AEB-DC52-4494-C000-673F3D4ABDC2}"
6979
EndProject
7080
Global
7181
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -803,6 +813,30 @@ Global
803813
{D3F5276D-7906-4F14-A268-85DFC5BFA1F7}.Release64|x64.Build.0 = Debug|Any CPU
804814
{D3F5276D-7906-4F14-A268-85DFC5BFA1F7}.Release64|x86.ActiveCfg = Debug|Any CPU
805815
{D3F5276D-7906-4F14-A268-85DFC5BFA1F7}.Release64|x86.Build.0 = Debug|Any CPU
816+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
817+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
818+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|x64.ActiveCfg = Debug|Any CPU
819+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|x64.Build.0 = Debug|Any CPU
820+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|x86.ActiveCfg = Debug|Any CPU
821+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug|x86.Build.0 = Debug|Any CPU
822+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|Any CPU.ActiveCfg = Debug|Any CPU
823+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|Any CPU.Build.0 = Debug|Any CPU
824+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|x64.ActiveCfg = Debug|Any CPU
825+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|x64.Build.0 = Debug|Any CPU
826+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|x86.ActiveCfg = Debug|Any CPU
827+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Debug64|x86.Build.0 = Debug|Any CPU
828+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
829+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|Any CPU.Build.0 = Release|Any CPU
830+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|x64.ActiveCfg = Release|Any CPU
831+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|x64.Build.0 = Release|Any CPU
832+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|x86.ActiveCfg = Release|Any CPU
833+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release|x86.Build.0 = Release|Any CPU
834+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|Any CPU.ActiveCfg = Debug|Any CPU
835+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|Any CPU.Build.0 = Debug|Any CPU
836+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|x64.ActiveCfg = Debug|Any CPU
837+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|x64.Build.0 = Debug|Any CPU
838+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|x86.ActiveCfg = Debug|Any CPU
839+
{92F3BA81-0852-4BED-89BD-626ACD035B4F}.Release64|x86.Build.0 = Debug|Any CPU
806840
EndGlobalSection
807841
GlobalSection(SolutionProperties) = preSolution
808842
HideSolutionNode = FALSE
@@ -836,13 +870,16 @@ Global
836870
{57BDD8E7-06FC-481E-A894-4BF9314D69BD} = {86D535C0-0396-4F6E-B70B-F467B0E3533D}
837871
{DA40C187-6CF1-4EB7-9433-30084B461619} = {86D535C0-0396-4F6E-B70B-F467B0E3533D}
838872
{8D6750B7-CF9D-2A81-9F1C-BFE60487C58B} = {86D535C0-0396-4F6E-B70B-F467B0E3533D}
873+
{92F3BA81-0852-4BED-89BD-626ACD035B4F} = {5B9A5638-2ECE-A0A8-C99D-9976BD40631C}
874+
{E620BE5E-B207-2237-38E1-3F997CD4455F} = {B3415621-5EBA-1A55-0B57-0078FEC59DC7}
875+
{DA296AEB-DC52-4494-C000-673F3D4ABDC2} = {E620BE5E-B207-2237-38E1-3F997CD4455F}
839876
EndGlobalSection
840877
GlobalSection(ExtensibilityGlobals) = postSolution
841878
SolutionGuid = {F09D4ADF-2076-4C42-A278-386A79AF65AA}
842879
EndGlobalSection
843880
GlobalSection(SharedMSBuildProjectFiles) = preSolution
844-
Submodules\agg-sharp\Typography\Typography.GlyphLayout\Typography.GlyphLayout.projitems*{57bdd8e7-06fc-481e-a894-4bf9314d69bd}*SharedItemsImports = 5
845-
Submodules\agg-sharp\Typography\Typography.OpenFont\Typography.OpenFont.projitems*{57bdd8e7-06fc-481e-a894-4bf9314d69bd}*SharedItemsImports = 5
881+
Submodules/agg-sharp/Typography/Typography.GlyphLayout/Typography.GlyphLayout.projitems*{57bdd8e7-06fc-481e-a894-4bf9314d69bd}*SharedItemsImports = 5
882+
Submodules/agg-sharp/Typography/Typography.OpenFont/Typography.OpenFont.projitems*{57bdd8e7-06fc-481e-a894-4bf9314d69bd}*SharedItemsImports = 5
846883
EndGlobalSection
847884
GlobalSection(MonoDevelopProperties) = preSolution
848885
StartupItem = MatterCAD.csproj

doc/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ Creates a torus (donut shape).
3434

3535
![Torus](examples/torus.svg)
3636

37+
### NGonExtrusion
38+
Creates an extrusion of a regular polygon.
39+
- **Constructors**:
40+
- `NGonExtrusion(double radius1, double numSides, double height, Alignment alignment = Alignment.z, string name = "")`
41+
3742
### LinearExtrude
3843
Extrudes a 2D shape along a linear path.
3944
- **Constructors**:
@@ -44,6 +49,17 @@ Extrudes a 2D shape by rotating it around an axis.
4449
- **Constructors**:
4550
- `RotateExtrude(IEnumerable<Vector2> points, int sides = 20, string name = "")`
4651

52+
### Round
53+
Creates a box with rounded edges or corners.
54+
- **Constructors**:
55+
- `Round(Vector3 size, string name = "")`
56+
- `Round(double xSize, double ySize, double zSize, string name = "")`
57+
- **Methods**:
58+
- `RoundFace(Face faceToRound, double radius)`
59+
- `RoundEdge(Edge edgeToRound, double radius)`
60+
- `RoundPoint(Face threeFacesThatSharePoint, double radius)`
61+
- `RoundAll(double radius)`
62+
4763
---
4864

4965
## Transformations
@@ -62,6 +78,18 @@ Changes the size of an object.
6278

6379
### Align
6480
Aligns one object to another based on their faces.
81+
- **Example**: `new Align(objectToMove, Face.Left, targetObject, Face.Right);`
82+
83+
### SetCenter
84+
Sets the center of an object to a specific position.
85+
- **Example**: `new SetCenter(myObject, new Vector3(0, 0, 0));`
86+
87+
### Mirror
88+
Mirrors an object across a plane.
89+
- **Methods**:
90+
- `NewMirrorAccrossX(double offsetFromOrigin = 0)`
91+
- `NewMirrorAccrossY(double offsetFromOrigin = 0)`
92+
- `NewMirrorAccrossZ(double offsetFromOrigin = 0)`
6593

6694
---
6795

@@ -84,3 +112,20 @@ Keeps only the overlapping part of two objects.
84112
- **C# operator**: `obj1 & obj2` (or similar depending on implementation)
85113

86114
![Intersection](examples/intersection.svg)
115+
116+
---
117+
118+
## Constants and Enums
119+
120+
### Alignment
121+
Used to specify the primary axis of a shape.
122+
- `Alignment.x`, `Alignment.y`, `Alignment.z`
123+
- `Alignment.negX`, `Alignment.negY`, `Alignment.negZ`
124+
125+
### Face
126+
Used for alignment and rounding.
127+
- `Face.Left`, `Face.Right`, `Face.Front`, `Face.Back`, `Face.Bottom`, `Face.Top`
128+
129+
### Edge
130+
Used for rounding edges.
131+
- `Edge.LeftFront`, `Edge.LeftBack`, `Edge.LeftTop`, `Edge.LeftBottom`, etc.

0 commit comments

Comments
 (0)