├── .gitattributes ├── .gitignore ├── Bimangle.ForgeAuthor.ConvertSvfToGltf ├── App.config ├── Bimangle.ForgeAuthor.ConvertSvfToGltf.csproj ├── FormApp.Designer.cs ├── FormApp.cs ├── FormApp.resx ├── FormProgress.cs ├── FormProgress.designer.cs ├── FormProgress.resx ├── LicenseConfig.cs ├── Program.cs ├── ProgressHelper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ └── app.ico └── packages.config ├── Bimangle.ForgeAuthor.Differ ├── App.config ├── Bimangle.ForgeAuthor.Differ.csproj ├── FormApp.Designer.cs ├── FormApp.cs ├── FormApp.resx ├── FormProgress.cs ├── FormProgress.designer.cs ├── FormProgress.resx ├── LicenseConfig.cs ├── Program.cs ├── ProgressHelper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ └── app.ico └── packages.Bimangle.ForgeAuthor.Differ.config ├── Bimangle.ForgeAuthor.ExtractBuildingShell ├── App.config ├── Bimangle.ForgeAuthor.ExtractBuildingShell.csproj ├── FormApp.Designer.cs ├── FormApp.cs ├── FormApp.resx ├── FormProgress.cs ├── FormProgress.designer.cs ├── FormProgress.resx ├── LicenseConfig.cs ├── Program.cs ├── ProgressHelper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ └── app.ico └── packages.config ├── Bimangle.ForgeAuthor.Inspector ├── App.config ├── Bimangle.ForgeAuthor.Inspector.csproj ├── FormApp.Designer.cs ├── FormApp.cs ├── FormApp.resx ├── FormProgress.cs ├── FormProgress.designer.cs ├── FormProgress.resx ├── LicenseConfig.cs ├── Program.cs ├── ProgressHelper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ └── app.ico └── packages.Bimangle.ForgeAuthor.Inspector.config ├── Bimangle.ForgeAuthor.Merger ├── App.config ├── Bimangle.ForgeAuthor.Merger.csproj ├── FormApp.Designer.cs ├── FormApp.cs ├── FormApp.resx ├── FormProgress.cs ├── FormProgress.designer.cs ├── FormProgress.resx ├── LicenseConfig.cs ├── Program.cs ├── ProgressHelper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── DataSources │ │ └── Bimangle.ForgeAuthor.Merger.Types.SvfModel.datasource │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ └── app.ico ├── Types │ ├── PositioningMode.cs │ └── SvfModel.cs ├── Utility │ └── FormHelper.cs └── packages.Bimangle.ForgeAuthor.Merger.config ├── Bimangle.ForgeAuthor.Samples.sln ├── Bimangle.ForgeAuthor.Samples.sln.DotSettings ├── README-CHS.md ├── README.md └── docs └── images ├── differ1.png ├── differ2.png ├── inspector1.png ├── merger1.png └── merger2.png /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc 262 | /Bimangle.ForgeAuthor.Differ/Bimangle.ForgeAuthor.Differ.Buildin.csproj 263 | /Bimangle.ForgeAuthor.Differ/packages.Bimangle.ForgeAuthor.Differ.Buildin.config 264 | /Bimangle.ForgeAuthor.Inspector/Bimangle.ForgeAuthor.Inspector.Buildin.csproj 265 | /Bimangle.ForgeAuthor.Inspector/packages.Bimangle.ForgeAuthor.Inspector.Buildin.config 266 | /Bimangle.ForgeAuthor.Merger/Bimangle.ForgeAuthor.Merger.Buildin.csproj 267 | /Bimangle.ForgeAuthor.Merger/packages.Bimangle.ForgeAuthor.Merger.Buildin.config 268 | /Bimangle.ForgeAuthor.Samples.Buildin.sln 269 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Bimangle.ForgeAuthor.ConvertSvfToGltf.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | None 6 | Debug 7 | AnyCPU 8 | {C1D6C5E8-D7A9-4A81-92C1-57BD04D77056} 9 | WinExe 10 | Bimangle.ForgeAuthor.ConvertSvfToGltf 11 | Bimangle.ForgeAuthor.ConvertSvfToGltf 12 | v4.5.2 13 | 512 14 | true 15 | true 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | false 37 | 38 | 39 | Resources\app.ico 40 | 41 | 42 | 43 | ..\packages\Bimangle.ForgeAuthor.1.6.2\lib\net45\Bimangle.ForgeAuthor.dll 44 | 45 | 46 | ..\packages\Bimangle.ForgeAuthor.Extension.Gltf.1.6.2\lib\net45\Bimangle.ForgeAuthor.Extension.Gltf.dll 47 | 48 | 49 | ..\packages\Bimangle.ForgeEngine.Common.1.2.1\lib\net45\Bimangle.ForgeEngine.Common.dll 50 | 51 | 52 | ..\packages\Bimangle.ForgeAuthor.Extension.Gltf.1.6.2\lib\net45\Bimangle.Libs.Draco.dll 53 | 54 | 55 | ..\packages\Bimangle.ForgeAuthor.Extension.Gltf.1.6.2\lib\net45\Bimangle.Libs.WebP.dll 56 | 57 | 58 | ..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll 59 | 60 | 61 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll 62 | 63 | 64 | 65 | 66 | ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | Form 81 | 82 | 83 | FormApp.cs 84 | 85 | 86 | Form 87 | 88 | 89 | FormProgress.cs 90 | 91 | 92 | 93 | 94 | 95 | 96 | FormApp.cs 97 | 98 | 99 | FormProgress.cs 100 | 101 | 102 | ResXFileCodeGenerator 103 | Resources.Designer.cs 104 | Designer 105 | 106 | 107 | True 108 | Resources.resx 109 | True 110 | 111 | 112 | 113 | SettingsSingleFileGenerator 114 | Settings.Designer.cs 115 | 116 | 117 | True 118 | Settings.settings 119 | True 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/FormApp.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 302, 25 125 | 126 | 127 | 428, 25 128 | 129 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/FormProgress.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf 4 | { 5 | partial class FormProgress : Form 6 | { 7 | public FormProgress() 8 | { 9 | this.InitializeComponent(); 10 | } 11 | 12 | public FormProgress(string title) : this() 13 | { 14 | if(title != null) label1.Text = title; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/FormProgress.designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf 5 | { 6 | partial class FormProgress 7 | { 8 | private IContainer components = (IContainer)null; 9 | 10 | protected override void Dispose(bool disposing) 11 | { 12 | if (disposing && this.components != null) 13 | this.components.Dispose(); 14 | base.Dispose(disposing); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | this.label1 = new System.Windows.Forms.Label(); 20 | this.panel1 = new System.Windows.Forms.Panel(); 21 | this.panel1.SuspendLayout(); 22 | this.SuspendLayout(); 23 | // 24 | // label1 25 | // 26 | this.label1.BackColor = System.Drawing.Color.Transparent; 27 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 28 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 29 | this.label1.Location = new System.Drawing.Point(0, 0); 30 | this.label1.Name = "label1"; 31 | this.label1.Size = new System.Drawing.Size(458, 69); 32 | this.label1.TabIndex = 1; 33 | this.label1.Text = "正在加载..."; 34 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 35 | // 36 | // panel1 37 | // 38 | this.panel1.BackColor = System.Drawing.Color.White; 39 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(460, 71); 45 | this.panel1.TabIndex = 3; 46 | // 47 | // FormProgress 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.ClientSize = new System.Drawing.Size(460, 71); 52 | this.Controls.Add(this.panel1); 53 | this.Font = new System.Drawing.Font("Tahoma", 9F); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Name = "FormProgress"; 56 | this.ShowIcon = false; 57 | this.ShowInTaskbar = false; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Progress"; 60 | this.TopMost = true; 61 | this.panel1.ResumeLayout(false); 62 | this.ResumeLayout(false); 63 | 64 | } 65 | 66 | private Label label1; 67 | private Panel panel1; 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/FormProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/LicenseConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf 5 | { 6 | static class LicenseConfig 7 | { 8 | 9 | #if DEBUG 10 | public const string LICENSE_KEY = null; 11 | #else 12 | public const string LICENSE_KEY = null; 13 | #endif 14 | 15 | public const string CLIENT_ID = @"BimAngle"; 16 | 17 | public const string PRODUCT_NAME = @"ConvertSvfToGltf"; 18 | 19 | [MethodImpl(MethodImplOptions.NoInlining)] 20 | public static LicenseSession Create() 21 | { 22 | LicenseSession.Init(); 23 | return new LicenseSession(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 24 | } 25 | 26 | [MethodImpl(MethodImplOptions.NoInlining)] 27 | public static void ShowDialog(LicenseSession session, IWin32Window parent) 28 | { 29 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 30 | 31 | LicenseSession.ShowLicenseDialog(session.ClientId, session.AppName, parent); 32 | } 33 | 34 | [MethodImpl(MethodImplOptions.NoInlining)] 35 | public static void ShowDialog(IWin32Window parent) 36 | { 37 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 38 | 39 | LicenseSession.ShowLicenseDialog(CLIENT_ID, PRODUCT_NAME, parent); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new FormApp()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/ProgressHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf 5 | { 6 | class ProgressHelper : IDisposable 7 | { 8 | private static ProgressHelper _Instance; 9 | 10 | public static void Close() 11 | { 12 | _Instance?.Dispose(); 13 | } 14 | 15 | private FormProgress _Form; 16 | 17 | public ProgressHelper(IWin32Window owner = null, string title = null) 18 | { 19 | _Form = new FormProgress(title); 20 | _Form.StartPosition = owner == null 21 | ? FormStartPosition.CenterScreen 22 | : FormStartPosition.CenterParent; 23 | _Form.Show(owner); 24 | _Form.Refresh(); 25 | 26 | _Instance = this; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | if (_Form != null) 32 | { 33 | _Form.Close(); 34 | _Form = null; 35 | 36 | _Instance = null; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Bimangle.ForgeAuthor.ConvertSvfToGltf")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Bimangle.ForgeAuthor.ConvertSvfToGltf")] 13 | [assembly: AssemblyCopyright("Copyright © BimAngle 2017-2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("c1d6c5e8-d7a9-4a81-92c1-57bd04d77056")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bimangle.ForgeAuthor.ConvertSvfToGltf.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 重写当前线程的 CurrentUICulture 属性 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon app { 67 | get { 68 | object obj = ResourceManager.GetObject("app", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.ConvertSvfToGltf.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/Resources/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/Bimangle.ForgeAuthor.ConvertSvfToGltf/Resources/app.ico -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ConvertSvfToGltf/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Bimangle.ForgeAuthor.Differ.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {DA63E60D-8FAB-43D0-AE98-65896EC49DC1} 8 | WinExe 9 | Bimangle.ForgeAuthor.Differ 10 | Bimangle.ForgeAuthor.Differ 11 | v4.5 12 | 512 13 | 14 | 15 | AnyCPU 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | false 24 | 25 | 26 | AnyCPU 27 | none 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | false 34 | 35 | 36 | Resources\app.ico 37 | 38 | 39 | 40 | ..\packages\Bimangle.ForgeAuthor.1.8.1\lib\net45\Bimangle.ForgeAuthor.dll 41 | 42 | 43 | ..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll 44 | 45 | 46 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll 47 | 48 | 49 | 50 | 51 | ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Form 66 | 67 | 68 | FormApp.cs 69 | 70 | 71 | Form 72 | 73 | 74 | FormProgress.cs 75 | 76 | 77 | 78 | 79 | 80 | 81 | FormApp.cs 82 | 83 | 84 | FormProgress.cs 85 | 86 | 87 | ResXFileCodeGenerator 88 | Resources.Designer.cs 89 | Designer 90 | 91 | 92 | True 93 | Resources.resx 94 | True 95 | 96 | 97 | 98 | SettingsSingleFileGenerator 99 | Settings.Designer.cs 100 | 101 | 102 | True 103 | Settings.settings 104 | True 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/FormProgress.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Bimangle.ForgeAuthor.Differ 4 | { 5 | partial class FormProgress : Form 6 | { 7 | public FormProgress() 8 | { 9 | this.InitializeComponent(); 10 | } 11 | 12 | public FormProgress(string title) : this() 13 | { 14 | if(title != null) label1.Text = title; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/FormProgress.designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Differ 5 | { 6 | partial class FormProgress 7 | { 8 | private IContainer components = (IContainer)null; 9 | 10 | protected override void Dispose(bool disposing) 11 | { 12 | if (disposing && this.components != null) 13 | this.components.Dispose(); 14 | base.Dispose(disposing); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | this.label1 = new System.Windows.Forms.Label(); 20 | this.panel1 = new System.Windows.Forms.Panel(); 21 | this.panel1.SuspendLayout(); 22 | this.SuspendLayout(); 23 | // 24 | // label1 25 | // 26 | this.label1.BackColor = System.Drawing.Color.Transparent; 27 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 28 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 29 | this.label1.Location = new System.Drawing.Point(0, 0); 30 | this.label1.Name = "label1"; 31 | this.label1.Size = new System.Drawing.Size(458, 69); 32 | this.label1.TabIndex = 1; 33 | this.label1.Text = "正在加载..."; 34 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 35 | // 36 | // panel1 37 | // 38 | this.panel1.BackColor = System.Drawing.Color.White; 39 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(460, 71); 45 | this.panel1.TabIndex = 3; 46 | // 47 | // FormProgress 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.ClientSize = new System.Drawing.Size(460, 71); 52 | this.Controls.Add(this.panel1); 53 | this.Font = new System.Drawing.Font("Tahoma", 9F); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Name = "FormProgress"; 56 | this.ShowIcon = false; 57 | this.ShowInTaskbar = false; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Progress"; 60 | this.TopMost = true; 61 | this.panel1.ResumeLayout(false); 62 | this.ResumeLayout(false); 63 | 64 | } 65 | 66 | private Label label1; 67 | private Panel panel1; 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/FormProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/LicenseConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Differ 5 | { 6 | static class LicenseConfig 7 | { 8 | 9 | #if DEBUG 10 | public const string LICENSE_KEY = null; 11 | #else 12 | public const string LICENSE_KEY = null; 13 | #endif 14 | 15 | public const string CLIENT_ID = @"BimAngle"; 16 | 17 | public const string PRODUCT_NAME = @"Differ"; 18 | 19 | [MethodImpl(MethodImplOptions.NoInlining)] 20 | public static LicenseSession Create() 21 | { 22 | LicenseSession.Init(); 23 | return new LicenseSession(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 24 | } 25 | 26 | [MethodImpl(MethodImplOptions.NoInlining)] 27 | public static void ShowDialog(LicenseSession session, IWin32Window parent) 28 | { 29 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 30 | 31 | LicenseSession.ShowLicenseDialog(session.ClientId, session.AppName, parent); 32 | } 33 | 34 | [MethodImpl(MethodImplOptions.NoInlining)] 35 | public static void ShowDialog(IWin32Window parent) 36 | { 37 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 38 | 39 | LicenseSession.ShowLicenseDialog(CLIENT_ID, PRODUCT_NAME, parent); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Bimangle.ForgeAuthor.Differ 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new FormApp()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/ProgressHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Differ 5 | { 6 | class ProgressHelper : IDisposable 7 | { 8 | private static ProgressHelper _Instance; 9 | 10 | public static void Close() 11 | { 12 | _Instance?.Dispose(); 13 | } 14 | 15 | private FormProgress _Form; 16 | 17 | public ProgressHelper(IWin32Window owner = null, string title = null) 18 | { 19 | _Form = new FormProgress(title); 20 | _Form.StartPosition = owner == null 21 | ? FormStartPosition.CenterScreen 22 | : FormStartPosition.CenterParent; 23 | _Form.Show(owner); 24 | _Form.Refresh(); 25 | 26 | _Instance = this; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | if (_Form != null) 32 | { 33 | _Form.Close(); 34 | _Form = null; 35 | 36 | _Instance = null; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Bimangle.ForgeAuthor.Differ")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Bimangle.ForgeAuthor.Differ")] 13 | [assembly: AssemblyCopyright("Copyright © BimAngle 2017-2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("da63e60d-8fab-43d0-ae98-65896ec49dc1")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Differ.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bimangle.ForgeAuthor.Differ.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon app { 67 | get { 68 | object obj = ResourceManager.GetObject("app", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Differ.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/Resources/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/Bimangle.ForgeAuthor.Differ/Resources/app.ico -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Differ/packages.Bimangle.ForgeAuthor.Differ.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Bimangle.ForgeAuthor.ExtractBuildingShell.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | None 6 | Debug 7 | AnyCPU 8 | {9B7D9564-9756-4F86-AB70-0B73543C6F9F} 9 | WinExe 10 | Bimangle.ForgeAuthor.ExtractBuildingShell 11 | Bimangle.ForgeAuthor.ExtractBuildingShell 12 | v4.5.2 13 | 512 14 | true 15 | true 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | false 37 | 38 | 39 | Resources\app.ico 40 | 41 | 42 | 43 | ..\packages\Bimangle.ForgeAuthor.1.6.6\lib\net45\Bimangle.ForgeAuthor.dll 44 | 45 | 46 | ..\packages\Bimangle.ForgeEngine.Common.1.2.1\lib\net45\Bimangle.ForgeEngine.Common.dll 47 | 48 | 49 | ..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll 50 | 51 | 52 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll 53 | 54 | 55 | 56 | 57 | ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | Form 72 | 73 | 74 | FormApp.cs 75 | 76 | 77 | Form 78 | 79 | 80 | FormProgress.cs 81 | 82 | 83 | 84 | 85 | 86 | 87 | FormApp.cs 88 | 89 | 90 | FormProgress.cs 91 | 92 | 93 | ResXFileCodeGenerator 94 | Resources.Designer.cs 95 | Designer 96 | 97 | 98 | True 99 | Resources.resx 100 | True 101 | 102 | 103 | 104 | SettingsSingleFileGenerator 105 | Settings.Designer.cs 106 | 107 | 108 | True 109 | Settings.settings 110 | True 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/FormApp.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 302, 25 125 | 126 | 127 | 572, 25 128 | 129 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/FormProgress.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell 4 | { 5 | partial class FormProgress : Form 6 | { 7 | public FormProgress() 8 | { 9 | this.InitializeComponent(); 10 | } 11 | 12 | public FormProgress(string title) : this() 13 | { 14 | if(title != null) label1.Text = title; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/FormProgress.designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell 5 | { 6 | partial class FormProgress 7 | { 8 | private IContainer components = (IContainer)null; 9 | 10 | protected override void Dispose(bool disposing) 11 | { 12 | if (disposing && this.components != null) 13 | this.components.Dispose(); 14 | base.Dispose(disposing); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | this.label1 = new System.Windows.Forms.Label(); 20 | this.panel1 = new System.Windows.Forms.Panel(); 21 | this.panel1.SuspendLayout(); 22 | this.SuspendLayout(); 23 | // 24 | // label1 25 | // 26 | this.label1.BackColor = System.Drawing.Color.Transparent; 27 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 28 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 29 | this.label1.Location = new System.Drawing.Point(0, 0); 30 | this.label1.Name = "label1"; 31 | this.label1.Size = new System.Drawing.Size(458, 69); 32 | this.label1.TabIndex = 1; 33 | this.label1.Text = "正在加载..."; 34 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 35 | // 36 | // panel1 37 | // 38 | this.panel1.BackColor = System.Drawing.Color.White; 39 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(460, 71); 45 | this.panel1.TabIndex = 3; 46 | // 47 | // FormProgress 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.ClientSize = new System.Drawing.Size(460, 71); 52 | this.Controls.Add(this.panel1); 53 | this.Font = new System.Drawing.Font("Tahoma", 9F); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Name = "FormProgress"; 56 | this.ShowIcon = false; 57 | this.ShowInTaskbar = false; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Progress"; 60 | this.TopMost = true; 61 | this.panel1.ResumeLayout(false); 62 | this.ResumeLayout(false); 63 | 64 | } 65 | 66 | private Label label1; 67 | private Panel panel1; 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/FormProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/LicenseConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell 5 | { 6 | static class LicenseConfig 7 | { 8 | 9 | #if DEBUG 10 | public const string LICENSE_KEY = null; 11 | #else 12 | public const string LICENSE_KEY = null; 13 | #endif 14 | 15 | public const string CLIENT_ID = @"BimAngle"; 16 | 17 | public const string PRODUCT_NAME = @"ExtractBuildingShell"; 18 | 19 | [MethodImpl(MethodImplOptions.NoInlining)] 20 | public static LicenseSession Create() 21 | { 22 | LicenseSession.Init(); 23 | return new LicenseSession(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 24 | } 25 | 26 | [MethodImpl(MethodImplOptions.NoInlining)] 27 | public static void ShowDialog(LicenseSession session, IWin32Window parent) 28 | { 29 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 30 | 31 | LicenseSession.ShowLicenseDialog(session.ClientId, session.AppName, parent); 32 | } 33 | 34 | [MethodImpl(MethodImplOptions.NoInlining)] 35 | public static void ShowDialog(IWin32Window parent) 36 | { 37 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 38 | 39 | LicenseSession.ShowLicenseDialog(CLIENT_ID, PRODUCT_NAME, parent); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new FormApp()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/ProgressHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell 5 | { 6 | class ProgressHelper : IDisposable 7 | { 8 | private static ProgressHelper _Instance; 9 | 10 | public static void Close() 11 | { 12 | _Instance?.Dispose(); 13 | } 14 | 15 | private FormProgress _Form; 16 | 17 | public ProgressHelper(IWin32Window owner = null, string title = null) 18 | { 19 | _Form = new FormProgress(title); 20 | _Form.StartPosition = owner == null 21 | ? FormStartPosition.CenterScreen 22 | : FormStartPosition.CenterParent; 23 | _Form.Show(owner); 24 | _Form.Refresh(); 25 | 26 | _Instance = this; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | if (_Form != null) 32 | { 33 | _Form.Close(); 34 | _Form = null; 35 | 36 | _Instance = null; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Bimangle.ForgeAuthor.ExtractBuildingShell")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Bimangle.ForgeAuthor.ExtractBuildingShell")] 13 | [assembly: AssemblyCopyright("Copyright © BimAngle 2017-2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("9b7d9564-9756-4f86-ab70-0b73543c6f9f")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bimangle.ForgeAuthor.ExtractBuildingShell.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 重写当前线程的 CurrentUICulture 属性 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon app { 67 | get { 68 | object obj = ResourceManager.GetObject("app", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.ExtractBuildingShell.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string ClientId { 30 | get { 31 | return ((string)(this["ClientId"])); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/Resources/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/Bimangle.ForgeAuthor.ExtractBuildingShell/Resources/app.ico -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.ExtractBuildingShell/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Bimangle.ForgeAuthor.Inspector.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {B08F9AD8-4771-43BA-A1A7-D53C6634FCE6} 8 | WinExe 9 | Bimangle.ForgeAuthor.Inspector 10 | Bimangle.ForgeAuthor.Inspector 11 | v4.5 12 | 512 13 | 14 | 15 | AnyCPU 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | false 24 | 25 | 26 | AnyCPU 27 | none 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | false 34 | 35 | 36 | Resources\app.ico 37 | 38 | 39 | 40 | ..\packages\Bimangle.ForgeAuthor.1.8.1\lib\net45\Bimangle.ForgeAuthor.dll 41 | 42 | 43 | ..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll 44 | 45 | 46 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll 47 | 48 | 49 | 50 | 51 | ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Form 66 | 67 | 68 | FormApp.cs 69 | 70 | 71 | Form 72 | 73 | 74 | FormProgress.cs 75 | 76 | 77 | 78 | 79 | 80 | 81 | FormApp.cs 82 | 83 | 84 | FormProgress.cs 85 | 86 | 87 | ResXFileCodeGenerator 88 | Resources.Designer.cs 89 | Designer 90 | 91 | 92 | True 93 | Resources.resx 94 | True 95 | 96 | 97 | 98 | SettingsSingleFileGenerator 99 | Settings.Designer.cs 100 | 101 | 102 | True 103 | Settings.settings 104 | True 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/FormApp.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 127, 17 122 | 123 | 124 | 247, 17 125 | 126 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/FormProgress.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Bimangle.ForgeAuthor.Inspector 4 | { 5 | partial class FormProgress : Form 6 | { 7 | public FormProgress() 8 | { 9 | this.InitializeComponent(); 10 | } 11 | 12 | public FormProgress(string title) : this() 13 | { 14 | if(title != null) label1.Text = title; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/FormProgress.designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Inspector 5 | { 6 | partial class FormProgress 7 | { 8 | private IContainer components = (IContainer)null; 9 | 10 | protected override void Dispose(bool disposing) 11 | { 12 | if (disposing && this.components != null) 13 | this.components.Dispose(); 14 | base.Dispose(disposing); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | this.label1 = new System.Windows.Forms.Label(); 20 | this.panel1 = new System.Windows.Forms.Panel(); 21 | this.panel1.SuspendLayout(); 22 | this.SuspendLayout(); 23 | // 24 | // label1 25 | // 26 | this.label1.BackColor = System.Drawing.Color.Transparent; 27 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 28 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 29 | this.label1.Location = new System.Drawing.Point(0, 0); 30 | this.label1.Name = "label1"; 31 | this.label1.Size = new System.Drawing.Size(458, 69); 32 | this.label1.TabIndex = 1; 33 | this.label1.Text = "正在加载..."; 34 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 35 | // 36 | // panel1 37 | // 38 | this.panel1.BackColor = System.Drawing.Color.White; 39 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(460, 71); 45 | this.panel1.TabIndex = 3; 46 | // 47 | // FormProgress 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.ClientSize = new System.Drawing.Size(460, 71); 52 | this.Controls.Add(this.panel1); 53 | this.Font = new System.Drawing.Font("Tahoma", 9F); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Name = "FormProgress"; 56 | this.ShowIcon = false; 57 | this.ShowInTaskbar = false; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Progress"; 60 | this.TopMost = true; 61 | this.panel1.ResumeLayout(false); 62 | this.ResumeLayout(false); 63 | 64 | } 65 | 66 | private Label label1; 67 | private Panel panel1; 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/FormProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/LicenseConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Inspector 5 | { 6 | static class LicenseConfig 7 | { 8 | 9 | #if DEBUG 10 | public const string LICENSE_KEY = null; 11 | #else 12 | public const string LICENSE_KEY = null; 13 | #endif 14 | 15 | public const string CLIENT_ID = @"BimAngle"; 16 | 17 | public const string PRODUCT_NAME = @"Inspector"; 18 | 19 | [MethodImpl(MethodImplOptions.NoInlining)] 20 | public static LicenseSession Create() 21 | { 22 | LicenseSession.Init(); 23 | return new LicenseSession(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 24 | } 25 | 26 | [MethodImpl(MethodImplOptions.NoInlining)] 27 | public static void ShowDialog(LicenseSession session, IWin32Window parent) 28 | { 29 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 30 | 31 | LicenseSession.ShowLicenseDialog(session.ClientId, session.AppName, parent); 32 | } 33 | 34 | [MethodImpl(MethodImplOptions.NoInlining)] 35 | public static void ShowDialog(IWin32Window parent) 36 | { 37 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 38 | 39 | LicenseSession.ShowLicenseDialog(CLIENT_ID, PRODUCT_NAME, parent); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using Bimangle.ForgeAuthor.Svf; 9 | 10 | namespace Bimangle.ForgeAuthor.Inspector 11 | { 12 | static class Program 13 | { 14 | /// 15 | /// 应用程序的主入口点。 16 | /// 17 | [STAThread] 18 | static void Main(string[] args) 19 | { 20 | Application.EnableVisualStyles(); 21 | Application.SetCompatibleTextRenderingDefault(false); 22 | 23 | string filePath; 24 | 25 | if (args.Length > 0) 26 | { 27 | filePath = Path.GetFullPath(args[0]); 28 | } 29 | else 30 | { 31 | var dialog = new OpenFileDialog(); 32 | dialog.CheckPathExists = true; 33 | dialog.Title = @"Select Svf Model File"; 34 | dialog.Filter = @"Autodesk Forge 3D Model|*.svf;*.svfzip|All Files|*.*"; 35 | dialog.Multiselect = false; 36 | if (dialog.ShowDialog() != DialogResult.OK) return; 37 | 38 | filePath = dialog.FileName; 39 | } 40 | 41 | try 42 | { 43 | using (new ProgressHelper(null, @"Loading ...")) 44 | { 45 | using (var svfDb = SvfDatabase.LoadFrom(filePath)) 46 | { 47 | Application.Run(new FormApp(svfDb, filePath)); 48 | } 49 | } 50 | } 51 | catch (Exception e) 52 | { 53 | MessageBox.Show(e.Message, @"Exception", MessageBoxButtons.OK, MessageBoxIcon.Information); 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/ProgressHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Inspector 5 | { 6 | class ProgressHelper : IDisposable 7 | { 8 | private static ProgressHelper _Instance; 9 | 10 | public static void Close() 11 | { 12 | _Instance?.Dispose(); 13 | } 14 | 15 | private FormProgress _Form; 16 | 17 | public ProgressHelper(IWin32Window owner = null, string title = null) 18 | { 19 | _Form = new FormProgress(title); 20 | _Form.StartPosition = owner == null 21 | ? FormStartPosition.CenterScreen 22 | : FormStartPosition.CenterParent; 23 | _Form.Show(owner); 24 | _Form.Refresh(); 25 | 26 | _Instance = this; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | if (_Form != null) 32 | { 33 | _Form.Close(); 34 | _Form = null; 35 | 36 | _Instance = null; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Bimangle.ForgeAuthor.Inspector")] 9 | [assembly: AssemblyDescription("Browse and edit properties in svf model")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("BimAngle")] 12 | [assembly: AssemblyProduct("SvfPropertyInspector")] 13 | [assembly: AssemblyCopyright("Copyright © BimAngle 2017-2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("b08f9ad8-4771-43ba-a1a7-d53c6634fce6")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.*")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Inspector.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bimangle.ForgeAuthor.Inspector.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon app { 67 | get { 68 | object obj = ResourceManager.GetObject("app", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Inspector.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string ClientId { 30 | get { 31 | return ((string)(this["ClientId"])); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/Resources/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/Bimangle.ForgeAuthor.Inspector/Resources/app.ico -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Inspector/packages.Bimangle.ForgeAuthor.Inspector.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Bimangle.ForgeAuthor.Merger.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF} 8 | WinExe 9 | Bimangle.ForgeAuthor.Merger 10 | Bimangle.ForgeAuthor.Merger 11 | v4.5 12 | 512 13 | 14 | 15 | AnyCPU 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | false 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | false 34 | 35 | 36 | Resources\app.ico 37 | 38 | 39 | 40 | ..\packages\Bimangle.ForgeAuthor.1.8.1\lib\net45\Bimangle.ForgeAuthor.dll 41 | 42 | 43 | ..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll 44 | 45 | 46 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll 47 | 48 | 49 | 50 | 51 | ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Form 66 | 67 | 68 | FormApp.cs 69 | 70 | 71 | Form 72 | 73 | 74 | FormProgress.cs 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | FormApp.cs 85 | 86 | 87 | FormProgress.cs 88 | 89 | 90 | ResXFileCodeGenerator 91 | Resources.Designer.cs 92 | Designer 93 | 94 | 95 | True 96 | Resources.resx 97 | True 98 | 99 | 100 | Designer 101 | 102 | 103 | 104 | SettingsSingleFileGenerator 105 | Settings.Designer.cs 106 | 107 | 108 | True 109 | Settings.settings 110 | True 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/FormApp.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 438, 17 122 | 123 | 124 | 17, 17 125 | 126 | 127 | 197, 17 128 | 129 | 130 | 323, 17 131 | 132 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/FormProgress.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Bimangle.ForgeAuthor.Merger 4 | { 5 | partial class FormProgress : Form 6 | { 7 | public FormProgress() 8 | { 9 | this.InitializeComponent(); 10 | } 11 | 12 | public FormProgress(string title) : this() 13 | { 14 | if(title != null) label1.Text = title; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/FormProgress.designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Merger 5 | { 6 | partial class FormProgress 7 | { 8 | private IContainer components = (IContainer)null; 9 | 10 | protected override void Dispose(bool disposing) 11 | { 12 | if (disposing && this.components != null) 13 | this.components.Dispose(); 14 | base.Dispose(disposing); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | this.label1 = new System.Windows.Forms.Label(); 20 | this.panel1 = new System.Windows.Forms.Panel(); 21 | this.panel1.SuspendLayout(); 22 | this.SuspendLayout(); 23 | // 24 | // label1 25 | // 26 | this.label1.BackColor = System.Drawing.Color.Transparent; 27 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 28 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 29 | this.label1.Location = new System.Drawing.Point(0, 0); 30 | this.label1.Name = "label1"; 31 | this.label1.Size = new System.Drawing.Size(458, 69); 32 | this.label1.TabIndex = 1; 33 | this.label1.Text = "正在加载..."; 34 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 35 | // 36 | // panel1 37 | // 38 | this.panel1.BackColor = System.Drawing.Color.White; 39 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(460, 71); 45 | this.panel1.TabIndex = 3; 46 | // 47 | // FormProgress 48 | // 49 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 51 | this.ClientSize = new System.Drawing.Size(460, 71); 52 | this.Controls.Add(this.panel1); 53 | this.Font = new System.Drawing.Font("Tahoma", 9F); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Name = "FormProgress"; 56 | this.ShowIcon = false; 57 | this.ShowInTaskbar = false; 58 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 59 | this.Text = "Progress"; 60 | this.TopMost = true; 61 | this.panel1.ResumeLayout(false); 62 | this.ResumeLayout(false); 63 | 64 | } 65 | 66 | private Label label1; 67 | private Panel panel1; 68 | 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/FormProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/LicenseConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Runtime.CompilerServices; 4 | using System.Windows.Forms; 5 | 6 | namespace Bimangle.ForgeAuthor.Merger 7 | { 8 | static class LicenseConfig 9 | { 10 | 11 | #if DEBUG 12 | public const string LICENSE_KEY = null; 13 | #else 14 | public const string LICENSE_KEY = null; 15 | #endif 16 | 17 | public const string CLIENT_ID = @"BimAngle"; 18 | 19 | public const string PRODUCT_NAME = @"Merger"; 20 | 21 | [MethodImpl(MethodImplOptions.NoInlining)] 22 | public static LicenseSession Create() 23 | { 24 | LicenseSession.Init(); 25 | return new LicenseSession(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 26 | } 27 | 28 | [MethodImpl(MethodImplOptions.NoInlining)] 29 | public static void ShowDialog(LicenseSession session, IWin32Window parent) 30 | { 31 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 32 | 33 | LicenseSession.ShowLicenseDialog(session.ClientId, session.AppName, parent); 34 | } 35 | 36 | [MethodImpl(MethodImplOptions.NoInlining)] 37 | public static void ShowDialog(IWin32Window parent) 38 | { 39 | var info = LicenseSession.GetLicenseInfo(CLIENT_ID, PRODUCT_NAME, LICENSE_KEY); 40 | 41 | LicenseSession.ShowLicenseDialog(CLIENT_ID, PRODUCT_NAME, parent); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Bimangle.ForgeAuthor.Merger 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new FormApp()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/ProgressHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Bimangle.ForgeAuthor.Merger 5 | { 6 | class ProgressHelper : IDisposable 7 | { 8 | private static ProgressHelper _Instance; 9 | 10 | public static void Close() 11 | { 12 | _Instance?.Dispose(); 13 | } 14 | 15 | private FormProgress _Form; 16 | 17 | public ProgressHelper(IWin32Window owner = null, string title = null) 18 | { 19 | _Form = new FormProgress(title); 20 | _Form.StartPosition = owner == null 21 | ? FormStartPosition.CenterScreen 22 | : FormStartPosition.CenterParent; 23 | _Form.Show(owner); 24 | _Form.Refresh(); 25 | 26 | _Instance = this; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | if (_Form != null) 32 | { 33 | _Form.Close(); 34 | _Form = null; 35 | 36 | _Instance = null; 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Bimangle.ForgeAuthor.Merger")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Bimangle.ForgeAuthor.Merger")] 13 | [assembly: AssemblyCopyright("Copyright © BimAngle 2017-2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("25c780a6-2c2c-4e6a-9ae4-ea5754bb85ff")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/DataSources/Bimangle.ForgeAuthor.Merger.Types.SvfModel.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | Bimangle.ForgeAuthor.Merger.Types.SvfModel, Bimangle.ForgeAuthor.Merger, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Merger.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bimangle.ForgeAuthor.Merger.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Icon app { 67 | get { 68 | object obj = ResourceManager.GetObject("app", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\app.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Bimangle.ForgeAuthor.Merger.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string ClientId { 30 | get { 31 | return ((string)(this["ClientId"])); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Resources/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/Bimangle.ForgeAuthor.Merger/Resources/app.ico -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Types/PositioningMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Bimangle.ForgeBrowser.Author.Merger.Types 8 | { 9 | /// 10 | /// 坐标对齐模式 11 | /// 12 | public enum PositioningMode 13 | { 14 | /// 15 | /// 通过共享坐标 16 | /// 17 | BySharedCoordinates = 0, 18 | 19 | /// 20 | /// 原点对原点 21 | /// 22 | OriginToOrigin = 1, 23 | 24 | /// 25 | /// 项目基点到项目基点 26 | /// 27 | ProjectBasePointToProjectBasePoint = 2, 28 | 29 | /// 30 | /// 中心对中心 31 | /// 32 | CenterToCenter = 3, 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Types/SvfModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Bimangle.ForgeAuthor.Merger.Types 8 | { 9 | [Serializable] 10 | public class SvfModel 11 | { 12 | public string ModelPath { get; set; } 13 | public string ModelTitle { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/Utility/FormHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace Bimangle.ForgeAuthor.Merger.Utility 11 | { 12 | static class FormHelper 13 | { 14 | /// 15 | /// 允许文本框接收拖入的文件夹路径 16 | /// 17 | /// 18 | public static void EnableFolderPathDrop(this TextBox text) 19 | { 20 | if (text == null || text.AllowDrop) return; 21 | 22 | text.AllowDrop = true; 23 | text.DragDrop += (sender, e) => 24 | { 25 | if (e.Data.TryParsePath(out var path) && Directory.Exists(path)) 26 | { 27 | text.Text = path; 28 | } 29 | }; 30 | 31 | text.DragEnter += (sender, e) => 32 | { 33 | if (e.Data.TryParsePath(out var path) && Directory.Exists(path)) 34 | { 35 | e.Effect = DragDropEffects.Link; 36 | } 37 | else 38 | { 39 | e.Effect = DragDropEffects.None; 40 | } 41 | }; 42 | } 43 | 44 | /// 45 | /// 允许控件接收拖入的文件路径 46 | /// 47 | /// 48 | /// 49 | public static void EnableFilePathDrop(this Control text, Action callback) 50 | { 51 | if (text == null || text.AllowDrop) return; 52 | 53 | text.AllowDrop = true; 54 | text.DragDrop += (sender, e) => 55 | { 56 | if (e.Data.TryParsePaths(out var paths)) 57 | { 58 | foreach (var path in paths) 59 | { 60 | callback?.Invoke(path); 61 | } 62 | } 63 | }; 64 | 65 | text.DragEnter += (sender, e) => 66 | { 67 | if (e.Data.TryParsePaths(out var paths) && paths.All(File.Exists)) 68 | { 69 | e.Effect = DragDropEffects.Link; 70 | } 71 | else 72 | { 73 | e.Effect = DragDropEffects.None; 74 | } 75 | }; 76 | } 77 | 78 | private static bool TryParsePath(this IDataObject data, out string path) 79 | { 80 | path = null; 81 | 82 | try 83 | { 84 | if (data == null || data.GetDataPresent(DataFormats.FileDrop) == false) 85 | { 86 | return false; 87 | } 88 | 89 | path = ((System.Array)data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); 90 | return true; 91 | } 92 | catch (Exception ex) 93 | { 94 | Trace.WriteLine(ex.ToString()); 95 | return false; 96 | } 97 | } 98 | 99 | private static bool TryParsePaths(this IDataObject data, out string[] paths) 100 | { 101 | paths = null; 102 | 103 | try 104 | { 105 | if (data == null || data.GetDataPresent(DataFormats.FileDrop) == false) 106 | { 107 | return false; 108 | } 109 | 110 | var array = (System.Array)data.GetData(DataFormats.FileDrop); 111 | 112 | var list = new List(); 113 | for (var i = array.GetLowerBound(0); i <= array.GetUpperBound(0); i++) 114 | { 115 | list.Add(array.GetValue(i).ToString()); 116 | } 117 | 118 | paths = list.ToArray(); 119 | return paths.Length > 0; 120 | } 121 | catch (Exception ex) 122 | { 123 | Trace.WriteLine(ex.ToString()); 124 | return false; 125 | } 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Merger/packages.Bimangle.ForgeAuthor.Merger.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Samples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26730.8 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bimangle.ForgeAuthor.Inspector", "Bimangle.ForgeAuthor.Inspector\Bimangle.ForgeAuthor.Inspector.csproj", "{B08F9AD8-4771-43BA-A1A7-D53C6634FCE6}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bimangle.ForgeAuthor.Merger", "Bimangle.ForgeAuthor.Merger\Bimangle.ForgeAuthor.Merger.csproj", "{25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bimangle.ForgeAuthor.Differ", "Bimangle.ForgeAuthor.Differ\Bimangle.ForgeAuthor.Differ.csproj", "{DA63E60D-8FAB-43D0-AE98-65896EC49DC1}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bimangle.ForgeAuthor.ConvertSvfToGltf", "Bimangle.ForgeAuthor.ConvertSvfToGltf\Bimangle.ForgeAuthor.ConvertSvfToGltf.csproj", "{C1D6C5E8-D7A9-4A81-92C1-57BD04D77056}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bimangle.ForgeAuthor.ExtractBuildingShell", "Bimangle.ForgeAuthor.ExtractBuildingShell\Bimangle.ForgeAuthor.ExtractBuildingShell.csproj", "{9B7D9564-9756-4F86-AB70-0B73543C6F9F}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Any CPU = Debug|Any CPU 19 | Release|Any CPU = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {B08F9AD8-4771-43BA-A1A7-D53C6634FCE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {B08F9AD8-4771-43BA-A1A7-D53C6634FCE6}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {B08F9AD8-4771-43BA-A1A7-D53C6634FCE6}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {B08F9AD8-4771-43BA-A1A7-D53C6634FCE6}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {25C780A6-2C2C-4E6A-9AE4-EA5754BB85FF}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {DA63E60D-8FAB-43D0-AE98-65896EC49DC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 31 | {DA63E60D-8FAB-43D0-AE98-65896EC49DC1}.Debug|Any CPU.Build.0 = Debug|Any CPU 32 | {DA63E60D-8FAB-43D0-AE98-65896EC49DC1}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {DA63E60D-8FAB-43D0-AE98-65896EC49DC1}.Release|Any CPU.Build.0 = Release|Any CPU 34 | {C1D6C5E8-D7A9-4A81-92C1-57BD04D77056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 35 | {C1D6C5E8-D7A9-4A81-92C1-57BD04D77056}.Debug|Any CPU.Build.0 = Debug|Any CPU 36 | {C1D6C5E8-D7A9-4A81-92C1-57BD04D77056}.Release|Any CPU.ActiveCfg = Release|Any CPU 37 | {C1D6C5E8-D7A9-4A81-92C1-57BD04D77056}.Release|Any CPU.Build.0 = Release|Any CPU 38 | {9B7D9564-9756-4F86-AB70-0B73543C6F9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 39 | {9B7D9564-9756-4F86-AB70-0B73543C6F9F}.Debug|Any CPU.Build.0 = Debug|Any CPU 40 | {9B7D9564-9756-4F86-AB70-0B73543C6F9F}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {9B7D9564-9756-4F86-AB70-0B73543C6F9F}.Release|Any CPU.Build.0 = Release|Any CPU 42 | EndGlobalSection 43 | GlobalSection(SolutionProperties) = preSolution 44 | HideSolutionNode = FALSE 45 | EndGlobalSection 46 | GlobalSection(ExtensibilityGlobals) = postSolution 47 | SolutionGuid = {BF5D20E8-D770-4466-9CC8-8F2F88B799B9} 48 | EndGlobalSection 49 | EndGlobal 50 | -------------------------------------------------------------------------------- /Bimangle.ForgeAuthor.Samples.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | UV -------------------------------------------------------------------------------- /README-CHS.md: -------------------------------------------------------------------------------- 1 | 2 | [English Version](README.md) 3 | 4 | ---- 5 | 6 | # forge-author-samples 7 | 演示如何使用 ForgeAuthor 操作 Autodesk Forge Svf 离线模型 8 | 9 | ### 演示 1# - Inspector (完成) 10 | 11 | 12 | Inspector 演示了如何对 Autodesk Forge Svf 离线模型的属性数据执行读取、显示、编辑、导出等操作; 13 | 14 | ![Inspector Snapshot](docs/images/inspector1.png) 15 | 16 | 17 | ### 演示 2# - Merger (完成) 18 | 19 | 20 | Merger 演示了如何执行合模操作,即将多个 Autodesk Forge Svf 离线模型合并为一个. 21 | 22 | ![Merger Snapshot](docs/images/merger1.png) 23 | 24 | ![Merger Snapshot](docs/images/merger2.png) 25 | 26 | 27 | ### 演示 3# - Differ (完成) 28 | 29 | Differ 演示了如何对同一个模型的不同版本执行比较操作,然后将差异部分另存为一个差异模型,这个差异模型用不同的颜色表达增加、删除和修改状态的构件. 30 | 31 | >建议浏览差异模型时, 关掉“环境遮挡阴影”和“地面阴影”特性,从而获得最优视觉效果 32 | 33 | ![Differ Snapshot](docs/images/differ1.png) 34 | 35 | ![Differ Snapshot](docs/images/differ2.png) 36 | 37 | 38 | ### Demo 4# - ExtractBuildingShell (ready) 39 | 40 | 抽取一个建筑外壳并另存为新的 SVF 模型; 41 | 42 | 43 | ### Demo 5# - ConvertSvfToGltf (ready) 44 | 45 | 转换一个 *.svf/*.svfzip 模型到 glTF/glb 格式; 46 | 47 | 48 | ### 更多的演示例子会不断加入 ... 49 | 50 | ---- 51 | 52 | # ForgeAuthor 是什么? 53 | 54 | ForgeAuthor 是一个基于 .NET Framework 4.5 开发的类库, 它以面向对象的接口为您提供可以操作 Audesk Forge Svf 离线模型的 API, 就像我们读写 XML 或 JSON 数据那么简单. 55 | 56 | ForgeAuthor 包含两个主要组件: SvfDatabase 和 SvfDocument。 57 | 58 | SvfDatabase 和 SvfDocument 最大的区别就是 SvfDatabase 只能操作属性数据,而 SvfDocument 可以操作模型的所有内容. 59 | 60 | # ForgeAuthor 是免费的吗? 61 | ForgeAuthor 是商业软件, 但使用 SvfDatabase 执行读取和导出属性操作是完全免费的. 62 | 63 | ForgeAuthor 提供了一个 30 天的全功能评测期,评测期满后使用 SvfDatabase 执行读取和导出属性操作仍然是免费的,您可放心使用. 64 | 65 | # 如何购买授权? 66 | 67 | 请联系: 13525442399 (电话或微信) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [简体中文版本点这里](README-CHS.md) 3 | 4 | ---- 5 | 6 | # forge-author-samples 7 | Demonstrate how to use ForgeAuthor manipulate Autodesk Forge Svf model. 8 | 9 | ### Demo 1# - Inspector (ready) 10 | 11 | 12 | Inspector can read, display, modify, export and other operations on attribute data of Autodesk Forge Svf offline model. 13 | 14 | ![Inspector Snapshot](docs/images/inspector1.png) 15 | 16 | 17 | ### Demo 2# - Merger (ready) 18 | 19 | Merger can merge multiple Autodesk Forge Svf offline models to one. 20 | 21 | ![Merger Snapshot](docs/images/merger1.png) 22 | 23 | ![Merger Snapshot](docs/images/merger2.png) 24 | 25 | 26 | ### Demo 3# - Differ (ready) 27 | 28 | Differ can compare different versions of the same model, recognize the difference component, generate the diff model, and use different colors to identify the components that are added, deleted, and modified. 29 | 30 | >When you recommend browsing the difference model, turn off the "Ambient shadows" and "Ground shadow" feature to get the best visual effect 31 | 32 | ![Differ Snapshot](docs/images/differ1.png) 33 | 34 | ![Differ Snapshot](docs/images/differ2.png) 35 | 36 | 37 | ### Demo 4# - ExtractBuildingShell (ready) 38 | 39 | Extract a building's shell and save as a new svf model; 40 | 41 | 42 | ### Demo 5# - ConvertSvfToGltf (ready) 43 | 44 | Convert a *.svf/*.svfzip model to glTF/glb model; 45 | 46 | 47 | ### more demos will coming soon ... 48 | 49 | ---- 50 | 51 | # What is ForgeAuthor? 52 | 53 | ForgeAuthor is a .net library based on .net framework 4.5, it provides a nice object oriented way to manipulate the Audesk Forge Svf Model, as simple as manipulate XML or JSON. 54 | 55 | ForgeAuthor contains two major components, SvfDatabase and SvfDocument。 56 | 57 | The main difference between SvfDatabase and SvfDocument is that SvfDatabase only manipulates properties data, while SvfDocument can manipulate full data of the model. 58 | 59 | # Is ForgeAuthor free? 60 | ForgeAuthor is commercial software, but using SvfDatabase to read and export properties data is permanently and completely free. 61 | 62 | ForgeAuthor provides a 30-day full-functional trial period, but the free functionality of the ForgeAuthor after the trial period is still available. 63 | 64 | # How to purchase licenses? 65 | 66 | Please contact liuyongsheng@msn.com or bimangle@aliyun.com 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/images/differ1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/docs/images/differ1.png -------------------------------------------------------------------------------- /docs/images/differ2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/docs/images/differ2.png -------------------------------------------------------------------------------- /docs/images/inspector1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/docs/images/inspector1.png -------------------------------------------------------------------------------- /docs/images/merger1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/docs/images/merger1.png -------------------------------------------------------------------------------- /docs/images/merger2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bimangle/forge-author-samples/df9068e916febbe4ab178a24a7ccf18c9dc619e6/docs/images/merger2.png --------------------------------------------------------------------------------