Как сделать 7zip в stl
Данный вопрос очень часто возникает при переброске модели из сеточного формата в CAD
Сейчас он встал по переписке с пользователем DEM
Известные и опробованные мной варианты на сегодняшний день.
1) Распознавание сеточной геометрии средствами солидворкс. По моему работает оно довольно плохо, во всяком случае у меня никогда не получалось
2) Rhino - команды mesh to surface . Данная программа замечательна тем, что ориентирована одинаково неплохо на оба типа геометрии, то есть имеет наборы команд и для того и для другого, а также поддерживает пару десятков разнообразных форматов обеих типов. Пробовал - в целом хорошо на простой геометрии
3) Salome-Platfrom. В geom модуле File>Import>Выбрать stl, Затем Repair>Union Faces.
Получается нормально для плоских поверхностей без скруглений. После применения New Entity > explode возникает 2 Faces и куча Edges оставшихся от сетки. Далее можно попробовать выделить Faces с нажатым shift и применить New Entity > Build для получения общей Shell
Можно попробовать Repair >Remove extra edges с опциями. В общем данная программа по сути конструктор и дает доступ ко всем составным частям твердотельной модели, зависит только от знаний пользователя. Файл stl прикладываю в архиве
Какие есть еще варианты?
Последний раз редактировалось ETCartman, 18.05.2016 в 04:09 .
Salome-Platfrom
ТО что надо.
Скорее всего в пайтоне тоже есть какой то модуль который работает с сетками, он скорее всего тоже может преобразовывать.
Там в принципе алгоритм для плоских фигур довольно простой.
Скорее всего в пайтоне тоже есть какой то модуль который работает с сетками |
Нет, я вообще питоном мало занимался. Только поставил и запустил эту штуку
Все открытое что есть, типа freecad и occ (и все что появится в будущем) - основано на том же Salome, то есть на открытой библиотеке opencascade
В Salome тоже есть интерфейс к пайтон и поддерживаются скрипты с включением любой функции которая есть в интерфейсе. Также есть генератор макросов из процесса интерактивной работы
DEM можете выложить модель stl из скада чтобы попробовать ее преобразовать и размешировать (например из треугольной сетки в структурированную)
Естественно все данные кроме геометрии будут утеряны. И колонны тоже я подозреваю будут утеряны после перевода в stl
Еще таким образом можно получить тела из оболочек. То есть после преобразования оболочек ограничивающих замкнутую полость можно получить уже тела.
ETCartman
Но ведь существуют и другие форматы открытые, типа iges\dxf\msh
Форматы геометрии есть сеточные (представление всего треугольниками) и нативные (условно точные) как STEP/IGES. Первые сравнительно просто программируются но могут терять точность в процессе преобразований. Самые мощные программы для работы с сеточной геометрией - это Blender3d и 3dMax. Это не CAD программы - их назначение это арт и визульное представление объектов.
Opencascade единственная в своем роде открытая библиотека которая работает с нативными форматами. То есть их и закрытых библиотек во всем мире по пальцам можно пересчитать, потому что это программы с очень сложной математикой, требующие долгой профессиональной разработки большими коллективами и длительного тестирования. Естественно, большинство открытых решений просто берет opencascade за основу. Хотя есть мелкие программки типа SolveSpace и gcad3d которые сами чего то делают, но там очень бедная функциональность как правило и они на многое не претендуют.
dxf это по сути сеточный формат в 3д, для 3д не удобный. msh это формат сетки в GMSH, но там речь идет о конечно-элементной сетке. Для работы с твердотельной геометрией в GMSH также встроен Opencascade
Выложите пожалуйста какой нибудь практический stl модели из скада - я попробую преобразовать его в твердотельную геометрию с возможностью последующей доработки в CAD
Последний раз редактировалось ETCartman, 18.05.2016 в 10:26 .
в dxf тела хранятся как бинарный объекты
ETCartman
Вот два файла.
В Salome-Platfrom к сожалению не нашел возможности, преобразования сетки в суфрайсы(у меня под винду версия).
Думаю наверное все таки будет самым оптимальным установить python и pythonocc
Потом с помощью библиотеки работать с данными.
Можно будет и отображать результаты расчетов и сетку делать, т.к. для python и интерфейс GMSH есть.
И под винду и под линукс работает одинаково. Сетка автоматом переводится в поверхности при импорте (рисунок 1 в топ посте) далее задача - сделать их плоскими просто (убрать треугольники)
PS после объединения поверхностей нужно выделить фичу в дереве и выбрать ПКМ Show Only (иначе показывается все - в том числе и сетка)
Вот скрины для выложенного файла 1.stl
К загруженному stl применяется Remove Extra Edges с опцией Union Faces (чтобы видеть результат надо применить к этой фиче show only)
Полученная поверхность может быть перемеширована под другую сетку (показано на рисунке - алгоритм Netgen1D-2D с рекомбайном треугольников в квадраты)
Также выкладываю zip с файлом HDF
Последний раз редактировалось ETCartman, 18.05.2016 в 15:45 .
ETCartman
А msh может подгрузить Salome-Platfrom.
И еще там по сложнее файл был, его уже по этапам надо будет конвертить??
msh 1 и 2 (3 планируется) - внутренний сеточный КЭ формат GMSH и больше нигде не поддерживается.
Для модели номер 2 разница в том что загрузка stl выполняется долго. Такие вещи в Salome (как и в GMSH) лучше делать скриптами в BATCH режиме (в этом случае программа не подвисает и можно оперировать очень большими сетками)
Хотя в данном случае я делал все интерактивно (просто свернул окно программы и оно грузилось само по себе полчаса). Программа забрала примерно 1,5 ГБ оперативки (64 бит версия). Операция слития сурфайсов заняла несколько секунд.
Меширование лучше делать с крупной сеткой сначала (если много элементов надо в настройках поменять предельное количество отображаемых элементов).
Netgen не очень скоростной мешер (примерно раз в 5 медленнее коммерческих) Где то я читал что его можно приблизить по скорости к коммерческим (просто отключить какие то опции типа всяких проверок, но я не в курсе как)
Последний раз редактировалось ETCartman, 18.05.2016 в 18:07 .
Блин круто.
Надоть подумать, что все таки лучше использовать.
Либо Salome-Platfrom либо FreeCad.
Еще надо придумать как сохранять информацию о стержнях.
В общем то похоже создание своего препроцессора вполне возможно.
На самом деле такое преобразование работает хорошо только для простых плоских сеток. Использовать конечно перспективней Salome потому что это оригинальная программа от производителей открытой библиотеки (французско - нижегородской компании), а Freecad всего лишь попытка одиночек-любителей на основе той же самой библиотеки получить некий универсальный CAD.
Функциональность Salome намного выше и она заточена как раз на построение сеток для профессиональных расчетов.
На самом деле сложная сеточная геометрия транслируется в твердотельную с множеством артефактов и дефектов. И ее приходится дорабатывать много вручную перед тем как построить сетку. В Salome есть целое семество функций Repair для этой цели - но оно тоже помогает не всегда. То же самое верно для Rhino, который предназначен для архитекторов и модели выдает не очень корректные с точки зрения автоматической генерации сетки (например много дублирующихся линий, дыры в поверхностях и тд). Я пробовал считать на основе райновских моделей - получается очень со скрипом и тоже надо вручную дорабатывать (что сложнее чем построить с нуля иногда).
Мне смысл передачи stl из SCAD не очень понятен. Тогда уж логичней строить все в Salome или в каком то другом профессиональном твердотельном CAD с последующим мешированием в Salome и передачей сетки (с группами узлов и элементов) в SCAD (либо автоматическим формированием текстового файла SCAD на основе данных Salome)
Так чтобы свободно гонять сетки туда сюда - это сложно и граничные условия будут каждый раз теряться.
Salome идет в паре с расчетной программой Code-Aster, для сквозного проектирования и расчета. Можете изучить этот механизм (на основе именованных групп) и приметь то же к SCAD. Получится как бы интерфейс к SCADу
Кроме того сам Salome поддерживает создание пользовательского интерфейса, так что все операции можно встроить прямо в его окна. Там есть примеры такого рода.
Второй вариант работы с STL сеткой в Salome - это импортировать ее сразу в mesh модуль. В этом случае импорт происходит почти мгновенно (так как не требуется распознание и перевод сетки в твердотельные треугольные поверхности). В mesh модуле есть свои операции - например можно автоматом объединить треугольники для получения структурированной сетки. Можно задать группы, проверить всевозможные параметры качества и так далее (перекинуть в другие программы)
Последний раз редактировалось ETCartman, 19.05.2016 в 01:07 .
Что то не получается через Salome получить суфрайсы.
Последовательность у меня следующая.
1. Запускаю программу Salome.
2. Захожу в модуль MESH
3. Файл импорт stl
4. Захожу в модуль Geom
5. Выбираю Repair>Union Faces
И выскакивает окошко.
логично не получается. потому что что union faces команда geom модуля для геометрии. а если вы загрузили сетку в mesh модуле - то у вас геометрии нет (потому что сетка геометрией не является сама по себе). чтобы применять команды geom модуля нужно импортировать stl в нем же
логично не получается. потому что что union faces команда geom модуля для геометрии. а если вы загрузили сетку в mesh модуле - то у вас геометрии нет (потому что сетка геометрией не является сама по себе). чтобы применять команды geom модуля нужно импортировать stl в нем же
А прям в программе нельзя это сделать.
А то получается что стержни теряются.
все в одной программе, только модули разные. в первом случае из геом модуля грузится сеточный формат stl и распознается как геометрия (занимает некоторе время)
После чего выполняются преобразования полученной геометрии в geom модуле (можно достроить модель, добавить убавить - работать будете как в CAD с геом примитивами типа сурфайсов) После преобразований в геом модуле можно перейти в меш модуль и автоматически разбить нужную сетку на сурфайсах.
во втором случае сетка импортируется в mesh модуле как сетка и с ней можно выполнять любые преобразования из тех, что есть в mesh модуле (например рекомбинировать, сглаживать сетку, объединять ее с другой сеткой, создавать группы и тд) При этом естественно геом модуль сетку не видит, потому как это сеточная геометрия а не nurbs
Также во freecad есть модуль сеточный и есть твердотельный (на основе библиотек Salome) и они не пересекаются.
вот 1 мин видео первого способа во вложении
Последний раз редактировалось ETCartman, 19.05.2016 в 17:56 .
Я правильно понял задачу - нужно из скадовской сетки получить один полигон с отверстиями и сохранить это в dxf?
Для начала печати на 3D-принтере необходимо подготовить цифровую 3D-модель. Существует множество программ для 3D-моделирования, в которых можно создать 3D-модель, в какой именно программе создавать модель – не важно, но чтобы она была принята 3D-принтером, нужно экспортировать её в подходящий для большинства принтеров формат .STL. В этой статье мы расскажем, как сделать экспорт 3D-модели в STL-формат в самых распространенных программах для 3D-моделирования.
2. SolidWorks Student Design Kit (SolidWorks Student Edition)
Из учебной версии SolidWorks можно сделать экспорт в .STL только с помощью софта eDrawings, который обычно устанавливается с SolidWorks по умолчанию. Если этого расширения всё же не оказалось, то скачать его можно здесь.
В SolidWorks SDK можно сохранить 3D-модель в формате .SLDPRT. Для конвертации в .STL откройте нужный файл в формате .SLDPRT в eDrawings.
• В панели инструментов откройте File (Файл) -> Save As (Сохранить как)
• Установите тип файла .STL
• Сохраните
4. Autodesk 3ds Max (3D Studio Max)
• В меню программы нажимаем File -> Export
• Выберите тип файла -> StereoLitho *.stl
• Введите имя файла, сохраните, в диалоговом окне выберите тип файла -> Binary -> OK
Важно! Зачастую при экспорте в .STL из 3ds Max изменяются размеры моделей, чтобы этого избежать перед началом моделирования необходимо проверить указанные в программе единицы измерения. Если размеры модели заданы в миллиметрах, то в параметрах “Display Unit Scale” (единицы, в которых отображается модель в программе) и “System Units Setup” (единицы, в которых модель экспортируется) нужно установить именно миллиметры (часто по умолчанию стоят дюймы). Если вдруг обнаружили неверные единицы измерения при экспорте уже после того, как сделали модель – не беда, в любом случае нужно выставить мм, а затем масштабировать модель - в параметре “Distance from origin” указывается цифра во сколько раз будет уменьшена или увеличена модель в зависимости от установленных единиц, это значение и берем как коэффициент масштабирования. Например, если в параметре “System Units Setup” стояли дюймы, а нужно выбрать мм, то созданную модель нужно будет увеличить в 25,4 раз.
6. Blender
• В верхнем меню откройте вкладку File -> Export -> STL
• Укажите имя файла и место для сохранения экспортируемой модели
• Нажмите -> Export STL
7. Rhino (Rhinoceros 3D)
• В панели инструментов File (Файл) -> Save As (Сохранить как) -> тип файла Stereolithography (*.stl)
• Введите имя файла и сохраните его
• Выберите “Binary STL files”
• Снимите флажок с параметра “Export Open Objects”
• Сохраните
Параметр “Export Open Objects” позволяет экспортировать объекты, которые не являются полностью закрытыми, а это противоречит требованиям к 3D-моделям для 3D-печати.
Если этот параметр выключен, то экспорт «открытого» объекта в STL не удастся, а полигональные сетки/поверхности, служащие камнем преткновения будут выделены. Используйте команду ShowEdges (Показать Края) для поиска граней, нуждающихся в исправлении. Советы по исправлению полигональной сетки в Rhino.
8. Pro ENGINEER
• Откройте вкладку File -> Save a Copy
• Выберите тип STL и нажмите OK
• В появившемся диалоговом окне выберите стандартную систему координат Coordinate System -> Standard
• Отметьте Format -> Binary
• Установите минимально допустимые значения в параметрах Chord Height – 0 и Angle Control - 0
• Введите имя файла и нажмите OK
9. КОМПАС-3D
• В меню откройте “Файл” -> “Сохранить как…”
• Вберите тип файла .STL
• Нажмите “Сохранить”
Можно назначить параметры экспорта и таким образом получить наилучшее качество экспортируемой модели.
Начиная с версии V15.1 в КОМПАС-3D изменился диалог настройки параметров сохранения в STL. Если ранее настройка зависела от параметров точности, установленных для детали, то в новой версии появился диалог «Параметры экспорта STL».
Результаты сохранения с разными параметрами для шара диаметром 50 мм.
Для оценки параметров используется «Microsoft 3D Builder»
Максимальное линейное отклонение
Максимальное угловое отклонение
Максимальная длина ребра
10. Solid Edge ST6 - ST8
• Application Button -> Save As
• В появившемся выберите тип фала STL (.stl)
• Откройте пункт «Параметры»
• Укажите в “Conversion Tolerance” -> millimeters
• Определите значения допусков “Tolerance Units”
Чем ниже значение допуска, тем выше детализация модели, но также увеличивается вес файла за счет увеличения количества полигонов в сетке модели. По излишне тяжелой модели может быть сложно подготовить задание для печати на 3D-принтере.
• Отрегулируйте угол плоскости поверхности “ Surface Plane Angle”(в зависимости от желаемой гладкости поверхности) - чем ниже значение, тем больше точность (имеет смысл для небольших детализированных деталей)
• В пункте Output File as -> Binary
• Нажмите OK-> Save
Подробнее о параметрах для экспорта в STL в Solid Edge читайте здесь .
Solid Edge (старше ST6)
• Откройте модель и выберите File -> Save As…
• Выберите тип файла -> STL
• Зайдите в Options, задайте параметры: Conversion Tolerance не менее 0.0254 mm для FDM-печати; не менее 0.015 mm для PolyJet
• Установите Surface Plane Angle до 45°
• Выберите тип файла -> Binary
• Нажмите OK и сохраните
Задача: создать BAT-файл, который будет сжимать всё содержимое папки project на диске C:/ максимальным уровнем сжатия и помещать созданный архив в папку backup на том же диске.
Создаем BAT-файл
На диске C:/, создаем папку project. В эту папку поместите какие нибуть файлы, например, фото
В любом путом месте (например, рабочий стол) нажимаете правой кнопкой мыши и выбираем Создать->Текстовый документ.
Меняем расширение файла с .txt на .bat
Если у вас не отображается расширение, на Windows 10 зайдите в "Этот компьютер", перейдите во вкладку Вид и поставте галочку "Расширения имен и файлов"
Кликаем правой кнопкой мыши на созданный файл и нажимаем Изменить. Откроется обычный блокнот, в нем нам и нужно написать скрипт.
Пример кода:
"C:\Program Files\7-Zip\7z.exe" a -mx9 C:\backup\archive.7z C:\project
Расшифровка кода:
Готово! Сохраните внесенные изменения, закройте файл и запустите. Должен создаться архив в нашей папке backup
На этом можно было бы остановиться, но обязательно ли постоянно прописывать путь к программе 7zip? Что если не нужно архивировать не все файлы в папке? Как в название архива добавить дату, когда он был сделан?
Разберем каждый пункт по порядку.
Привязываем путь к программе 7zip к переменной
- Нажимаем правой кнопкой мыши на Этот компьютер->Свойства в появившемся окне в списке слева выбираем Дополнительные параметры системы->Переменные среды.
- В верхнем разделе Переменные среды пользователя для Ваш_user нажимаем Создать. В открывшемся окне указываем значения ниже, после жмем OK
- Имя переменной - любое удобное имя, которое будет обозначать программу 7zip
- Значение переменной - полный путь к программе с указанием exe файла
Готово! Теперь код будет выглядеть компактнее, в BAT-файле замените "C:\Program Files\7-Zip\7z.exe" на 7z
Пример кода:
Исключаем ненужные файлы из архивации
Для исключения файлов необходимо в конце скрипта добавить ключ -xr! , чтобы понять как он работает, просто изучите примеры.
-xr!file.jpg Исключаем файлы с именем и расширением file.jpg -xr!*.jpg Исключаем файлы с расширением .jpg, неважно имя файла -xr!file.* Исключаем файлы с именем file, неважно расширение файла -xr!file Исключаем папки с именем file -xr!file*.* Исключаем файлы, имя которых начинается на file%, например file01.txt в архив не попадет -xr!*file*.* Исключаем файлы, имя которых содержит %file%, например 01file01.jpg в архив не попадет Теперь на основе полученных данных модернизируйте BAT-файл, если необходимо
Пример кода:
Добавляем дату и время создания архива в название
В Window есть две системные переменные, которые будем использовать
DATE Возвращает текущую системную дату в формате: 01.01.2020 Time Возвращает текущее системное время в формате: 15:29:55,03 Чтобы добавить их в название файла архива, достаточно обозначить эти переменные знаком % с обоих сторон
Добавьте эти переменные в название архива, отделите их нижним подчеркиванием, чтобы дата и время не сливались и в конце скрипта с добавьте новую команду pause, чтобы BAT-файл не закрывался сразу, как по примеру ниже
Пример кода:
7z a -mx9 C:\backup\archive_%DATE%_%Time%.7z C:\project -xr!thumb.*
pauseСохраните и запустите!
После запуска должна возникнуть оишбка Синтаксическая ошибка в имени файла, имени папки или метке тома.
Причина проста: формат переменной Time 12:23:38, а в Windows в названии файлов запрещено испольвать двоеточия ":"
Для решения данной проблемы выведем только часы и минуты в название.
Пример кода:
3,2%.7z C:\project -xr!thumb.*
pauseРасшифровка кода:
Сохрание и запустите! Проблема решена, теперь названия архивных файлов будут выглядеть примерно так: archive_20.05.2020_13_33.7z
Рефакторинг и оптимизация завершены
"C:\Program Files\7-Zip\7z.exe" a -mx9 C:\backup\archive.7z C:\project3,2%.7z C:\project -xr!thumb.*
pauseПри необходимости можете настроить запуск данного файла по расписанию для этого переходите по ссылке
Эта статья с одинаковым успехом может быть отнесена к блогам ".NET", «Open source» и «Я пиарюсь». После того. как я написал материал, стало ясно, что больше всего в ней «Open source»… Просьба сильно не бить, если я ошибся.
Использование SevenZipSharp
В библиотеке два главных класса — SevenZipExtractor и SevenZipCompressor. Шаблон использования первого:
// Синхронная распаковка
using ( var extr = new SevenZipExtractor( @"путь\к\архиву" ))
extr.Extracting += DoExtractingEvent();
extr.ExtractArchive( @"куда\распаковывать" );
DoFinishEvent();
>// Асинхронная распаковка
var extr = new SevenZipExtractor( @"путь\к\архиву" );
extr.Extracting += DoExtractingEvent();
extr.ExtractionFinished += (s, e) => < DoFinishEvent(); extr.Dispose(); extr = null ; >;
extr.BeginExtractArchive( @"куда\распаковывать" );* This source code was highlighted with Source Code Highlighter .
// Синхронная упаковка
var cmpr = new SevenZipCompressor();
cmpr.CompressDirectory( @"путь\к\пакуемой\папке" , @"имя\архива" );
DoFinishEvent();
cmpr = null ;// Асинхронная упаковка
var cmpr = new SevenZipCompressor();
cmpr.CompressionFinished += (s, e) => < DoFinishEvent(); cmpr = null ; >
cmpr.BeginCompressDirectory( @"путь\к\пакуемой\папке" , @"имя\архива" );* This source code was highlighted with Source Code Highlighter .
- Полная поддержка многопоточности
- Оборачиваются все форматы архивов, поддерживаемые 7-Zip-ом
- Неприхотливость к оборачиваемой библиотеке — никаких жестких привязок
- Поддержка многотомных архивов при распаковке и упаковке
- Распаковка большинства SFX архивов
- Весь код тщательно снабжен комментариями
Как все началось
Рассматривался вариант с компиляцией 7-Zip в смешанную сборку (mixed assembly) с флагом /clr. Этот вариант был отвергнут, т.к. во-первых, интерфейс получился бы низкоуровневый и не пригодный для быстрого использования и все равно пришлось писать «добавку», а во-вторых, чтобы собрать код с флагом /clr:pure, требовалось бы переписывать много кода, и unmanaged части все равно остались.
Когда SevenZipSharp только появился, мне хотелось рассказать о нем потенциально заинтересованным пользователям-разработчикам. Я оставлял краткое описание библиотеки везде, где было можно: в ответах на вопросы StackOverflow, на программистских форумах (в т.ч. MSDN, Channel 9), в комментариях к той самой статье на CodeProject и даже на английской Wikipedia. Это все принесло результаты, и вскоре поисковые выдачи Google вышли по траффику на первое место. Думаю, рекламировать свои проекты должны все, иначе большинство попросту не узнает об их существовании. Эффективность рекламы оценивается по статистике загрузок и посещений, которая публично доступна.
SevenZipSharp и 7-Zip
Вот как SevenZipSharp оборачивает 7-Zip. Через COM-овский CreateObject создается объект, поддерживающий указанный интерфейс (IInArchive, IOutArchive). Из этого объекта дергаются нужные функции, и достигается желаемый результат (например, IInArchive.Extract(. )). Во время длительных операций из unmanaged кода вызываются managed callback-и, и это приводит к проблеме, которую я не сразу осознал — обработка ошибок. Например, из-за ошибки в callback-е или исключении в вызываемом callback-ом пользовательском событии исполнение операции падает без предупреждений и какой-либо вразумительной информации, кроме странного 32-битного кода ошибки. Я решил обернуть все callback-и try/catch-ами и заносить все возникшие исключения в стек ошибок, который в случае неудачи показывается пользователю. Если есть более изящное решение, прошу о нем рассказать.
В один прекрасный момент мне захотелось заставить работать SevenZipSharp под Mono (GNU/Linux). И тогда проблема привязанности 7-Zip к COM проявила себя во всем великолепии. Необходимо было заново написать низкоуровневую часть библиотеки почти с нуля. Т.к. код 7-Zip, как я уже писал, специфичный, инструменты для автоматической обертки вроде SWIG оказались бесполезными, а чтобы они вообще заработали, мне пришлось сначала пройтись по всему коду препроцессором и убрать 10-ти этажные define-ы. В настоящее время я потихоньку пишу независимую от COM обертку.
Разработка
* This source code was highlighted with Source Code Highlighter .
Отмечу, что разрабатывался SevenZipSharp стихийно. Если что-то хотелось добавить к функциональности, я брал и добавлял — и не советовался с начальниками, не согласовывал решения с руководством и т.д. В этом есть свои минусы, но зато баги исправлялись мгновенно и просьбы о новых функциях удовлетворялись в течение нескольких дней. Полная свобода действий — и настоящая учеба на своих ошибках.
Бонусы
Воодушевляет, когда в письмах благодарят за библиотеку, сообщают, что используют ее в реальных и весьма известных проектах (например, Stardock). Иногда мне приходят письма от людей, с предложениями начать работать над библиотекой вместе. Человек обычно полон энтузиазма, уверяет, что вместе будет здорово и т.п. После ответного в письма, в котором я пишу, что сразу никому пароль от SVN не дам, спрашиваю, а что человек вообще умеет, и описываю примерные планы развития проекта на будущее, никто со мной пока не связывался. Мне это кажется странным, возможно, психологию таких людей мне объяснят в комментариях.
Типичное письмо без продолженияПоскольку речь зашла о людях, расскажу о публике на CodePlex. Несколько раз мне жертвовали код, причем всего один раз — по правилам, через патч. Порой давали дельные советы, подсказывали, что можно сделать лучше. Очень приятно, когда ошибки исправляешь не ты, а другие пользователи, и делятся потом багфиксом. Однако часто о баге заявляют не в Issue Tracker, а в обсуждения (Discussions), даже если баг очевидный. Приходится регулярно вчитываться в вопросы и решать, чей это косяк, библиотеки или криворукого пользователя. Впрочем, иногда появлялись «участники», заводящие сразу с десяток багов, из которых в лучшем случае пара действительно стоящие, а остальные являются просьбами добавить лишнюю функциональность, которая кроме самих «участников» никому не нужна. Бывает, что завел человек баг вроде «не работает распаковка», спрашиваешь у него в комментариях, какая версия библиотеки, как воспроизвести ошибку, а тот уже давно забыл про SevenZipSharp и не отвечает. Совсем.
Отдельно веселят люди, оставляющие оценки (звездочки на CodePlex, от 1 до 5). Бесит, когда ставят 2 и не объясняют почему. Впрочем, также бесит когда ставят 2 и пишут, что мол вообще ничего не работает и библиотека ваша говно. К счастью, с SevenZipSharp это происходит редко, в отличие от других популярных проектов, которые, я уверен, не заслуживают таких оценок.
Итоги
Оглядываясь назад, я вижу, что связался с SevenZipSharp не зря. Получены и бесценный опыт, и некоторые выгоды. Если вы спросите, а стоит ли разрабатывать свой open source проект «для души», я без раздумий отвечу — конечно!
Читайте также: