tasks esm 1/2

This commit is contained in:
babayaga 2026-01-28 12:28:45 +01:00
parent 877241608f
commit 3fa0bfb9f9
413 changed files with 657704 additions and 654135 deletions

View File

@ -0,0 +1,23 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\edrawings-api\\BatchExportPdf\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
}
]
}
]
}
]
}

View File

@ -0,0 +1,12 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\edrawings-api\\BatchExportPdf\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": []
}
]
}

View File

@ -11,7 +11,8 @@
<AssemblyName>ExportPdf</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Console</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -22,6 +23,7 @@
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ExportPdf.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -32,6 +34,7 @@
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ExportPdf.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
@ -101,6 +104,7 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>

View File

@ -22,7 +22,7 @@ Namespace My.Resources
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _

View File

@ -15,7 +15,7 @@ Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0"), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

View File

@ -0,0 +1,41 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\render\\render\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}|render.vbproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\render\\render\\module1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}",
"RelativeMoniker": "D:0:0:{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}|render.vbproj|solutionrelative:module1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Module1.vb",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\render\\render\\Module1.vb",
"RelativeDocumentMoniker": "Module1.vb",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\render\\render\\Module1.vb",
"RelativeToolTip": "Module1.vb",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAzAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003361|",
"WhenOpened": "2026-01-27T13:13:55.64Z",
"EditorCaption": ""
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
}
]
}
]
}
]
}

View File

@ -0,0 +1,12 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\render\\render\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": []
}
]
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -0,0 +1,26 @@
Dim swApp As SldWorks.SldWork
Dim testViz As IVisualizeAddin
Dim visualizeAddinMgr As IVisualizeAddinManager
Sub main()
' Get the Visualize add-in object
Set swApp = Application.SldWorks
Set testViz = swApp.GetAddInObject("SolidWorks.Visualize.Implementation.VisualizeAddin")
Set visualizeAddinMgr = testViz.GetAddinManager
' Set render options as needed
Set vizRenderOptions = visualizeAddinMgr.RenderOptions
vizRenderOptions.ImageFormat = ImageFormat_e.JPEG
vizRenderOptions.FrameCount = 1000
vizRenderOptions.Width = 800
vizRenderOptions.Height = 800
vizRenderOptions.JobName = "Toaster"
vizRenderOptions.OutputFolder = "E:\SOLIDWORKS Visualize Content\Images"
vizRenderOptions.DenoiserEnabled = False
' Render the model
Call visualizeAddinMgr.Render

View File

@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>2</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@ -0,0 +1,32 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("render")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("render")>
<Assembly: AssemblyCopyright("Copyright © 2026")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("3e57e2a1-f48f-41c4-bbd2-f6ec779ed2ae")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("render.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.render.My.MySettings
Get
Return Global.render.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -0,0 +1,7 @@
' <autogenerated/>
Option Strict Off
Option Explicit On
Imports System
Imports System.Reflection
<Assembly: Global.System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName:=".NET Framework 4.7.2")>

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36408.4 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "render", "render.vbproj", "{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F954474D-BE06-4E35-AF0D-D901D9EF91A9}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8D45F44C-D6D9-4EFB-AA37-41B93F46A037}</ProjectGuid>
<OutputType>Exe</OutputType>
<StartupObject>render.Module1</StartupObject>
<RootNamespace>render</RootNamespace>
<AssemblyName>render</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Console</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>render.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>render.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Module1.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@ -0,0 +1,48 @@
# Logs
logs
*.log
*.pdb
*.cache
bin
obj
npm-debug.log*
yarn.lock
yarn-error.log
credentials.json
gcreds.json
token.json
package-lock.json
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules
jspm_packages
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history

View File

@ -0,0 +1,98 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|solutionrelative:model-reader.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "model-reader.csproj",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj",
"RelativeDocumentMoniker": "model-reader.csproj",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj",
"RelativeToolTip": "model-reader.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAASAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2024-12-02T08:41:36.633Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "readme.txt",
"DocumentMoniker": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"ToolTip": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
"WhenOpened": "2024-12-02T08:40:49.367Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "readme.txt",
"DocumentMoniker": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"ToolTip": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
"WhenOpened": "2024-12-02T08:40:33.905Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "Microsoft.NET.EolTargetFrameworks.targets",
"DocumentMoniker": "C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"ToolTip": "C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"ViewState": "AgIAABgAAAAAAAAAAAAIwB8AAAA2AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|",
"WhenOpened": "2024-12-01T18:40:33.214Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAACwCAAAAAAAAAAASwDkCAAArAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-17T07:14:35.533Z",
"EditorCaption": ""
}
]
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|solutionrelative:model-reader.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "model-reader.csproj",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj",
"RelativeDocumentMoniker": "model-reader.csproj",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\model-reader.csproj",
"RelativeToolTip": "model-reader.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAASAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2024-12-02T08:41:36.633Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "readme.txt",
"DocumentMoniker": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"ToolTip": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.1\\readme.txt",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
"WhenOpened": "2024-12-02T08:40:49.367Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "readme.txt",
"DocumentMoniker": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"ToolTip": "C:\\Users\\zx\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\.nuget\\packages\\xarial.xcad.solidworks\\0.7.4\\readme.txt",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
"WhenOpened": "2024-12-02T08:40:33.905Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "Microsoft.NET.EolTargetFrameworks.targets",
"DocumentMoniker": "C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"ToolTip": "C:\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"RelativeToolTip": "..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\9.0.100\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.EolTargetFrameworks.targets",
"ViewState": "AgIAABgAAAAAAAAAAAAIwB8AAAA2AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|",
"WhenOpened": "2024-12-01T18:40:33.214Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAACwCAAAAAAAAAAASwDkCAAArAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-05-17T07:14:35.533Z",
"EditorCaption": ""
}
]
}
]
}
]
}

View File

@ -0,0 +1,37 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\visualize\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|c:\\users\\zx\\desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\visualize\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C5B995D9-D885-48EF-86A5-889B9E7BA643}|model-reader.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\visualize\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\visualize\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAAPwBAAAAAAAAAAAAAAgCAAArAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-27T12:55:19.429Z",
"EditorCaption": ""
}
]
}
]
}
]
}

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29613.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "model-reader", "model-reader.csproj", "{C5B995D9-D885-48EF-86A5-889B9E7BA643}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CB0F0252-EF89-4788-8A77-9887B2254C13}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,657 @@
using System;
using System.IO;
using Xarial.XCad.Documents;
using Xarial.XCad.Documents.Enums;
using Xarial.XCad.Enums;
using Xarial.XCad.SolidWorks;
using Xarial.XCad.SolidWorks.Documents;
using Xarial.XCad.SolidWorks.Enums;
using System.Data;
using System.Linq;
using Newtonsoft.Json;
using SolidWorks;
using System.Collections.Generic;
using SolidWorks.Interop.sldworks;
using CommandLine;
using SolidWorks.Interop.swconst;
using System.Text.RegularExpressions;
namespace model_reader
{
class Options
{
[Option('s', "source", Required = true, HelpText = "Input file path")]
public string Source { get; set; }
[Option('t', "target", Required = true, HelpText = "Output file path")]
public string Target { get; set; }
[Option('c', "configuration", Required = false, HelpText = "SolidWorks configuration name", Default = "Default")]
public string Configuration { get; set; }
[Option('p', "pipeName", Required = false, HelpText = "Named pipe name for IPC", Default = "osr-cad")]
public string PipeName { get; set; }
[Option('l', "logFilePath", Required = false, HelpText = "File path to redirect SolidWorks stdout", Default = "log.txt")]
public string LogFilePath { get; set; }
[Option('h', "hidden", Required = false, HelpText = "Hide Solidworks window", Default = "true")]
public string Hidden { get; set; }
[Option('t', "tree", Required = false, HelpText = "Dump Model Tree Data", Default = "false")]
public string Tree { get; set; }
[Option('f', "flags", Required = false, HelpText = "Document Open Flags", Default = DocumentState_e.ReadOnly | DocumentState_e.Hidden)]
public int flags{ get; set; }
[Option("swv", Required = false, HelpText = "Solidworks version, 30=2022, 31=2023, 32=2024, 33=2025", Default = 33)]
public int swv{ get; set; }
}
public class TreeItem
{
public string Name { get; set; }
public List<TreeItem> Children { get; set; }
public string Path { get; set; }
public string Parent { get; set; }
public Dictionary<string, Dictionary<string, string>> Properties { get; set; }
public Dictionary<string, double>Equations { get; set; }
public Dictionary<string, double>Mass { get; set; }
public Dictionary<string, double> Box { get; set; }
public Dictionary<string, string>Material { get; set; }
public Dictionary<string, string> States { get; set; }
public Dictionary<string, string> LaserParts { get; set; }
public bool IsSuppressed { get; set; }
public string activeConfiguration { get; set; }
}
class Program
{
public static Dictionary<string, string> GetPhysicalMaterials(ModelDoc2 modelDoc)
{
if (modelDoc == null)
{
return null;
}
Dictionary<string, string> materialDict = new Dictionary<string, string>();
try
{
// Check if the document is a part or assembly
if (modelDoc.GetType() == (int)swDocumentTypes_e.swDocPART)
{
PartDoc partDoc = (PartDoc)modelDoc;
string materialName = partDoc.GetMaterialPropertyName2("", out string materialDatabase);
materialDict["Material"] = materialName;
materialDict["Materials"] = materialDatabase;
}
else if (modelDoc.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY)
{
AssemblyDoc assemblyDoc = (AssemblyDoc)modelDoc;
object[] components = (object[])assemblyDoc.GetComponents(false);
foreach (Component2 component in components)
{
ModelDoc2 componentModel = (ModelDoc2)component.GetModelDoc2();
if (componentModel != null && componentModel.GetType() == (int)swDocumentTypes_e.swDocPART)
{
PartDoc partDoc = (PartDoc)componentModel;
string materialName = partDoc.GetMaterialPropertyName2("", out string materialDatabase);
materialDict[component.Name2] = materialName;
//materialDict[$"{component.Name2}-Materials"] = materialDatabase;
}
}
}
}catch(Exception ex)
{
Console.WriteLine("Error retrieving material: " + modelDoc.GetPathName() + " : " + ex.Message);
}
return materialDict;
}
public static Dictionary<string, string> GetStates(ModelDoc2 modelDoc)
{
Dictionary<string, string> states = new Dictionary<string, string>();
try
{
object oFeatures;
object oErrorCodes;
object oWarnings;
object[] Features = null;
int[] ErrorCodes = null;
bool[] Warnings = null;
bool boolstatus = false;
int i = 0;
int nbrWhatsWrong = 0;
Feature swFeature = default(Feature);
ModelDocExtension swModelDocExt = default(ModelDocExtension);
swModelDocExt = (ModelDocExtension)modelDoc.Extension;
nbrWhatsWrong = swModelDocExt.GetWhatsWrongCount();
if (nbrWhatsWrong > 0)
{
boolstatus = swModelDocExt.GetWhatsWrong(out oFeatures, out oErrorCodes, out oWarnings);
Features = (object[])oFeatures;
ErrorCodes = (int[])oErrorCodes;
Warnings = (bool[])oWarnings;
states["wrong"] = "" + nbrWhatsWrong;
states["errors"] = string.Join(" ", ErrorCodes);
states["warnings"] = string.Join(" ", Warnings);
List<string> Names = new List<string> { };
for (i = 0; i < Features.Length; i++)
{
swFeature = (Feature)Features[i];
Names.Add(swFeature.GetTypeName2());
}
states["features"] = string.Join(" | ", Names);
}
}
catch (Exception ex)
{
Console.WriteLine("Error retrieving states: " + modelDoc.GetPathName() + " : " + ex.Message);
}
return states;
}
public static Dictionary<string, string> GetLaserParts(ModelDoc2 modelDoc)
{
Dictionary<string, string> partsWithLaserProperty = new Dictionary<string, string>();
/*
if (modelDoc != null && modelDoc.GetType() == (int)swDocumentTypes_e.swDocPART)
{
PartDoc part = (PartDoc)modelDoc;
bool hasLaserProperty = false;
object[] bodies = (object[])part.GetBodies2((int)swBodyType_e.swAllBodies, false);
foreach (Body2 body in bodies)
{
object[] faces = (object[])body.GetFaces();
foreach (Face2 face in faces)
{
var facePropMgr = face.GetUserPropertyManager();
string valOut = "";
facePropMgr.Get4("laser", false, out valOut);
if (!string.IsNullOrEmpty(valOut))
{
hasLaserProperty = true;
break;
}
}
if (hasLaserProperty) break;
}
if (hasLaserProperty)
{
// partsWithLaserProperty[partPath] = modelDoc.GetPathName();
}
}*/
return partsWithLaserProperty;
}
public static Dictionary<string, double> GetMassProperties(ModelDoc2 modelDoc)
{
if (modelDoc == null)
{
return null;
}
Dictionary<string, double> massPropertiesDict = new Dictionary<string, double>();
try
{
MassProperty massProperty = modelDoc.Extension.CreateMassProperty();
massPropertiesDict["Mass"] = massProperty.Mass;
massPropertiesDict["Density"] = massProperty.Density;
massPropertiesDict["Volume"] = massProperty.Volume;
massPropertiesDict["SurfaceArea"] = massProperty.SurfaceArea;
double[] centerOfMass = (double[])massProperty.CenterOfMass;
massPropertiesDict["CenterOfMassX"] = centerOfMass[0];
massPropertiesDict["CenterOfMassY"] = centerOfMass[1];
massPropertiesDict["CenterOfMassZ"] = centerOfMass[2];
}
catch (Exception ex)
{
Console.WriteLine("Error retrieving mass properties: " + modelDoc.GetPathName() + " : " + ex.Message);
}
return massPropertiesDict;
}
public static Dictionary<string, double> GetBoundingBox(Component2 modelDoc)
{
if (modelDoc == null)
{
return null;
}
try
{
Dictionary<string, double> boundingBoxDict = new Dictionary<string, double>();
object bboxo = modelDoc.GetBox(false, false);
if (bboxo !=null && ! System.DBNull.Value.Equals(bboxo))
{
double[] boundingBox = (double[])bboxo;
if (boundingBox == null || boundingBox.Length != 6)
{
Console.WriteLine("Failed to retrieve the bounding box.");
return boundingBoxDict;
}
boundingBoxDict["MinX"] = (double)boundingBox[0];
boundingBoxDict["MinY"] = (double)boundingBox[1];
boundingBoxDict["MinZ"] = (double)boundingBox[2];
boundingBoxDict["MaxX"] = (double)boundingBox[3];
boundingBoxDict["MaxY"] = (double)boundingBox[4];
boundingBoxDict["MaxZ"] = (double)boundingBox[5];
return boundingBoxDict;
}
}catch(Exception e)
{
Console.WriteLine("Error retrieving bounding box: " + modelDoc.GetPathName() + " : " + e.Message);
}
return null;
}
public static Dictionary<string, double> GetEquations(ModelDoc2 modelDoc)
{
if (modelDoc == null)
{
return null;
}
Dictionary<string, double> equationDict = new Dictionary<string, double>();
try
{
EquationMgr equationMgr = default(EquationMgr);
equationMgr = (EquationMgr)modelDoc.GetEquationMgr();
int equationCount = equationMgr.GetCount();
for (int i = 0; i < equationCount; i++)
{
string equation = equationMgr.Equation[i];
string[] equationParts = equation.Split('=');
if (equationParts.Length == 2)
{
string name = equationParts[0].Trim();
string pattern = "\"([^\"]*)\"";
Regex regex = new Regex(pattern);
Match match = regex.Match(name);
if (match.Success)
{
name = match.Groups[1].Value;
}
double evalValue = equationMgr.get_Value(i);
equationDict[name] = evalValue;
}
}
}
catch (Exception e)
{
Console.WriteLine("Error retrieving equations: " + modelDoc.GetPathName() + " : " + e.Message);
}
return equationDict;
}
static void TraverseComponents(object[] components, List<TreeItem> parentList, Options options)
{
foreach (Component2 component in components)
{
if (component == null) continue;
TreeItem item = new TreeItem();
item.Name = component.Name2;
item.Path = component.GetPathName();
item.IsSuppressed = component.IsSuppressed();
ModelDoc2 model = (ModelDoc2)component.GetModelDoc2();
if (model != null)
{
item.Properties = getProperties2(model);
item.Equations = GetEquations(model);
item.Mass = GetMassProperties(model);
item.Material = GetPhysicalMaterials(model);
item.Box = GetBoundingBox(component);
item.States = GetStates(model);
}
object[] vChildComp = (object[])component.GetChildren();
if (vChildComp != null && vChildComp.Length > 0)
{
List<TreeItem> children = new List<TreeItem>();
TraverseComponents(vChildComp, children, options);
item.Children = children;
foreach (TreeItem child in children)
{
child.Parent = item.Path;
}
}
parentList.Add(item);
}
}
public class ComponentData
{
public string Name { get; set; }
public string Path { get; set; }
public bool IsSuppressed { get; set; }
}
public class AssemblyData
{
public List<ComponentData> Components { get; set; } = new List<ComponentData>();
}
public class Tree
{
public AssemblyData assembly;
public TreeItem root;
public Dictionary<string, Dictionary<string, string>> Configurations { get; set; }
}
public static AssemblyData GetAssemblyData(AssemblyDoc swAssembly)
{
var assemblyData = new AssemblyData();
ModelDoc2 m = (ModelDoc2)swAssembly;
object[] components = (object[])swAssembly.GetComponents(false);
foreach (object component in components)
{
const string FILE_PATH_COLUMN_NAME = "File Path";
var prpsTable = new DataTable();
prpsTable.Columns.Add(FILE_PATH_COLUMN_NAME);
Component2 comp = (Component2)component;
var compData = new ComponentData
{
Name = ((Component2)component).Name2,
Path = ((Component2)component).GetPathName(),
IsSuppressed = ((Component2)component).IsSuppressed()
};
assemblyData.Components.Add(compData);
}
return assemblyData;
}
static Dictionary<string, string> GetCustomProperties(IConfiguration configuration)
{
var customProperties = new Dictionary<string, string>();
var propertyManager = configuration.CustomPropertyManager as ICustomPropertyManager;
var propertyNames = propertyManager.GetNames() as object[];
if (propertyNames != null)
{
foreach (var propertyName in propertyNames)
{
var propName = propertyName.ToString();
var propValue = propertyManager.Get(propName).ToString();
string evaluated = "";
string value= "";
bool status = propertyManager.Get4(propName, false, out value, out evaluated);
customProperties.Add(propName, evaluated);
}
}
return customProperties;
}
static Dictionary<string, Dictionary<string, string>> getProperties2(ModelDoc2 swModel)
{
if (swModel == null)
{
return null;
}
var configurationsWithProperties = new Dictionary<string, Dictionary<string, string>>();
try
{
List<string> configurations = new List<string>();
SolidWorks.Interop.sldworks.ConfigurationManager swConfigMgr = swModel.ConfigurationManager;
object[] configNameArr = null;
configNameArr = (object[])swModel.GetConfigurationNames();
string configName = null;
SolidWorks.Interop.sldworks.Configuration swConfig = default(SolidWorks.Interop.sldworks.Configuration);
bool status = false;
int i = 0;
for (i = 0; i <= configNameArr.GetUpperBound(0); i++)
{
configName = (string)configNameArr[i];
swConfig = (SolidWorks.Interop.sldworks.Configuration)swModel.GetConfigurationByName(configName);
var customProperties = GetCustomProperties(swConfig);
configurationsWithProperties.Add(configName, customProperties);
}
}catch (Exception ex)
{
Console.WriteLine("Error retrieving properties2: " + swModel.GetPathName() + " : " + ex.Message);
}
try
{
bool globalProperties = true;
if (globalProperties)
{
CustomPropertyManager customPropertyManagerAll = swModel.Extension.CustomPropertyManager[""];
string[] propertyNamesAll = (string[])customPropertyManagerAll.GetNames();
if (propertyNamesAll != null)
{
var customProperties = new Dictionary<string, string>();
configurationsWithProperties.Add("Global", customProperties);
foreach (var propertyName in propertyNamesAll)
{
var propName = propertyName.ToString();
var propValue = customPropertyManagerAll.Get(propName).ToString();
customProperties.Add(propName, propValue);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error retrieving properties2 : " + swModel.GetPathName() + " : " + ex.Message);
}
/*
foreach (string propertyName in propertyNamesAll)
{
string propertyValue;
string resolvedValue;
bool wasResolved;
customPropertyManagerAll.Get4(propertyName, false, out propertyValue, out resolvedValue);
Console.WriteLine($"Property: {propertyName}, Value: {propertyValue}, Resolved Value: {resolvedValue}");
}*/
return configurationsWithProperties;
}
static TreeItem CreateAssemblyTreeJson(ModelDoc2 swModel,Options options)
{
AssemblyDoc swAssembly = (AssemblyDoc)swModel;
TreeItem root = new TreeItem();
try
{
root.Name = swModel.GetTitle();
root.Path = swModel.GetPathName();
root.Properties = getProperties2(swModel);
root.Equations = GetEquations(swModel);
root.Mass = GetMassProperties(swModel);
root.Material = GetPhysicalMaterials(swModel);
root.States = GetStates(swModel);
//root.IsSuppressed = ((Component2)swModel).IsSuppressed();
ConfigurationManager configMgr = swModel.ConfigurationManager;
Configuration activeConfig = configMgr.ActiveConfiguration;
root.activeConfiguration = activeConfig.Name;
List<TreeItem> children = new List<TreeItem>();
object[] components = (object[])swAssembly.GetComponents(false);
TraverseComponents(components, children, options);
root.Children = children;
}
catch (Exception ex)
{
Console.WriteLine("Error CreateAssemblyTreeJson: " + swModel.GetPathName() + " : " + ex.Message);
}
return root;
}
static Tree TreeMeta(ModelDoc2 swModel, Options options)
{
string targetJsonPath = options.Target.Replace(".json",".tree.json");
AssemblyDoc swAssembly = (AssemblyDoc)swModel;
AssemblyData assemblyData = GetAssemblyData(swAssembly);
Tree tree = new Tree();
tree.root = CreateAssemblyTreeJson(swModel, options);
tree.assembly = assemblyData;
tree.Configurations = getProperties2(swModel);
try
{
string json = JsonConvert.SerializeObject(tree, Formatting.Indented, new JsonConverter[] { new Newtonsoft.Json.Converters.StringEnumConverter() });
File.WriteAllText(targetJsonPath, json);
Console.WriteLine("<<Info::Serialized Tree to {0}>>", targetJsonPath);
}
catch (Exception ex)
{
Console.WriteLine("<<Error::Error - Writing JSON : {0}>>",ex.Message);
}
return tree;
}
static void Run(Options options)
{
int version = options.swv;
using (var app = SwApplicationFactory.Create((SwVersion_e)version, ApplicationState_e.Background))
{
var input = options.Source;
var output = options.Target;
var file = Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location));
var doc = (ISwDocument)app.Documents.Open(input, (DocumentState_e)options.flags);
ModelDoc2 swModel = (ModelDoc2)doc.Model;
if (!swModel.ShowConfiguration2(options.Configuration))
{
Console.WriteLine($"<<Warn::Failed to change configuration {input} : {options.Configuration}>>");
}
else
{
Console.WriteLine($"<<Info::Changed Configuration: {options.Configuration}>>");
}
const string FILE_PATH_COLUMN_NAME = "File Path";
var prpsTable = new DataTable();
prpsTable.Columns.Add(FILE_PATH_COLUMN_NAME);
var assm = (IXAssembly)doc;
var refDocs = assm.Configurations.Active.Components.Flatten().GroupBy(x =>
{
try
{
return x.Path;
}
catch
{
Console.WriteLine($"<<Error::Cant resolve path for: {x.Name }>>");
return "";
}
}).Where(x => !string.IsNullOrEmpty(x.Key)).Select(x => x.First().Document).Where(x => x.IsCommitted).ToList();
refDocs = refDocs.Prepend(assm).ToList();
foreach (var refDoc in refDocs)
{
if (refDoc.Path.Contains("IC~~"))
{
continue;
}
var row = prpsTable.NewRow();
row[FILE_PATH_COLUMN_NAME] = refDoc.Path;
//active props
foreach (var prp in refDoc.Configurations.Active.Properties)
{
try
{
if (prp.Value == null || String.IsNullOrEmpty(prp.Value.ToString()) || prp.Value == DBNull.Value)
{
continue;
}
}
catch (Exception ex)
{
Console.WriteLine($"<<Error::Unable to retrieve property: {prp.Name} : {ex.Message} >>");
continue;
}
var col = prpsTable.Columns[prp.Name];
if (col == null)
{
col = prpsTable.Columns.Add(prp.Name);
}
row[prp.Name] = prp.Value;
}
// all props
foreach (var prp in refDoc.Properties)
{
try
{
try
{
if (prp.Value == null || String.IsNullOrEmpty(prp.Value.ToString()) || prp.Value == DBNull.Value)
{
continue;
}
}
catch (Exception ex)
{
Console.WriteLine($"<<Error::Unable to retrieve property: {prp.Name} >>");
continue;
}
var col = prpsTable.Columns[prp.Name];
if (col == null)
{
col = prpsTable.Columns.Add(prp.Name);
}
}
catch
{
Console.WriteLine("<<Error::Error reading prop {0}>>", prp.Name);
}
}
prpsTable.Rows.Add(row);
}
try
{
string json = JsonConvert.SerializeObject(prpsTable, Formatting.Indented, new JsonConverter[] { new Newtonsoft.Json.Converters.StringEnumConverter() });
File.WriteAllText(output, json);
Console.WriteLine("<<Info::Serialized to {0}>>", output);
}
catch (Exception ex)
{
Console.WriteLine("<<Error::Error - Writing JSON : {0}>>", ex.Message);
}
TreeMeta(swModel, options);
doc.Close();
app.Close();
}
}
static void HandleParseErrors(System.Collections.Generic.IEnumerable<Error> errors)
{
Console.WriteLine("<<Error::Failed to parse command-line arguments.>>");
}
static void Main(string[] args)
{
Parser.Default.ParseArguments<Options>(args)
.WithParsed(options => Run(options))
.WithNotParsed(errors => HandleParseErrors(errors));
}
}
}

View File

@ -0,0 +1,10 @@
{
"profiles": {
"model-reader": {
"commandName": "Project",
"commandLineArgs": "--source=\"C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\tests\\drive\\400_Drive.SLDASM\" --target=\"C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\tests\\drive\\400_Drive2.json\"\r\n",
"workingDirectory": "C:\\Users\\zx\\Desktop\\polymech\\polymech-mono\\packages\\cad\\sw\\2025\\tools\\props\\bin\\Debug\\netcoreapp3.1",
"nativeDebugging": false
}
}
}

View File

@ -0,0 +1,275 @@
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
Migration Report
</title><style>
/* Body style, for the entire document */
body
{
background: #F3F3F4;
color: #1E1E1F;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
padding: 0;
margin: 0;
}
/* Header1 style, used for the main title */
h1
{
padding: 10px 0px 10px 10px;
font-size: 21pt;
background-color: #E2E2E2;
border-bottom: 1px #C1C1C2 solid;
color: #201F20;
margin: 0;
font-weight: normal;
}
/* Header2 style, used for "Overview" and other sections */
h2
{
font-size: 18pt;
font-weight: normal;
padding: 15px 0 5px 0;
margin: 0;
}
/* Header3 style, used for sub-sections, such as project name */
h3
{
font-weight: normal;
font-size: 15pt;
margin: 0;
padding: 15px 0 5px 0;
background-color: transparent;
}
/* Color all hyperlinks one color */
a
{
color: #1382CE;
}
/* Table styles */
table
{
border-spacing: 0 0;
border-collapse: collapse;
font-size: 10pt;
}
table th
{
background: #E7E7E8;
text-align: left;
text-decoration: none;
font-weight: normal;
padding: 3px 6px 3px 6px;
}
table td
{
vertical-align: top;
padding: 3px 6px 5px 5px;
margin: 0px;
border: 1px solid #E7E7E8;
background: #F7F7F8;
}
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
.localLink
{
color: #1E1E1F;
background: #EEEEED;
text-decoration: none;
}
.localLink:hover
{
color: #1382CE;
background: #FFFF99;
text-decoration: none;
}
/* Center text, used in the over views cells that contain message level counts */
.textCentered
{
text-align: center;
}
/* The message cells in message tables should take up all avaliable space */
.messageCell
{
width: 100%;
}
/* Padding around the content after the h1 */
#content
{
padding: 0px 12px 12px 12px;
}
/* The overview table expands to width, with a max width of 97% */
#overview table
{
width: auto;
max-width: 75%;
}
/* The messages tables are always 97% width */
#messages table
{
width: 97%;
}
/* All Icons */
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
{
min-width:18px;
min-height:18px;
background-repeat:no-repeat;
background-position:center;
}
/* Success icon encoded */
.IconSuccessEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
}
/* Information icon encoded */
.IconInfoEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
}
/* Warning icon encoded */
.IconWarningEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
}
/* Error icon encoded */
.IconErrorEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
}
</style><script type="text/javascript" language="javascript">
// Startup
// Hook up the the loaded event for the document/window, to linkify the document content
var startupFunction = function() { linkifyElement("messages"); };
if(window.attachEvent)
{
window.attachEvent('onload', startupFunction);
}
else if (window.addEventListener)
{
window.addEventListener('load', startupFunction, false);
}
else
{
document.addEventListener('load', startupFunction, false);
}
// Toggles the visibility of table rows with the specified name
function toggleTableRowsByName(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
if(!!currentName && currentName.indexOf(name) == 0)
{
var isVisible = allRows[i].style.display == '';
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
}
}
}
function scrollToFirstVisibleRow(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
var isVisible = allRows[i].style.display == '';
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
{
allRows[i].scrollIntoView(true);
return true;
}
}
return false;
}
// Linkifies the specified text content, replaces candidate links with html links
function linkify(text)
{
if(!text || 0 === text.length)
{
return text;
}
// Find http, https and ftp links and replace them with hyper links
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
return text.replace(urlLink, '<a href="$&">$&</a>') ;
}
// Linkifies the specified element by ID
function linkifyElement(id)
{
var element = document.getElementById(id);
if(!!element)
{
element.innerHTML = linkify(element.innerHTML);
}
}
function ToggleMessageVisibility(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
toggleTableRowsByName("MessageRowClass" + projectName);
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
}
function ScrollToFirstVisibleMessage(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
// First try the 'Show messages' row
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
{
// Failed to find a visible row for 'Show messages', try an actual message row
scrollToFirstVisibleRow('MessageRowClass' + projectName);
}
}
</script></head><body><h1 _locID="ConversionReport">
Migration Report - model-reader</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Project</th><th _locID="PathTableHeader">Path</th><th _locID="ErrorsTableHeader">Errors</th><th _locID="WarningsTableHeader">Warnings</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconWarningEncoded" /><td><strong><a href="#Solution"><span _locID="OverviewSolutionSpan">Solution</span></a></strong></td><td>model-reader.sln</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#SolutionWarning">1</a></td><td class="textCentered"><a href="#" onclick="ScrollToFirstVisibleMessage('Solution'); return false;">2</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#model-reader">model-reader</a></strong></td><td>model-reader.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2><div id="messages"><a name="Solution" /><h3 _locID="ProjectDisplayNameHeader">Solution</h3><table><tr id="SolutionHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="WarningRowClassSolution"><td class="IconWarningEncoded"><a name="SolutionWarning" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>Visual Studio needs to make non-functional changes to this project in order to enable the project to open in released versions of Visual Studio newer than Visual Studio 2010 SP1 without impacting project behavior.</span></td></tr><tr name="MessageRowHeaderShowSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="ShowAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Show 2 additional messages
</a></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>File successfully backed up as C:\Users\mc007\Desktop\osr\osr-cad\sw\tools\props\Backup\model-reader.sln</span></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>Solution migrated successfully</span></td></tr><tr style="display: none" name="MessageRowHeaderHideSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="HideAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Hide 2 additional messages
</a></td></tr></table><a name="model-reader" /><h3>model-reader</h3><table><tr id="model-readerHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">model-reader logged no messages.
</td></tr></table></div></div></body></html>

View File

@ -0,0 +1,275 @@
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
Migration Report
</title><style>
/* Body style, for the entire document */
body
{
background: #F3F3F4;
color: #1E1E1F;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
padding: 0;
margin: 0;
}
/* Header1 style, used for the main title */
h1
{
padding: 10px 0px 10px 10px;
font-size: 21pt;
background-color: #E2E2E2;
border-bottom: 1px #C1C1C2 solid;
color: #201F20;
margin: 0;
font-weight: normal;
}
/* Header2 style, used for "Overview" and other sections */
h2
{
font-size: 18pt;
font-weight: normal;
padding: 15px 0 5px 0;
margin: 0;
}
/* Header3 style, used for sub-sections, such as project name */
h3
{
font-weight: normal;
font-size: 15pt;
margin: 0;
padding: 15px 0 5px 0;
background-color: transparent;
}
/* Color all hyperlinks one color */
a
{
color: #1382CE;
}
/* Table styles */
table
{
border-spacing: 0 0;
border-collapse: collapse;
font-size: 10pt;
}
table th
{
background: #E7E7E8;
text-align: left;
text-decoration: none;
font-weight: normal;
padding: 3px 6px 3px 6px;
}
table td
{
vertical-align: top;
padding: 3px 6px 5px 5px;
margin: 0px;
border: 1px solid #E7E7E8;
background: #F7F7F8;
}
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
.localLink
{
color: #1E1E1F;
background: #EEEEED;
text-decoration: none;
}
.localLink:hover
{
color: #1382CE;
background: #FFFF99;
text-decoration: none;
}
/* Center text, used in the over views cells that contain message level counts */
.textCentered
{
text-align: center;
}
/* The message cells in message tables should take up all avaliable space */
.messageCell
{
width: 100%;
}
/* Padding around the content after the h1 */
#content
{
padding: 0px 12px 12px 12px;
}
/* The overview table expands to width, with a max width of 97% */
#overview table
{
width: auto;
max-width: 75%;
}
/* The messages tables are always 97% width */
#messages table
{
width: 97%;
}
/* All Icons */
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
{
min-width:18px;
min-height:18px;
background-repeat:no-repeat;
background-position:center;
}
/* Success icon encoded */
.IconSuccessEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
}
/* Information icon encoded */
.IconInfoEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
}
/* Warning icon encoded */
.IconWarningEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
}
/* Error icon encoded */
.IconErrorEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
}
</style><script type="text/javascript" language="javascript">
// Startup
// Hook up the the loaded event for the document/window, to linkify the document content
var startupFunction = function() { linkifyElement("messages"); };
if(window.attachEvent)
{
window.attachEvent('onload', startupFunction);
}
else if (window.addEventListener)
{
window.addEventListener('load', startupFunction, false);
}
else
{
document.addEventListener('load', startupFunction, false);
}
// Toggles the visibility of table rows with the specified name
function toggleTableRowsByName(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
if(!!currentName && currentName.indexOf(name) == 0)
{
var isVisible = allRows[i].style.display == '';
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
}
}
}
function scrollToFirstVisibleRow(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
var isVisible = allRows[i].style.display == '';
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
{
allRows[i].scrollIntoView(true);
return true;
}
}
return false;
}
// Linkifies the specified text content, replaces candidate links with html links
function linkify(text)
{
if(!text || 0 === text.length)
{
return text;
}
// Find http, https and ftp links and replace them with hyper links
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
return text.replace(urlLink, '<a href="$&">$&</a>') ;
}
// Linkifies the specified element by ID
function linkifyElement(id)
{
var element = document.getElementById(id);
if(!!element)
{
element.innerHTML = linkify(element.innerHTML);
}
}
function ToggleMessageVisibility(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
toggleTableRowsByName("MessageRowClass" + projectName);
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
}
function ScrollToFirstVisibleMessage(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
// First try the 'Show messages' row
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
{
// Failed to find a visible row for 'Show messages', try an actual message row
scrollToFirstVisibleRow('MessageRowClass' + projectName);
}
}
</script></head><body><h1 _locID="ConversionReport">
Migration Report - model-reader</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Project</th><th _locID="PathTableHeader">Path</th><th _locID="ErrorsTableHeader">Errors</th><th _locID="WarningsTableHeader">Warnings</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconWarningEncoded" /><td><strong><a href="#Solution"><span _locID="OverviewSolutionSpan">Solution</span></a></strong></td><td>model-reader.sln</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#SolutionWarning">1</a></td><td class="textCentered"><a href="#" onclick="ScrollToFirstVisibleMessage('Solution'); return false;">2</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#model-reader">model-reader</a></strong></td><td>model-reader.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2><div id="messages"><a name="Solution" /><h3 _locID="ProjectDisplayNameHeader">Solution</h3><table><tr id="SolutionHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="WarningRowClassSolution"><td class="IconWarningEncoded"><a name="SolutionWarning" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>Visual Studio needs to make non-functional changes to this project in order to enable the project to open in released versions of Visual Studio newer than Visual Studio 2010 SP1 without impacting project behavior.</span></td></tr><tr name="MessageRowHeaderShowSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="ShowAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Show 2 additional messages
</a></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>File successfully backed up as C:\Users\mc007\Desktop\osr\osr-cad\sw\2022\tools\props\Backup1\model-reader.sln</span></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>model-reader.sln:
</strong><span>Solution migrated successfully</span></td></tr><tr style="display: none" name="MessageRowHeaderHideSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="HideAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Hide 2 additional messages
</a></td></tr></table><a name="model-reader" /><h3>model-reader</h3><table><tr id="model-readerHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">model-reader logged no messages.
</td></tr></table></div></div></body></html>

View File

@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>model_reader</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>C:\Users\mc007\Desktop\osr\osr-cad\sw\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath></OutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Jering.Javascript.NodeJS" Version="6.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="xarial.xcad.solidworks" Version="0.7.1" />
</ItemGroup>
<ItemGroup>
<None Update="template\model1.SLDPRT">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34728.123
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "model-reader", "model-reader.csproj", "{C5B995D9-D885-48EF-86A5-889B9E7BA643}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5B995D9-D885-48EF-86A5-889B9E7BA643}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CB0F0252-EF89-4788-8A77-9887B2254C13}
EndGlobalSection
EndGlobal

View File

@ -1,4 +1,4 @@
osr-cli each --main='netsh advfirewall firewall add rule name=sw dir=out action=block program=\"${KEY}\" enable=yes' \
pm-cli each --main='netsh advfirewall firewall add rule name=sw dir=out action=block program=\"${KEY}\" enable=yes' \
--verbs=${KEY} \
--cwd='C:\\Program Files\\SOLIDWORKS Corp' \
--list='**/*.exe' \

View File

@ -2,6 +2,12 @@
"folders": [
{
"path": "."
},
{
"path": "../commons"
},
{
"path": "../cad"
}
],
"settings": {}

View File

@ -1,16 +0,0 @@
# Ignore node_modules directory
node_modules/
# Ignore log files
*.log
# Ignore temporary files
*.tmp
# Ignore coverage reports
coverage/
.kbot
*.exe
package-lock.json
tests

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,151 +0,0 @@
#!/usr/bin/env node
exports.id = 401;
exports.ids = [401];
exports.modules = {
/***/ 45157:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
if (!globalThis.DOMException) {
try {
const { MessageChannel } = __webpack_require__(28167),
port = new MessageChannel().port1,
ab = new ArrayBuffer()
port.postMessage(ab, [ab, ab])
} catch (err) {
err.constructor.name === 'DOMException' && (
globalThis.DOMException = err.constructor
)
}
}
module.exports = globalThis.DOMException
/***/ }),
/***/ 26401:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
"use strict";
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
fileFromPath: () => (/* binding */ fileFromPath)
});
// UNUSED EXPORTS: fileFromPathSync, isFile
// EXTERNAL MODULE: external "fs"
var external_fs_ = __webpack_require__(79896);
// EXTERNAL MODULE: external "path"
var external_path_ = __webpack_require__(16928);
// EXTERNAL MODULE: ./node_modules/node-domexception/index.js
var node_domexception = __webpack_require__(45157);
// EXTERNAL MODULE: ./node_modules/formdata-node/lib/esm/File.js
var File = __webpack_require__(71831);
;// ./node_modules/formdata-node/lib/esm/isPlainObject.js
const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());
function isPlainObject(value) {
if (getType(value) !== "object") {
return false;
}
const pp = Object.getPrototypeOf(value);
if (pp === null || pp === undefined) {
return true;
}
const Ctor = pp.constructor && pp.constructor.toString();
return Ctor === Object.toString();
}
/* harmony default export */ const esm_isPlainObject = (isPlainObject);
// EXTERNAL MODULE: ./node_modules/formdata-node/lib/esm/isFile.js
var isFile = __webpack_require__(80699);
;// ./node_modules/formdata-node/lib/esm/fileFromPath.js
var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _FileFromPath_path, _FileFromPath_start;
const MESSAGE = "The requested file could not be read, "
+ "typically due to permission problems that have occurred after a reference "
+ "to a file was acquired.";
class FileFromPath {
constructor(input) {
_FileFromPath_path.set(this, void 0);
_FileFromPath_start.set(this, void 0);
__classPrivateFieldSet(this, _FileFromPath_path, input.path, "f");
__classPrivateFieldSet(this, _FileFromPath_start, input.start || 0, "f");
this.name = (0,external_path_.basename)(__classPrivateFieldGet(this, _FileFromPath_path, "f"));
this.size = input.size;
this.lastModified = input.lastModified;
}
slice(start, end) {
return new FileFromPath({
path: __classPrivateFieldGet(this, _FileFromPath_path, "f"),
lastModified: this.lastModified,
size: end - start,
start
});
}
async *stream() {
const { mtimeMs } = await external_fs_.promises.stat(__classPrivateFieldGet(this, _FileFromPath_path, "f"));
if (mtimeMs > this.lastModified) {
throw new node_domexception(MESSAGE, "NotReadableError");
}
if (this.size) {
yield* (0,external_fs_.createReadStream)(__classPrivateFieldGet(this, _FileFromPath_path, "f"), {
start: __classPrivateFieldGet(this, _FileFromPath_start, "f"),
end: __classPrivateFieldGet(this, _FileFromPath_start, "f") + this.size - 1
});
}
}
get [(_FileFromPath_path = new WeakMap(), _FileFromPath_start = new WeakMap(), Symbol.toStringTag)]() {
return "File";
}
}
function createFileFromPath(path, { mtimeMs, size }, filenameOrOptions, options = {}) {
let filename;
if (esm_isPlainObject(filenameOrOptions)) {
[options, filename] = [filenameOrOptions, undefined];
}
else {
filename = filenameOrOptions;
}
const file = new FileFromPath({ path, size, lastModified: mtimeMs });
if (!filename) {
filename = file.name;
}
return new File/* File */.Z([file], filename, {
...options, lastModified: file.lastModified
});
}
function fileFromPathSync(path, filenameOrOptions, options = {}) {
const stats = statSync(path);
return createFileFromPath(path, stats, filenameOrOptions, options);
}
async function fileFromPath(path, filenameOrOptions, options) {
const stats = await external_fs_.promises.stat(path);
return createFileFromPath(path, stats, filenameOrOptions, options);
}
/***/ })
};
;

View File

@ -1,266 +0,0 @@
# @plastichub/kbot
AI-powered command-line tool for code modifications and project management that supports multiple AI models and routers.
## Overview
Code-bot is a powerful CLI tool that helps developers automate code modifications, handle project management tasks, and integrate with various AI models for intelligent code and content assistance.
## Quick Start
### Installation Steps
KBot requires Node.js to run. It's recommended to use Node.js version 18 or higher.
1. Visit the official [Node.js website](https://nodejs.org/)
2. Download the LTS (Long Term Support) version for your operating system
3. Follow the installation wizard
4. Verify installation by opening a terminal and running:
```bash
node --version
npm --version
```
### API Keys
KBot supports both OpenRouter and OpenAI APIs. You'll need at least one of these set up.
#### OpenRouter API (Recommended)
1. Visit [OpenRouter](https://openrouter.ai/)
2. Sign up for an account
3. Navigate to the API Keys section
4. Create a new API key
#### OpenAI API (Optional)
1. Go to [OpenAI's platform](https://platform.openai.com/)
2. Create an account or sign in
3. Navigate to API keys section
4. Create a new secret key
### Installation using Node NPM package manager
```bash
npm install -g @plastichub/kbot
```
## Configuration
### API Keys Setup
Create configuration at `$HOME/.osr/.config.json` (or export OSR_CONFIG with path to config.json):
```json
{
"openrouter": {
"key": "your-openrouter-key"
},
"openai": {
"key": "your-openai-key"
},
"email": {
"newsletter": {
"host": "host.org",
"port": 465,
"debug": true,
"transactionLog": true,
"auth": {
"user": "foo@bar.com",
"pass": "pass"
}
}
},
"google": {
"cse": "custom search engine id",
"api_key": "google custom search api key"
},
"serpapi": {
"key": "your SerpAPI key (optional, used for web searches(places, google maps))"
},
"deepseek": {
"key": "your SerpAPI key (optional, used for web searches(places, google maps))"
},
}
```
### Preferences Setup
Optionally, create `.kbot/preferences.md` in your project directory to customize AI interactions:
```markdown
## My Preferences
Gender : male
Location : New York, USA (eg: `send me all saunas next to me`)
Language : English
Occupation : software developer, Typescript
Age : 30+
## Contacts
My email address : example@email.com (eg: `send me latest hacker news`)
My wife's email address ("Anne") : example@email.com (eg: `send email to my wife, with latest local news')
## Content
When creating content
- always Markdown
- always add links
- when sending emails, always add 'Best regards, [Your Name]'
```
# Main Commands
The primary way to interact with `kbot` for processing tasks is by invoking it with a prompt and various options. While often used implicitly, this typically corresponds to the `run` command.
## Running Tasks
```bash
kbot run [options...] "Your prompt here..."
# or simply (if 'run' is the default):
kbot [options...] "Your prompt here..."
```
This command executes the main AI processing pipeline based on the provided prompt and options. Key aspects controlled by options include:
* **Input:** Specified via `--include` (files, directories, web URLs), `--path`.
* **Task:** Defined by the `--prompt`.
* **Behavior:** Controlled by `--mode` (e.g., `tools`, `completion`).
* **Output:** Directed using `--dst` or `--output`.
* **Model & API:** Configured with `--model`, `--router`, `--api_key`, etc.
Refer to [Parameters](./parameters.md) and [Modes](./modes.md) for detailed options.
## Utility Commands
Other potential utility commands might include:
* `kbot fetch`: Fetch updated information, such as the latest available models.
* `kbot init`: Initialize a directory or project for use with `kbot` (e.g., create default config files).
* `kbot help-md`: Generate extended help documentation in Markdown format.
* `kbot examples`: Show example usage patterns.
*(Note: Availability and exact behavior of utility commands may vary.)*
# Command Line Parameters
This document describes the command line parameters available for `kbot`.
**Note:** Many parameters support environment variable substitution (e.g., `${VAR_NAME}`).
## Core Parameters
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `prompt` | The main instruction or question for the AI. Can be a string, a file path (e.g., `file:./my_prompt.md`), or an environment variable. | - | Yes (or implied by context) |
| `model` | AI model ID to use for processing (e.g., `openai/gpt-4o`). See available models via helper functions or router documentation. | Depends on router/config | No |
| `router` | The API provider to use. | `openrouter` | No |
| `mode` | The operational mode. See [Modes](./modes.md) for details. | `tools` | No |
## Input & File Selection
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `path` | Target directory for local file operations or context. | `.` | No |
| `include` | Specify input files or content. Accepts comma-separated glob patterns (e.g., `src/**/*.ts`), file paths, directory paths, or **web URLs** (e.g., `https://example.com/page`). | `[]` | No |
| `exclude` | Comma-separated glob patterns or paths to exclude from processing (e.g., `src/**/*.test.ts,temp/`). | `[]` | No |
| `globExtension` | Specify a glob extension behavior to find related files. Available presets: `match-cpp`. Also accepts a custom glob pattern with variables like `${SRC_DIR}`, `${SRC_NAME}`, `${SRC_EXT}` (e.g., `"${SRC_DIR}/${SRC_NAME}*.h"` to find headers for a .cpp file). | - | No |
| `query` | JSONPath query to extract specific data from input objects (often used with structured input files). | `null` | No |
## Output & Formatting
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `output` | Output path for modified files (primarily for `tools` mode operations like refactoring). | - | No |
| `dst` | Destination path/filename for the main result (primarily for `completion` or `assistant` mode). Supports `${MODEL_NAME}` and `${ROUTER}` substitutions. | - | No |
| `format` | Defines the desired structure for the AI's output. Can be a Zod schema object, a Zod schema string, a JSON schema string, or a path to a JSON schema file (e.g., `file:./schema.json`). Ensures the output conforms to the specified structure. | - | No |
| `filters` | Post-processing filters applied to the output (primarily `completion` mode with `--dst`). Can be a comma-separated string of filter names (e.g., `unwrapMarkdown,trim`). | `''` | No |
## Tool Usage
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `tools` | Comma-separated list of tool names or paths to custom tool files to enable. | (List of default tools) | No |
| `disable` | Comma-separated list of tool *categories* to disable (e.g., `filesystem,git`). | `[]` | No |
| `disableTools` | Comma-separated list of specific tool *names* to disable. | `[]` | No |
## Iteration & Advanced Control
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `each` | Iterate the task over multiple items. Accepts a GLOB pattern, path to a JSON file (array), or comma-separated strings. The current item is available as the `${ITEM}` variable in other parameters (e.g., `--dst="${ITEM}-output.md"`). Can be used to test different models (e.g., `--each="openai/gpt-3.5-turbo,openai/gpt-4o"`). | - | No |
| `variables` | Define custom key-value variables for use in prompts or other parameters (e.g., `--variables.PROJECT_NAME=MyProject`). Access via `${variableName}`. | `{}` | No |
## Configuration & Authentication
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `api_key` | Explicit API key for the selected router. Overrides keys from config files. | - | No |
| `baseURL` | Custom base URL for the API endpoint (e.g., for local LLMs via Ollama). Set automatically for known routers or can be specified directly. | - | No |
| `config` | Path to a JSON configuration file containing API keys and potentially other settings. | - | No |
| `profile` | Path to a profile file (JSON or .env format) for loading environment-specific variables. | - | No |
| `env` | Specifies the environment section to use within the profile file. | `default` | No |
| `preferences` | Path to a preferences file (e.g., containing user details like location, email). Used to provide context to the AI. | (System-specific default, often `~/.kbot/Preferences`) | No |
## Debugging & Logging
| Parameter | Description | Default | Required |
|-----------|-------------|---------|----------|
| `logLevel` | Logging verbosity level (e.g., 0=error, 4=debug). | `4` | No |
| `logs` | Directory to store log files and temporary outputs (like `params.json`). | `./logs` | No |
| `dry` | Perform a dry run: log parameters and configurations without executing the AI request. | `false` | No |
| `dump` | Path to generate a script file representing the current command invocation. | - | No |
# Advanced Topics
This section covers more advanced usage patterns and concepts.
## Processing Multiple Items (`--each`)
Instead of relying on external scripting for batch processing, `kbot` provides the built-in `--each` parameter. This allows you to iterate a task over multiple inputs efficiently.
**How it Works:**
The `--each` parameter accepts:
* A comma-separated list of strings (e.g., `--each="file1.txt,file2.txt"`).
* A file path to a JSON file containing an array of strings.
* A GLOB pattern matching multiple files (e.g., `--each="./src/**/*.ts"`).
* A list of model IDs to test a prompt against different models (e.g., `--each="openai/gpt-4o,anthropic/claude-3.5-sonnet"`).
**Using the `${ITEM}` Variable:**
Within the loop initiated by `--each`, the current item being processed is available as the `${ITEM}` variable. You can use this variable in other parameters, such as `--dst`, `--include`, or within the `--prompt` itself.
**Example: Generating Documentation for Multiple Files**
```bash
kbot --each "./src/modules/*.ts" \
--dst "./docs/api/${ITEM}.md" \
--prompt "Generate API documentation in Markdown format for the module defined in ${ITEM}"
```
This command will:
1. Find all `.ts` files in `./src/modules/`.
2. For each file (e.g., `moduleA.ts`):
* Set `${ITEM}` to the file path (`./src/modules/moduleA.ts`).
* Execute `kbot` with the prompt, including the specific file via `${ITEM}`.
* Save the output to `./docs/api/./src/modules/moduleA.ts.md` (Note: path handling might vary).
Refer to the [Examples](./examples.md#iterating-with---each) for more use cases.
## Choosing a Transformation Method: `transform` vs. `createIterator`
When transforming data structures (often JSON) using LLMs, you have two primary approaches:
1. **`transform` Helper Function:**
* **Pros:** Simple, minimal setup, good for basic field transformations.
* **Cons:** Less control over network, caching, logging details.
* **Use Case:** Quickly applying straightforward transformations to data fields without needing deep customization.
2. **`createIterator` Factory:**
* **Pros:** Full control over network options (retries, concurrency), caching (namespace, expiration), logging, custom transformer logic, and callbacks (`onTransform`, `onTransformed`).
* **Cons:** More verbose setup required.
* **Use Case:** Complex transformations requiring fine-tuned control over the entire process, advanced caching strategies, or integration with custom logging/transformation logic.
Consult the [Iterator Documentation](./iterator.md) for detailed explanations and code examples of both methods.

File diff suppressed because one or more lines are too long

View File

@ -1,293 +0,0 @@
{
"timestamp": 1740495820665,
"models": [
{
"id": "gpt-4o-mini-audio-preview-2024-12-17",
"object": "model",
"created": 1734115920,
"owned_by": "system"
},
{
"id": "gpt-4-turbo-2024-04-09",
"object": "model",
"created": 1712601677,
"owned_by": "system"
},
{
"id": "dall-e-3",
"object": "model",
"created": 1698785189,
"owned_by": "system"
},
{
"id": "dall-e-2",
"object": "model",
"created": 1698798177,
"owned_by": "system"
},
{
"id": "gpt-4o-audio-preview-2024-10-01",
"object": "model",
"created": 1727389042,
"owned_by": "system"
},
{
"id": "gpt-4o-audio-preview",
"object": "model",
"created": 1727460443,
"owned_by": "system"
},
{
"id": "o1-mini-2024-09-12",
"object": "model",
"created": 1725648979,
"owned_by": "system"
},
{
"id": "gpt-4o-mini-realtime-preview-2024-12-17",
"object": "model",
"created": 1734112601,
"owned_by": "system"
},
{
"id": "o1-preview-2024-09-12",
"object": "model",
"created": 1725648865,
"owned_by": "system"
},
{
"id": "o1-mini",
"object": "model",
"created": 1725649008,
"owned_by": "system"
},
{
"id": "o1-preview",
"object": "model",
"created": 1725648897,
"owned_by": "system"
},
{
"id": "gpt-4o-mini-realtime-preview",
"object": "model",
"created": 1734387380,
"owned_by": "system"
},
{
"id": "whisper-1",
"object": "model",
"created": 1677532384,
"owned_by": "openai-internal"
},
{
"id": "gpt-4-turbo",
"object": "model",
"created": 1712361441,
"owned_by": "system"
},
{
"id": "gpt-4o-mini-audio-preview",
"object": "model",
"created": 1734387424,
"owned_by": "system"
},
{
"id": "gpt-4o-realtime-preview-2024-10-01",
"object": "model",
"created": 1727131766,
"owned_by": "system"
},
{
"id": "gpt-4",
"object": "model",
"created": 1687882411,
"owned_by": "openai"
},
{
"id": "babbage-002",
"object": "model",
"created": 1692634615,
"owned_by": "system"
},
{
"id": "gpt-4-0125-preview",
"object": "model",
"created": 1706037612,
"owned_by": "system"
},
{
"id": "gpt-4-turbo-preview",
"object": "model",
"created": 1706037777,
"owned_by": "system"
},
{
"id": "tts-1-hd-1106",
"object": "model",
"created": 1699053533,
"owned_by": "system"
},
{
"id": "gpt-4o-audio-preview-2024-12-17",
"object": "model",
"created": 1734034239,
"owned_by": "system"
},
{
"id": "gpt-4o",
"object": "model",
"created": 1715367049,
"owned_by": "system"
},
{
"id": "gpt-4o-2024-08-06",
"object": "model",
"created": 1722814719,
"owned_by": "system"
},
{
"id": "gpt-4o-2024-11-20",
"object": "model",
"created": 1739331543,
"owned_by": "system"
},
{
"id": "tts-1-hd",
"object": "model",
"created": 1699046015,
"owned_by": "system"
},
{
"id": "gpt-4o-2024-05-13",
"object": "model",
"created": 1715368132,
"owned_by": "system"
},
{
"id": "tts-1",
"object": "model",
"created": 1681940951,
"owned_by": "openai-internal"
},
{
"id": "tts-1-1106",
"object": "model",
"created": 1699053241,
"owned_by": "system"
},
{
"id": "davinci-002",
"object": "model",
"created": 1692634301,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo-1106",
"object": "model",
"created": 1698959748,
"owned_by": "system"
},
{
"id": "omni-moderation-2024-09-26",
"object": "model",
"created": 1732734466,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo-instruct",
"object": "model",
"created": 1692901427,
"owned_by": "system"
},
{
"id": "chatgpt-4o-latest",
"object": "model",
"created": 1723515131,
"owned_by": "system"
},
{
"id": "gpt-4o-mini-2024-07-18",
"object": "model",
"created": 1721172717,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo-instruct-0914",
"object": "model",
"created": 1694122472,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo-0125",
"object": "model",
"created": 1706048358,
"owned_by": "system"
},
{
"id": "gpt-4o-mini",
"object": "model",
"created": 1721172741,
"owned_by": "system"
},
{
"id": "gpt-4o-realtime-preview-2024-12-17",
"object": "model",
"created": 1733945430,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "gpt-4o-realtime-preview",
"object": "model",
"created": 1727659998,
"owned_by": "system"
},
{
"id": "gpt-3.5-turbo-16k",
"object": "model",
"created": 1683758102,
"owned_by": "openai-internal"
},
{
"id": "text-embedding-3-small",
"object": "model",
"created": 1705948997,
"owned_by": "system"
},
{
"id": "gpt-4-1106-preview",
"object": "model",
"created": 1698957206,
"owned_by": "system"
},
{
"id": "text-embedding-ada-002",
"object": "model",
"created": 1671217299,
"owned_by": "openai-internal"
},
{
"id": "omni-moderation-latest",
"object": "model",
"created": 1731689265,
"owned_by": "system"
},
{
"id": "gpt-4-0613",
"object": "model",
"created": 1686588896,
"owned_by": "openai"
},
{
"id": "text-embedding-3-large",
"object": "model",
"created": 1705953180,
"owned_by": "system"
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1345
packages/kbot/dist/package-lock.json generated vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +0,0 @@
{
"name": "@plastichub/kbot",
"version": "1.1.60",
"main": "main_node.js",
"author": "",
"license": "ISC",
"description": "",
"bin": {
"kbot-r": "./main_node.js"
},
"dependencies": {
"node-emoji": "^2.2.0"
},
"publishConfig": {
"access": "public"
},
"optionalDependencies": {
"puppeteer": "^23.11.1"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +0,0 @@
{
"name": "@plastichub/kbot",
"version": "1.1.51",
"main": "main_node.js",
"author": "",
"license": "ISC",
"description": "",
"bin": {
"kbot-r": "./main_node.js"
},
"dependencies": {
"node-emoji": "^2.2.0"
},
"publishConfig": {
"access": "public"
},
"optionalDependencies": {
"puppeteer": "^23.11.1"
}
}

Some files were not shown because too many files have changed in this diff Show More