tasks esm 1/2
This commit is contained in:
parent
877241608f
commit
3fa0bfb9f9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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>
|
||||
|
||||
@ -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()> _
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
BIN
packages/cad/sw/2025/tools/render/render/.vs/render/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
BIN
packages/cad/sw/2025/tools/render/render/.vs/render/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
packages/cad/sw/2025/tools/render/render/.vs/render/v17/.suo
Normal file
BIN
packages/cad/sw/2025/tools/render/render/.vs/render/v17/.suo
Normal file
Binary file not shown.
@ -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}"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
6
packages/cad/sw/2025/tools/render/render/App.config
Normal file
6
packages/cad/sw/2025/tools/render/render/App.config
Normal 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>
|
||||
26
packages/cad/sw/2025/tools/render/render/Module1.vb
Normal file
26
packages/cad/sw/2025/tools/render/render/Module1.vb
Normal 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
|
||||
13
packages/cad/sw/2025/tools/render/render/My Project/Application.Designer.vb
generated
Normal file
13
packages/cad/sw/2025/tools/render/render/My Project/Application.Designer.vb
generated
Normal 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
|
||||
|
||||
@ -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>
|
||||
@ -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")>
|
||||
62
packages/cad/sw/2025/tools/render/render/My Project/Resources.Designer.vb
generated
Normal file
62
packages/cad/sw/2025/tools/render/render/My Project/Resources.Designer.vb
generated
Normal 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
|
||||
@ -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>
|
||||
73
packages/cad/sw/2025/tools/render/render/My Project/Settings.Designer.vb
generated
Normal file
73
packages/cad/sw/2025/tools/render/render/My Project/Settings.Designer.vb
generated
Normal 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
|
||||
@ -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>
|
||||
Binary file not shown.
@ -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")>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
25
packages/cad/sw/2025/tools/render/render/render.sln
Normal file
25
packages/cad/sw/2025/tools/render/render/render.sln
Normal 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
|
||||
110
packages/cad/sw/2025/tools/render/render/render.vbproj
Normal file
110
packages/cad/sw/2025/tools/render/render/render.vbproj
Normal 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>
|
||||
48
packages/cad/sw/2025/tools/visualize/.gitignore
vendored
Normal file
48
packages/cad/sw/2025/tools/visualize/.gitignore
vendored
Normal 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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/v16/.suo
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/v16/.suo
Normal file
Binary file not shown.
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/v17/.suo
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/model-reader/v17/.suo
Normal file
Binary file not shown.
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/CopilotIndices/17.14.995.13737/CodeChunks.db
vendored
Normal file
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/CopilotIndices/17.14.995.13737/SemanticSymbols.db
vendored
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/CopilotIndices/17.14.995.13737/SemanticSymbols.db
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/v17/.suo
Normal file
BIN
packages/cad/sw/2025/tools/visualize/.vs/visualize/v17/.suo
Normal file
Binary file not shown.
@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
25
packages/cad/sw/2025/tools/visualize/Backup/model-reader.sln
Normal file
25
packages/cad/sw/2025/tools/visualize/Backup/model-reader.sln
Normal 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
|
||||
657
packages/cad/sw/2025/tools/visualize/Program.cs
Normal file
657
packages/cad/sw/2025/tools/visualize/Program.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
275
packages/cad/sw/2025/tools/visualize/UpgradeLog.htm
Normal file
275
packages/cad/sw/2025/tools/visualize/UpgradeLog.htm
Normal 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>
|
||||
275
packages/cad/sw/2025/tools/visualize/UpgradeLog2.htm
Normal file
275
packages/cad/sw/2025/tools/visualize/UpgradeLog2.htm
Normal 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>
|
||||
30
packages/cad/sw/2025/tools/visualize/model-reader.csproj
Normal file
30
packages/cad/sw/2025/tools/visualize/model-reader.csproj
Normal 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>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
packages/cad/sw/2025/tools/visualize/template/model1.SLDPRT
Normal file
BIN
packages/cad/sw/2025/tools/visualize/template/model1.SLDPRT
Normal file
Binary file not shown.
25
packages/cad/sw/2025/tools/visualize/visualize.sln
Normal file
25
packages/cad/sw/2025/tools/visualize/visualize.sln
Normal 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
|
||||
@ -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' \
|
||||
|
||||
@ -2,6 +2,12 @@
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
},
|
||||
{
|
||||
"path": "../commons"
|
||||
},
|
||||
{
|
||||
"path": "../cad"
|
||||
}
|
||||
],
|
||||
"settings": {}
|
||||
|
||||
16
packages/kbot/dist/.npmignore
vendored
16
packages/kbot/dist/.npmignore
vendored
@ -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
|
||||
92
packages/kbot/dist/0c550cfc34328e29d9df.js
vendored
92
packages/kbot/dist/0c550cfc34328e29d9df.js
vendored
File diff suppressed because one or more lines are too long
92
packages/kbot/dist/3ab7e05d10164fc409c7.js
vendored
92
packages/kbot/dist/3ab7e05d10164fc409c7.js
vendored
File diff suppressed because one or more lines are too long
151
packages/kbot/dist/401.main_node.js
vendored
151
packages/kbot/dist/401.main_node.js
vendored
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/***/ })
|
||||
|
||||
};
|
||||
;
|
||||
266
packages/kbot/dist/README.md
vendored
266
packages/kbot/dist/README.md
vendored
@ -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.
|
||||
92
packages/kbot/dist/a12ab9f9e1a5d45e0de8.js
vendored
92
packages/kbot/dist/a12ab9f9e1a5d45e0de8.js
vendored
File diff suppressed because one or more lines are too long
293
packages/kbot/dist/data/openai_models.json
vendored
293
packages/kbot/dist/data/openai_models.json
vendored
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
5717
packages/kbot/dist/data/openrouter_models.json
vendored
5717
packages/kbot/dist/data/openrouter_models.json
vendored
File diff suppressed because it is too large
Load Diff
322255
packages/kbot/dist/main_node.cjs
vendored
322255
packages/kbot/dist/main_node.cjs
vendored
File diff suppressed because one or more lines are too long
322277
packages/kbot/dist/main_node.js
vendored
322277
packages/kbot/dist/main_node.js
vendored
File diff suppressed because one or more lines are too long
1345
packages/kbot/dist/package-lock.json
generated
vendored
1345
packages/kbot/dist/package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
20
packages/kbot/dist/package.json
vendored
20
packages/kbot/dist/package.json
vendored
@ -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"
|
||||
}
|
||||
}
|
||||
BIN
packages/kbot/dist/win-64/cat.png
vendored
BIN
packages/kbot/dist/win-64/cat.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 MiB |
BIN
packages/kbot/dist/win-64/kbot.exe
vendored
BIN
packages/kbot/dist/win-64/kbot.exe
vendored
Binary file not shown.
1348
packages/kbot/dist/win-64/package-lock.json
generated
vendored
1348
packages/kbot/dist/win-64/package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
20
packages/kbot/dist/win-64/package.json
vendored
20
packages/kbot/dist/win-64/package.json
vendored
@ -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
Loading…
Reference in New Issue
Block a user