summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerghei Cebotari <serghei@cebotari.ru>2023-09-20 13:46:55 +0300
committerSerghei Cebotari <serghei@cebotari.ru>2023-09-20 13:46:55 +0300
commitcde4fca02029cf3552cb63c050d3002bab68828f (patch)
tree35f1c25e6c0089708f607dd11a81682209ce4123
parent0c85e000b401c1bab36d07b82c4a0b727562c42a (diff)
Solution organize
-rw-r--r--.gitignore2
-rw-r--r--.vscode/launch.json (renamed from RhSolutions.ML.Builder/.vscode/launch.json)4
-rw-r--r--.vscode/tasks.json (renamed from RhSolutions.ML.Builder/.vscode/tasks.json)6
-rw-r--r--Data/misc_sleeves.txt7
-rw-r--r--Data/rehau_sleeves.txt7
-rw-r--r--Data/rehau_tpiece.txt46
-rw-r--r--RhSolutions.ML.Builder/.gitignore477
-rw-r--r--RhSolutions.ML.Builder/Data/train.tsv351
-rw-r--r--RhSolutions.ML.Builder/Models/model.zipbin47211 -> 0 bytes
-rw-r--r--RhSolutions.ML.Builder/Program.cs47
-rw-r--r--RhSolutions.ML.Builder/RhSolutions.ML.Builder.csproj12
-rw-r--r--RhSolutions.ML.Lib/Product.cs (renamed from RhSolutions.ML.Builder/Product.cs)0
-rw-r--r--RhSolutions.ML.Lib/RhSolutions.ML.Lib.csproj13
-rw-r--r--RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs42
-rw-r--r--RhSolutions.ML.Tests/RhSolutions.ML.Tests.csproj2
-rw-r--r--RhSolutions.ML.Tests/Tests.cs32
-rw-r--r--RhSolutions.ML.sln18
17 files changed, 177 insertions, 889 deletions
diff --git a/.gitignore b/.gitignore
index 154e127..06cba32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -475,3 +475,5 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
+
+Models/ \ No newline at end of file
diff --git a/RhSolutions.ML.Builder/.vscode/launch.json b/.vscode/launch.json
index 35b44e4..77973cc 100644
--- a/RhSolutions.ML.Builder/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -10,9 +10,9 @@
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
- "program": "${workspaceFolder}/bin/Debug/net7.0/RhSolutions.Classifications.dll",
+ "program": "${workspaceFolder}/RhSolutions.ML.Builder/bin/Debug/net7.0/RhSolutions.ML.Builder.dll",
"args": [],
- "cwd": "${workspaceFolder}",
+ "cwd": "${workspaceFolder}/RhSolutions.ML.Builder",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
"stopAtEntry": false
diff --git a/RhSolutions.ML.Builder/.vscode/tasks.json b/.vscode/tasks.json
index a6f0b13..e1d45f0 100644
--- a/RhSolutions.ML.Builder/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -7,7 +7,7 @@
"type": "process",
"args": [
"build",
- "${workspaceFolder}/RhSolutions.Classifications.csproj",
+ "${workspaceFolder}/RhSolutions.ML.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
@@ -19,7 +19,7 @@
"type": "process",
"args": [
"publish",
- "${workspaceFolder}/RhSolutions.Classifications.csproj",
+ "${workspaceFolder}/RhSolutions.ML.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
@@ -33,7 +33,7 @@
"watch",
"run",
"--project",
- "${workspaceFolder}/RhSolutions.Classifications.csproj"
+ "${workspaceFolder}/RhSolutions.ML.sln"
],
"problemMatcher": "$msCompile"
}
diff --git a/Data/misc_sleeves.txt b/Data/misc_sleeves.txt
new file mode 100644
index 0000000..f879a84
--- /dev/null
+++ b/Data/misc_sleeves.txt
@@ -0,0 +1,7 @@
+Пресс-втулка 16 Монтажная гильза
+Пресс-втулка 20 Монтажная гильза
+Пресс-втулка 25 Монтажная гильза
+Пресс-втулка 32 Монтажная гильза
+Пресс-втулка 40 Монтажная гильза
+Пресс-втулка 50 Монтажная гильза
+Пресс-втулка 63 Монтажная гильза
diff --git a/Data/rehau_sleeves.txt b/Data/rehau_sleeves.txt
new file mode 100644
index 0000000..d07e813
--- /dev/null
+++ b/Data/rehau_sleeves.txt
@@ -0,0 +1,7 @@
+Монтажная гильза 16 PX Монтажная гильза
+Монтажная гильза 20 PX Монтажная гильза
+Монтажная гильза 25 PX Монтажная гильза
+Монтажная гильза 32 PX Монтажная гильза
+Монтажная гильза 40 PX Монтажная гильза
+Монтажная гильза 50 MX Монтажная гильза
+Монтажная гильза 63 MX Монтажная гильза
diff --git a/Data/rehau_tpiece.txt b/Data/rehau_tpiece.txt
new file mode 100644
index 0000000..a5c52a0
--- /dev/null
+++ b/Data/rehau_tpiece.txt
@@ -0,0 +1,46 @@
+Тройник равнопроходный 16-16-16 PX Тройник RAUTITAN
+Тройник равнопроходный 20-20-20 PX Тройник RAUTITAN
+Тройник равнопроходный 25-25-25 PX Тройник RAUTITAN
+Тройник равнопроходный 32-32-32 PX Тройник RAUTITAN
+Тройник равнопроходный 40-40-40 PX Тройник RAUTITAN
+Тройник равнопроходный 50-50-50 RX+ Тройник RAUTITAN
+Тройник равнопроходный 63-63-63 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 20-16-20 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 25-16-25 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 25-20-25 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 32-16-32 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 32-20-32 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 32-25-32 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 40-20-40 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 40-25-40 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 40-32-40 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 50-20-50 RX Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 50-20-50 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 50-25-50 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 50-32-50 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 50-40-50 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 63-25-63 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 63-32-63 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 63-40-63 RX+ Тройник RAUTITAN
+Тройник с уменьшенным боковым проходом 63-50-63 RX+ Тройник RAUTITAN
+Тройник с уменьшенным торцевым проходом 20-20-16 PX Тройник RAUTITAN
+Тройник с уменьшенным торцевым проходом 25-25-16 PX Тройник RAUTITAN
+Тройник с уменьшенным торцевым проходом 25-25-20 PX Тройник RAUTITAN
+Тройник с уменьшенным торцевым проходом 32-32-20 PX Тройник RAUTITAN
+Тройник с уменьшенным торцевым проходом 32-32-25 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 20-16-16 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 25-16-16 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 25-16-20 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 25-20-16 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 25-20-20 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 32-20-20 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 32-20-25 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 32-25-20 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 32-25-25 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 40-32-32 PX Тройник RAUTITAN
+Тройник с уменьшенным боковым и торцевым проходами 50-32-40 RX+ Тройник RAUTITAN
+Тройник с увеличенным боковым проходом 16-20-16 PX Тройник RAUTITAN
+Тройник с увеличенным боковым проходом 16-25-16 PX Тройник RAUTITAN
+Тройник с увеличенным боковым проходом 20-25-16 PX Тройник RAUTITAN
+Тройник с увеличенным боковым проходом 20-25-20 PX Тройник RAUTITAN
+Тройник с увеличенным боковым проходом 25-32-25 PX Тройник RAUTITAN
diff --git a/RhSolutions.ML.Builder/.gitignore b/RhSolutions.ML.Builder/.gitignore
deleted file mode 100644
index 154e127..0000000
--- a/RhSolutions.ML.Builder/.gitignore
+++ /dev/null
@@ -1,477 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
-
-# User-specific files
-*.rsuser
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# Tye
-.tye/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.tlog
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio 6 auto-generated project file (contains which files were open etc.)
-*.vbp
-
-# Visual Studio 6 workspace and project file (working project files containing files to include in project)
-*.dsw
-*.dsp
-
-# Visual Studio 6 technical files
-*.ncb
-*.aps
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# Visual Studio History (VSHistory) files
-.vshistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-# VS Code files for those working on multiple tools
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-*.code-workspace
-
-# Local History for Visual Studio Code
-.history/
-
-# Windows Installer files from build outputs
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# JetBrains Rider
-*.sln.iml
-
-##
-## Visual studio for Mac
-##
-
-
-# globs
-Makefile.in
-*.userprefs
-*.usertasks
-config.make
-config.status
-aclocal.m4
-install-sh
-autom4te.cache/
-*.tar.gz
-tarballs/
-test-results/
-
-# Mac bundle stuff
-*.dmg
-*.app
-
-# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
-# Windows thumbnail cache files
-Thumbs.db
-ehthumbs.db
-ehthumbs_vista.db
-
-# Dump file
-*.stackdump
-
-# Folder config file
-[Dd]esktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
diff --git a/RhSolutions.ML.Builder/Data/train.tsv b/RhSolutions.ML.Builder/Data/train.tsv
deleted file mode 100644
index 5d6f4ff..0000000
--- a/RhSolutions.ML.Builder/Data/train.tsv
+++ /dev/null
@@ -1,351 +0,0 @@
-Name Type
-Универсальн.труба RAUTITAN stabil 16,2х2,6 мм, бухта 100 м Труба stabil
-Универсальн.труба RAUTITAN stabil 20х2,9 мм, бухта 100 м Труба stabil
-Универсальн.труба RAUTITAN stabil 25х3,7 мм, бухта 50 м Труба stabil
-Универсальн.труба RAUTITAN stabil 32х4,7 мм, бухта 25 м Труба stabil
-Универсальн.труба RAUTITAN stabil 16,2х2,6 мм, прям.отрезки 5м Труба stabil
-Универсальн.труба RAUTITAN stabil 20х2,9 мм, прям.отрезки 5м Труба stabil
-Универсальн.труба RAUTITAN stabil 25х3,7 мм, прям.отрезки 5м Труба stabil
-Универсальн.труба RAUTITAN stabil 32х4,7 мм, прям.отрезки 5м Труба stabil
-Универсальн.труба RAUTITAN stabil 40х6,0 мм, прям.отрезки 5м Труба stabil
-Унив.труба RAUTITAN flex 16x2,2, бухта 100м Труба flex
-Унив.труба RAUTITAN flex 20x2,8, бухта 100м Труба flex
-Унив.труба RAUTITAN flex 25x3,5, бухта 50м Труба flex
-Унив.труба RAUTITAN flex 32x4,4, бухта 50м Труба flex
-Унив.труба RAUTITAN flex 16x2,2, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 20x2,8, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 25x3,5, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 32x4,4, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 40x5,5, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 50x6,9, прям.отрезки 6м Труба flex
-Унив.труба RAUTITAN flex 63x8,6, прям.отрезки 6м Труба flex
-Унив.труба РЕХАУ FLEX 16x2,2, бухта 100м Труба flex
-Унив.труба РЕХАУ FLEX 20x2,8, бухта 100м Труба flex
-Унив.труба РЕХАУ FLEX 25x3,5, бухта 50м Труба flex
-Унив.труба РЕХАУ FLEX 32x4,4, бухта 50м Труба flex
-Унив. труба RAUTITAN pink+ 16х2,2 мм, бухта 120 м Труба pink
-Унив. труба RAUTITAN pink+ 16х2,2 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 20х2,8 мм, бухта 120 м Труба pink
-Унив. труба RAUTITAN pink+ 20х2,8 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 25х3,5 мм, бухта 50 м Труба pink
-Унив. труба RAUTITAN pink+ 25х3,5 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 32х4,4 мм, бухта 50 м Труба pink
-Унив. труба RAUTITAN pink+ 32х4,4 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 40х5,5 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 50х6,9 мм, прямые отрезки 6 м Труба pink
-Унив. труба RAUTITAN pink+ 63х8,7 мм, прямые отрезки 6 м Труба pink
-Отоп. труба RAUTITAN black 16х2,2 мм, бухта 200 м Труба black
-Отоп. труба RAUTITAN black 20х2,8 мм, бухта 180 м Труба black
-Отоп. труба RAUTITAN black 25х3,5 мм, бухта 100 м Труба black
-Отоп.труба РЕХАУ BLACK 16х2,2 мм, бухта 200 м Труба black
-Отоп.труба РЕХАУ BLACK 20х2,8 мм, бухта 180 м Труба black
-Отоп.труба РЕХАУ BLACK 25х3,5 мм, бухта 100 м Труба black
-Фиксирующий желоб для ПЭ-трубы 16/17 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 20 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 25 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 32 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 40 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 50 Фиксирующий желоб
-Фиксирующий желоб для ПЭ-трубы 63 Фиксирующий желоб
-Монтажная гильза 16 PX Монтажная гильза
-Монтажная гильза 20 PX Монтажная гильза
-Монтажная гильза 25 PX Монтажная гильза
-Монтажная гильза 32 PX Монтажная гильза
-Монтажная гильза 40 PX Монтажная гильза
-Монтажная гильза 50 MX Монтажная гильза
-Монтажная гильза 63 MX Монтажная гильза
-Тройник равнопроходный 16-16-16 PX Тройник RAUTITAN
-Тройник 16 Тройник RAUTITAN
-Тройник 16-16-16 Тройник RAUTITAN
-Тройник равнопроходный 20-20-20 PX Тройник RAUTITAN
-Тройник 20 Тройник RAUTITAN
-Тройник 20-20-20 Тройник RAUTITAN
-Тройник равнопроходный 25-25-25 PX Тройник RAUTITAN
-Тройник 25 Тройник RAUTITAN
-Тройник 25-25-25 Тройник RAUTITAN
-Тройник равнопроходный 32-32-32 PX Тройник RAUTITAN
-Тройник 32 Тройник RAUTITAN
-Тройник 32-32-32 Тройник RAUTITAN
-Тройник равнопроходный 40-40-40 PX Тройник RAUTITAN
-Тройник 40 Тройник RAUTITAN
-Тройник 40-40-40 Тройник RAUTITAN
-Тройник равнопроходный 50-50-50 RX+ Тройник RAUTITAN
-Тройник 50 Тройник RAUTITAN
-Тройник 50-50-50 Тройник RAUTITAN
-Тройник равнопроходный 63-63-63 RX+ Тройник RAUTITAN
-Тройник 63 Тройник RAUTITAN
-Тройник 63-63-63 Тройник RAUTITAN
-Проточный настенный угольник 16/16-Rp 1/2 длинный RX+ Проточный угольник
-Проточный настенный угольник 20/20-Rp 1/2 длинный RX+ Проточный угольник
-Проточный настенный угольник 25/25-Rp 1/2 длинный RX+ Проточный угольник
-Проточный настенный угольник 16/16-Rp 1/2 короткий RX+ Проточный угольник
-Проточный настенный угольник 20/20-Rp 1/2 короткий RX+ Проточный угольник
-Проточный настенный угольник 16/20-Rp 1/2 короткий RX+ Проточный угольник
-Проточный настенный угольник 20/16-Rp 1/2 короткий RX+ Проточный угольник
-Проточный настенный угольник 25/25-Rp 1/2 короткий RX+ Проточный угольник
-Тройник RAUTITAN RX+ с наружной резьбой 16-16-R 1/2 Тройник RAUTITAN резьбовой
-Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 1/2 Тройник RAUTITAN резьбовой
-Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 3/4 Тройник RAUTITAN резьбовой
-Тройник с уменьшенным боковым проходом 20-16-20 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 25-16-25 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 25-20-25 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 32-16-32 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 32-20-32 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 32-25-32 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 40-20-40 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 40-25-40 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 40-32-40 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 50-20-50 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 50-25-50 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 50-32-50 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 50-40-50 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 63-25-63 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 63-32-63 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 63-40-63 RX+ Тройник RAUTITAN
-Тройник с уменьшенным боковым проходом 63-50-63 RX+ Тройник RAUTITAN
-Тройник с уменьшенным торцевым проходом 20-20-16 PX Тройник RAUTITAN
-Тройник с уменьшенным торцевым проходом 25-25-16 PX Тройник RAUTITAN
-Тройник с уменьшенным торцевым проходом 25-25-20 PX Тройник RAUTITAN
-Тройник с уменьшенным торцевым проходом 32-32-20 PX Тройник RAUTITAN
-Тройник с уменьшенным торцевым проходом 32-32-25 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 20-16-16 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 25-16-16 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 25-16-20 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 25-20-16 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 25-20-20 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 32-20-20 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 32-20-25 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 32-25-20 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 32-25-25 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 40-32-32 PX Тройник RAUTITAN
-Тройник с уменьшенным боковым и торцевым проходами 50-32-40 RX+ Тройник RAUTITAN
-Тройник с увеличенным боковым проходом 16-20-16 PX Тройник RAUTITAN
-Тройник с увеличенным боковым проходом 16-25-16 PX Тройник RAUTITAN
-Тройник с увеличенным боковым проходом 20-25-16 PX Тройник RAUTITAN
-Тройник с увеличенным боковым проходом 20-25-20 PX Тройник RAUTITAN
-Тройник с увеличенным боковым проходом 25-32-25 PX Тройник RAUTITAN
-Тройник настенный с внутренней резьбой 16-Rp1/2-16 RX+ Тройник RAUTITAN резьбовой
-Тройник настенный с внутренней резьбой 20-Rp1/2-16 RX+ Тройник RAUTITAN резьбовой
-Тройник настенный с внутренней резьбой 20-Rp1/2-20 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 25-Rp 1/2-25 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 25-Rp 3/4-25 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 32-Rp 3/4-25 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 32-Rp 3/4-32 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 32-Rp 1-32 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 40-Rp 1-40 RX+ Тройник RAUTITAN резьбовой
-Тройник с внутр. резьбой на боков. проходе 50-Rp 1-50 RX+ Тройник RAUTITAN резьбовой
-Муфта соединительная равнопроходная 16 PX Муфта соединительная
-Муфта соединительная равнопроходная 20 PX Муфта соединительная
-Муфта соединительная равнопроходная 25 PX Муфта соединительная
-Муфта соединительная равнопроходная 32 PX Муфта соединительная
-Муфта соединительная равнопроходная 40 PX Муфта соединительная
-Муфта соединительная равнопроходная 50 RХ+ Муфта соединительная
-Муфта соединительная равнопроходная 63 RХ + Муфта соединительная
-Муфта соединительная переходная 20-16 PX Муфта соединительная
-Муфта соединительная переходная 25-16 PX Муфта соединительная
-Муфта соединительная переходная 25-20 PX Муфта соединительная
-Муфта соединительная переходная 32-25 PX Муфта соединительная
-Муфта соединительная переходная 40-32 PX Муфта соединительная
-Муфта соединительная переходная 40-25 RX+ Муфта соединительная
-Муфта соединительная переходная 50-32 RX+ Муфта соединительная
-Муфта соединительная переходная 50-40 RX+ Муфта соединительная
-Муфта соединительная переходная 63-50 RX+ Муфта соединительная
-Переходник с наружной резьбой 16-R 1/2 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 16-R 3/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 16-R 1 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 20-R 1/2 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 20-R 3/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 20-R 1 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 25-R 1/2 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 25-R 3/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 25-R 1 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 32-R 3/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 32-R 1 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 32-R 1 1/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 40-R 1 1/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 50-R 1 1/4 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 50-R 1 1/2 RX+ Переходник на наружную резьбу
-Переходник с наружной резьбой 63-R 2 RX+ Переходник на наружную резьбу
-Переходник с внутренней резьбой 16-Rp 1/2 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 20-Rp 1/2 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 20-Rp 3/4 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 25-Rp 1/2 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 25-Rp 3/4 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 25-Rp 1 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 32-Rp 3/4 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 32-Rр 1 RX+ Переходник на внутреннюю резьбу
-Переходник с внутренней резьбой 40-Rр 1 1/4 RX+ Переходник на внутреннюю резьбу
-Переходник с накидной гайкой 16-G 1/2 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 16-G 3/4 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 20-G 1/2 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 20-G 3/4 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 25-G 3/4 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 25-G 1 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 32-G 1 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 32-G 1 1/4 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 32-G 1 1/2 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 40-G 1 1/2 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 50-G 1 3/4 RX+ Переходник на накидную гайку
-Переходник с накидной гайкой 63-G 2 3/8 RX+ Переходник на накидную гайку
-Переходник на евроконус 16-G 3/4 Переходник на евроконус
-Переходник на евроконус 20-G 3/4 Переходник на евроконус
-Угольник 90°, 50 RX+ Угольник
-Угольник 90°, 63 RX+ Угольник
-Угольник 90°, 16 PX Угольник
-Угольник 90°, 20 PX Угольник
-Угольник 90°, 25 PX Угольник
-Угольник 90°, 32 PX Угольник
-Угольник 90°, 40 PX Угольник
-Угольник 45°, 50 RX+ Угольник
-Угольник 45°, 63 RX+ Угольник
-Угольник 45°, 20 PX Угольник
-Угольник 45°, 25 PX Угольник
-Угольник 45°, 32 PX Угольник
-Угольник 45°, 40 PX Угольник
-Фиксатор поворота с кольцами 90°, 16 Фиксатор поворота
-Фиксатор поворота с кольцами 90°, 20 Фиксатор поворота
-Фиксатор поворота с кольцами 90°, 25 Фиксатор поворота
-Фиксатор поворота с кольцами 90°, 32 Фиксатор поворота
-Фиксатор поворота с кольцами 45°, 16 Фиксатор поворота
-Фиксатор поворота с кольцами 45°, 20 Фиксатор поворота
-Фиксатор поворота с кольцами 45°, 25 Фиксатор поворота
-Фиксатор поворота с кольцами 45°, 32 Фиксатор поворота
-Угольник-переходник с наружной резьбой 16-R 1/2 RX+ Угольник с наружной резьбой
-Угольник-переходник с наружной резьбой 20-R 1/2 RX+ Угольник с наружной резьбой
-Угольник-переходник с наружной резьбой 20-R 3/4 RX+ Угольник с наружной резьбой
-Угольник-переходник с наружной резьбой 25-R 3/4 RX+ Угольник с наружной резьбой
-Угольник-переходник с наружной резьбой 32-R 3/4 RX+ Угольник с наружной резьбой
-Угольник-переходник с наружной резьбой 32-R 1 RX+ Угольник с наружной резьбой
-Угольник-переходник с внутренней резьбой 16-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник-переходник с внутренней резьбой 16-Rp 3/4 RX+ Угольник с внутренней резьбой
-Угольник-переходник с внутренней резьбой 20-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник-переходник с внутренней резьбой 20-Rp 3/4 RX+ Угольник с внутренней резьбой
-Угольник-переходник с внутренней резьбой 25-Rp 1 RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 16-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 20-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 20-Rp 3/4 RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 25-Rp 3/4 RX+ Угольник с внутренней резьбой
-Угольник настенный с длинным патрубком, внутр. резьба 16-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник настенный с длинным патрубком, внутр. резьба 20-Rp 1/2 RX+ Угольник с внутренней резьбой
-Угольник настенный с наружной резьбой 16-R 1/2 RX+ Угольник с наружной резьбой
-Угольник настенный с наружной резьбой 20-R 1/2 RX+ Угольник с наружной резьбой
-Угольник настенный с наружной резьбой 20-R 3/4 RX+ Угольник с наружной резьбой
-Угольник настенный с внутр. резьбой 16-Rp 1/2 длинный, 59 мм RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 20-Rp 1/2 длинный, 59 мм RX+ Угольник с внутренней резьбой
-Угольник настенный с внутр. резьбой 16-Rp 1/2 длинный, 70 мм RX+ Угольник с внутренней резьбой
-Угольник настенный с внутренней резьбой 20-Rp1/2 70мм RX+ Угольник с внутренней резьбой
-Кронштейн, тип O 100 Кронштейн
-Кронштейн, тип O 75 / 150 Кронштейн
-Кронштейн, тип D в сборе Кронштейн
-Кронштейн, тип Z 30 Кронштейн
-Кронштейн, тип Z 42 Кронштейн
-Кронштейн, тип Е Кронштейн
-Кронштейн 75 / 150 Кронштейн
-Распределительный коллектор G1 2 отвода G 3/4 Сборный коллектор
-Распределительный коллектор G1 3 отвода G 3/4 Сборный коллектор
-Распределительный коллектор G1 4 отвода G 3/4 Сборный коллектор
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 16/250 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 16/500 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 16/1000 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 20/250 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 20/500 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Г-образная 20/1000 Трубка для радиатора
-Комплект трубок из. нерж. стали для подкл. радиатора, Г-образ 16/250 Трубка для радиатора
-Комплект трубок из. нерж. стали для подкл. радиатора, Г-образ 20/250 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 16/250 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 16/500 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 16/1000 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 20/250 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 20/500 Трубка для радиатора
-Трубка из. нерж. стали для подкл. радиатора, Т-образная 20/1000 Трубка для радиатора
-К-т двух резьбозажим. нипелей с нар.резьбой 1/2х3/4 (латунь) Ниппель
-Резьбозажимное соединение для металлической трубки G 3/4 -15 Резьбозажимное для трубки
-Пара шаровых кранов с соед. нип. G 1/2xG 3/4, прямой (никелирован.) Краны
-Пара шаровых кранов с соед. нип. G 1/2xG 3/4, угловой (никелирован.) Краны
-Распределительный коллектор HLV на 2 группы нерж. сталь Коллектор
-Распределительный коллектор HLV на 3 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 4 группы нерж. сталь Коллектор
-Распределительный коллектор HLV на 5 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 6 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 7 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 8 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 9 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 10 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 11 групп нерж. сталь Коллектор
-Распределительный коллектор HLV на 12 групп нерж. сталь Коллектор
-Резьбозажимное соединение flex/pink 16х2,2xG3/4 Резьбозажимное для трубы
-Резьбозажимное соединение stabil 16,2x2,6xG3/4 Резьбозажимное для трубы
-Резьбозажимное соединение stabil 20x2,9xG3/4 Резьбозажимное для трубы
-"Комплект двух прямых никелирован. шаровых кранов G1"" для коллекторов " Краны
-"Комплект двух угловых никелирован. шаровых кранов G1"" для коллекторов " Краны
-Шкаф коллекторный, встраиваемый, тип UP 110/450 белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 110/550, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 110/750, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 110/950, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 110/1150, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 110/1300, белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/500 белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/605, белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/805, белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/1005, белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/1205, белый Шкаф
-Шкаф коллекторный, приставной, тип AP 130/1353, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 75/550 , белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 75/750, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 75/950, белый Шкаф
-Шкаф коллекторный, встраиваемый, тип UP 75/1150, белый Шкаф
-Крюк с дюбелем для 1 трубы Крюк
-Двойной крюк с дюбелем для 2-х труб Крюк
-Двойной крюк с дюбелем для 2-х труб в изоляции Крюк
-Фиксатор поворота трубы 16/17/90°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 20/90°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 25/90°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 32/90°, с кольцами (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 16/17/45°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 20/45°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 25/45°, без колец (оцинк. сталь) Фиксатор поворота
-Фиксатор поворота трубы 32/45°, с кольцами (оцинк. сталь) Фиксатор поворота
-Пресс-втулка 16 Монтажная гильза
-Пресс-втулка 20 Монтажная гильза
-Пресс-втулка 25 Монтажная гильза
-Пресс-втулка 32 Монтажная гильза
-Пресс-втулка 40 Монтажная гильза
-Пресс-втулка 50 Монтажная гильза
-Пресс-втулка 63 Монтажная гильза
-Тройник 40/40/45° Тройник RAUPIANO
-Тройник 40/40/87° Тройник RAUPIANO
-Тройник 50/40/45° Тройник RAUPIANO
-Тройник 50/40/87° Тройник RAUPIANO
-Тройник 50/50/45° Тройник RAUPIANO
-Тройник 50/50/87° Тройник RAUPIANO
-Тройник 75/50/45° Тройник RAUPIANO
-Тройник 75/50/87° Тройник RAUPIANO
-Тройник 75/75/45° Тройник RAUPIANO
-Тройник 75/75/87° Тройник RAUPIANO
-Тройник 90/50/45° Тройник RAUPIANO
-Тройник 90/50/87° Тройник RAUPIANO
-Тройник 90/75/45° Тройник RAUPIANO
-Тройник 90/75/87° Тройник RAUPIANO
-Тройник 90/90/45° Тройник RAUPIANO
-Тройник 90/90/87° max flow (гидравл. оптимизированный радиус изгиба) Тройник RAUPIANO
-Тройник 110/50/45° Тройник RAUPIANO
-Тройник 110/50/87° Тройник RAUPIANO
-Тройник 110/75/45° Тройник RAUPIANO
-Тройник 110/75/87° Тройник RAUPIANO
-Тройник 110/90/45° Тройник RAUPIANO
-Тройник 110/90/87° Тройник RAUPIANO
-Тройник 110/110/45° Тройник RAUPIANO
-Тройник 110/110/87° max flow (гидравл. оптимизированный радиус изгиба) Тройник RAUPIANO
-Тройник 125/110/45° Тройник RAUPIANO
-Тройник 125/110/87° Тройник RAUPIANO
-Тройник 125/125/45° Тройник RAUPIANO
-Тройник 125/125/87° Тройник RAUPIANO
-Тройник 160/110/45° Тройник RAUPIANO
-Тройник 160/110/87° Тройник RAUPIANO
-Тройник 160/125/45° Тройник RAUPIANO
-Тройник 160/125/87° Тройник RAUPIANO
-Тройник 160/160/45° Тройник RAUPIANO
-Тройник 160/160/87° Тройник RAUPIANO
-Тройник 200/160/45° Тройник RAUPIANO
-Тройник 200/160/87° Тройник RAUPIANO
-Тройник 200/200/45° Тройник RAUPIANO
diff --git a/RhSolutions.ML.Builder/Models/model.zip b/RhSolutions.ML.Builder/Models/model.zip
deleted file mode 100644
index 7b7bb69..0000000
--- a/RhSolutions.ML.Builder/Models/model.zip
+++ /dev/null
Binary files differ
diff --git a/RhSolutions.ML.Builder/Program.cs b/RhSolutions.ML.Builder/Program.cs
index 898e872..ffb62e3 100644
--- a/RhSolutions.ML.Builder/Program.cs
+++ b/RhSolutions.ML.Builder/Program.cs
@@ -1,42 +1,11 @@
-using Microsoft.ML;
+using RhSolutions.ML.Lib;
-namespace RhSolutions.ML.Builder
+try
{
- public class Program
- {
- private static string _appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) ?? ".";
- private static MLContext _mlContext = new MLContext(seed: 0);
- public static void Main()
- {
- var _trainDataView = _mlContext.Data.LoadFromTextFile<Product>(
- Path.Combine(_appPath, "..", "..", "..", "Data", "train.tsv"), hasHeader: true);
- var pipeline = ProcessData();
- BuildAndTrainModel(_trainDataView, pipeline, out ITransformer trainedModel);
- SaveModelAsFile(_mlContext, _trainDataView.Schema, trainedModel);
- }
-
- private static IEstimator<ITransformer> ProcessData()
- {
- var pipeline = _mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "Type", outputColumnName: "Label")
- .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: "Name", outputColumnName: "NameFeaturized"))
- .Append(_mlContext.Transforms.Concatenate("Features", "NameFeaturized"))
- .AppendCacheCheckpoint(_mlContext);
- return pipeline;
- }
-
- private static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransformer> pipeline, out ITransformer trainedModel)
- {
- var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
- .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
-
- trainedModel = trainingPipeline.Fit(trainingDataView);
- return trainingPipeline;
- }
-
- private static void SaveModelAsFile(MLContext mlContext, DataViewSchema trainingDataViewSchema, ITransformer model)
- {
- mlContext.Model.Save(model, trainingDataViewSchema,
- Path.Combine(_appPath, "..", "..", "..", "Models", "model.zip"));
- }
- }
+ RhSolutionsMLBuilder.RebuildModel();
+ Console.WriteLine("Model built");
+}
+catch (Exception ex)
+{
+ Console.WriteLine(ex.Message);
} \ No newline at end of file
diff --git a/RhSolutions.ML.Builder/RhSolutions.ML.Builder.csproj b/RhSolutions.ML.Builder/RhSolutions.ML.Builder.csproj
index 75b0dcc..e034a8f 100644
--- a/RhSolutions.ML.Builder/RhSolutions.ML.Builder.csproj
+++ b/RhSolutions.ML.Builder/RhSolutions.ML.Builder.csproj
@@ -1,5 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
+ <ItemGroup>
+ <ProjectReference Include="..\RhSolutions.ML.Lib\RhSolutions.ML.Lib.csproj" />
+ </ItemGroup>
+
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
@@ -7,12 +11,4 @@
<Nullable>enable</Nullable>
</PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Microsoft.ML" Version="2.0.1" />
- </ItemGroup>
- <ItemGroup>
- <None Include="Data/train.tsv">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
-</ItemGroup>
</Project>
diff --git a/RhSolutions.ML.Builder/Product.cs b/RhSolutions.ML.Lib/Product.cs
index 99040fc..99040fc 100644
--- a/RhSolutions.ML.Builder/Product.cs
+++ b/RhSolutions.ML.Lib/Product.cs
diff --git a/RhSolutions.ML.Lib/RhSolutions.ML.Lib.csproj b/RhSolutions.ML.Lib/RhSolutions.ML.Lib.csproj
new file mode 100644
index 0000000..928fc99
--- /dev/null
+++ b/RhSolutions.ML.Lib/RhSolutions.ML.Lib.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net7.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.ML" Version="2.0.1" />
+ </ItemGroup>
+
+</Project>
diff --git a/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs b/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs
new file mode 100644
index 0000000..be2e2a6
--- /dev/null
+++ b/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs
@@ -0,0 +1,42 @@
+using Microsoft.ML;
+
+namespace RhSolutions.ML.Lib;
+
+public class RhSolutionsMLBuilder
+{
+ private static string _appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) ?? ".";
+
+ private static MLContext _mlContext = new MLContext(seed: 0);
+
+ public static void RebuildModel()
+ {
+ var _trainDataView = _mlContext.Data.LoadFromTextFile<Product>(
+ Path.Combine(_appPath, "..", "..", "..", "..", "Data", "*"), hasHeader: false);
+ var pipeline = ProcessData();
+ BuildAndTrainModel(_trainDataView, pipeline, out ITransformer trainedModel);
+ SaveModelAsFile(_mlContext, _trainDataView.Schema, trainedModel);
+ }
+ private static IEstimator<ITransformer> ProcessData()
+ {
+ var pipeline = _mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "Type", outputColumnName: "Label")
+ .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: "Name", outputColumnName: "NameFeaturized"))
+ .Append(_mlContext.Transforms.Concatenate("Features", "NameFeaturized"))
+ .AppendCacheCheckpoint(_mlContext);
+ return pipeline;
+ }
+
+ private static IEstimator<ITransformer> BuildAndTrainModel(IDataView trainingDataView, IEstimator<ITransformer> pipeline, out ITransformer trainedModel)
+ {
+ var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
+ .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
+
+ trainedModel = trainingPipeline.Fit(trainingDataView);
+ return trainingPipeline;
+ }
+
+ private static void SaveModelAsFile(MLContext mlContext, DataViewSchema trainingDataViewSchema, ITransformer model)
+ {
+ mlContext.Model.Save(model, trainingDataViewSchema,
+ Path.Combine(_appPath, "..", "..", "..", "..", "Models", "model.zip"));
+ }
+}
diff --git a/RhSolutions.ML.Tests/RhSolutions.ML.Tests.csproj b/RhSolutions.ML.Tests/RhSolutions.ML.Tests.csproj
index 697d9a0..c37ac53 100644
--- a/RhSolutions.ML.Tests/RhSolutions.ML.Tests.csproj
+++ b/RhSolutions.ML.Tests/RhSolutions.ML.Tests.csproj
@@ -19,7 +19,7 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\RhSolutions.ML.Builder\RhSolutions.ML.Builder.csproj" />
+ <ProjectReference Include="..\RhSolutions.ML.Lib\RhSolutions.ML.Lib.csproj" />
</ItemGroup>
</Project>
diff --git a/RhSolutions.ML.Tests/Tests.cs b/RhSolutions.ML.Tests/Tests.cs
index e8203a0..0349ddb 100644
--- a/RhSolutions.ML.Tests/Tests.cs
+++ b/RhSolutions.ML.Tests/Tests.cs
@@ -3,8 +3,7 @@ namespace RhSolutions.ML.Tests;
public class Tests
{
private static string _appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) ?? ".";
- private static string _dataPath = Path.Combine(_appPath, "..", "..", "..", ".."
- ,"RhSolutions.ML.Builder" , "Models", "model.zip");
+ private static string _dataPath = Path.Combine(_appPath, "..", "..", "..", "..", "Models", "model.zip");
private MLContext _mlContext;
private PredictionEngine<Product, TypePrediction> _predEngine;
@@ -56,4 +55,33 @@ public class Tests
var prediction = _predEngine.Predict(p);
Assert.That(prediction.Type, Is.EqualTo("Тройник RAUPIANO"));
}
+
+ [TestCase("Муфта соединительная равнопроходная 16 PX")]
+ [TestCase("Муфта 16")]
+ [TestCase("Переход 20-16")]
+ [TestCase("Переходник 20-16")]
+ public void CouplingTest(string name)
+ {
+ Product p = new()
+ {
+ Name = name
+ };
+ var prediction = _predEngine.Predict(p);
+ Assert.That(prediction.Type, Is.EqualTo("Муфта соединительная"));
+ }
+
+ [TestCase("Переходник с наружной резьбой 20-R 3/4 RX+")]
+ [TestCase("Переходник 16 1/2 НР")]
+ [TestCase("ПНР 16")]
+ [TestCase("Переход НР 16 1/2")]
+ [TestCase("Муфта НР 16 1/2")]
+ public void AdapterExternalTest(string name)
+ {
+ Product p = new()
+ {
+ Name = name
+ };
+ var prediction = _predEngine.Predict(p);
+ Assert.That(prediction.Type, Is.EqualTo("Переходник на наружную резьбу"));
+ }
} \ No newline at end of file
diff --git a/RhSolutions.ML.sln b/RhSolutions.ML.sln
index ec0bbab..95b927c 100644
--- a/RhSolutions.ML.sln
+++ b/RhSolutions.ML.sln
@@ -3,24 +3,30 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33815.320
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RhSolutions.ML.Builder", "RhSolutions.ML.Builder\RhSolutions.ML.Builder.csproj", "{0ADAA6BD-87CB-4F92-83B2-6C3788634F31}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.ML.Tests", "RhSolutions.ML.Tests\RhSolutions.ML.Tests.csproj", "{E21FC75D-A7E6-4BC2-AFC5-9E36715240FA}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.ML.Lib", "RhSolutions.ML.Lib\RhSolutions.ML.Lib.csproj", "{36239F13-0F62-4AD7-B0AF-FA24E8101FA7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.ML.Builder", "RhSolutions.ML.Builder\RhSolutions.ML.Builder.csproj", "{13C69C4E-6A1A-4646-8F2B-9C058E1B0FAD}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0ADAA6BD-87CB-4F92-83B2-6C3788634F31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0ADAA6BD-87CB-4F92-83B2-6C3788634F31}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0ADAA6BD-87CB-4F92-83B2-6C3788634F31}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0ADAA6BD-87CB-4F92-83B2-6C3788634F31}.Release|Any CPU.Build.0 = Release|Any CPU
{E21FC75D-A7E6-4BC2-AFC5-9E36715240FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E21FC75D-A7E6-4BC2-AFC5-9E36715240FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E21FC75D-A7E6-4BC2-AFC5-9E36715240FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E21FC75D-A7E6-4BC2-AFC5-9E36715240FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {36239F13-0F62-4AD7-B0AF-FA24E8101FA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {36239F13-0F62-4AD7-B0AF-FA24E8101FA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {36239F13-0F62-4AD7-B0AF-FA24E8101FA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {36239F13-0F62-4AD7-B0AF-FA24E8101FA7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {13C69C4E-6A1A-4646-8F2B-9C058E1B0FAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {13C69C4E-6A1A-4646-8F2B-9C058E1B0FAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {13C69C4E-6A1A-4646-8F2B-9C058E1B0FAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {13C69C4E-6A1A-4646-8F2B-9C058E1B0FAD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE