nalbandci /
C
Данный репозиторий содержит коллекцию программных решений различных задач на языке C.
34/100 healthLoading repository data…
ArkHarKharon / repository
Данный репозиторий содержит класс, целью которого является облегчение работы с Solidworks API. Он предоставляет набор методов, достаточный для полноценной работы с API без лишних/устаревших функций. Класс расположен в файле Drawer.cs
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Библиотека упрощает процесс создания моделей в SolidWorks, собирая наиболее используемые методы API в одном месте.
SolidWorks.Interop.sldworksSolidWorks.Interop.swconstДля корректной работы библиотеки рекомендуется отключить привязки:
Библиотека работает с метрами. Если программа принимает ввод в миллиметрах, необходимо осуществить конвертацию.
using Temp;
// Создание экземпляра библиотеки
SWDrawer drawer = new SWDrawer();
// Инициализация SolidWorks
drawer.init();
// Создание новой детали
drawer.newProject(DocumentType.PART);
// Быстрое создание куба 1х1х1 метр (для тестирования)
drawer.fastCube();
SWDrawer drawer = new SWDrawer();
// Подключается к открытому SolidWorks или запускает новый
bool success = drawer.init();
// Создание детали
drawer.newProject(DocumentType.PART);
// Создание сборки
drawer.newProject(DocumentType.ASSEMBLY);
// Создание чертежа (можно указать номер шаблона)
drawer.newProject(DocumentType.DRAWING, 10);
// Если деталь уже открыта в SolidWorks
bool connected = drawer.connectToOpenedPart();
bool connected = drawer.connectToOpenedAssembly();
При работе с эскизами используются только X и Y координаты - координата Z игнорируется. Например, при работе в вертикальной плоскости XZ значение координаты Z следует передвать в поле Y.
// Выбор стандартных плоскостей
drawer.selectDefaultPlane(DefaultPlaneName.TOP); // Сверху
drawer.selectDefaultPlane(DefaultPlaneName.FRONT); // Спереди
drawer.selectDefaultPlane(DefaultPlaneName.RIGHT); // Справа
// Открыть эскиз на выбранной плоскости
drawer.insertSketch(true);
// Закрыть эскиз
drawer.insertSketch(false);
// Линия по координатам начальной и конечной точки
SketchSegment line = drawer.createLineByCoords(
0, 0, 0, // Начало (x, y, z)
0.1, 0.1, 0 // Конец (x, y, z)
);
// Окружность по центру и радиусу
SketchSegment circle1 = drawer.createCircleByRadius(
0, 0, 0, // Центр (x, y, z)
0.05 // Радиус
);
// Окружность по центру и точке на окружности
SketchSegment circle2 = drawer.createCircleByPoint(
0, 0, 0, // Центр
0.05, 0, 0 // Точка на окружности
);
// Прямоугольник по двум противоположным углам
drawer.createRectangle(
0, 0, 0, // Первый угол
0.1, 0.1, 0 // Противоположный угол
);
// Прямоугольник по центру и углу
drawer.createCenterRectangle(
0, 0, 0, // Центр
0.05, 0.05, 0 // Угол
);
// Сохраняем элемент для последующей обрезки
SketchSegment circle = drawer.createCircleByRadius(0, 0, 0, 0.1);
// Обрезаем в указанной точке
drawer.trim(circle, 0.05, 0.05, 0);
drawer.selectDefaultPlane(DefaultPlaneName.TOP);
drawer.insertSketch(true);
// Создаём прямоугольник
drawer.createCenterRectangle(0, 0, 0, 0.05, 0.05, 0);
// Создаём окружность в центре
SketchSegment circle = drawer.createCircleByRadius(0, 0, 0, 0.02);
drawer.insertSketch(false); // Закрываем эскиз
drawer.selectDefaultPlane(DefaultPlaneName.TOP);
drawer.insertSketch(true);
drawer.createCenterRectangle(0, 0, 0, 0.05, 0.05, 0);
// Вытягивание на 0.1 метра
drawer.extrude(0.1);
// Вытягивание в противоположном направлении
drawer.extrude(0.1, changeDirection: true);
drawer.selectDefaultPlane(DefaultPlaneName.TOP);
drawer.insertSketch(true);
drawer.createCircleByRadius(0, 0, 0, 0.01);
// Вырезать насквозь
drawer.cutHole(HoleType.CUT_THROUGH);
// Вырезать на заданную глубину
drawer.cutHole(HoleType.DISTANCE, depth: 0.05);
// Получить все тела детали
Body2[] bodies = drawer.getAllBodies();
// Получить все грани тела
Face2[] faces = drawer.getAllFaces(bodies[0]);
// Выбрать грань по индексу
drawer.SelectFaceByIndex(bodies[0], 0);
// Просмотр всех граней с их индексами (отладка)
drawer.viewBodyFaces(bodies[0]);
Body2[] bodies = drawer.getAllBodies();
Face2 face = drawer.getAllFaces(bodies[0])[0];
// Получить все рёбра грани
Edge[] edges = drawer.getAllEdges(face);
// Выбрать ребро по индексу
drawer.SelectEdgeByIndex(face, 0);
// Просмотр всех рёбер грани (отладка)
drawer.viewFaceEdges(0);
// Скругление рёбер 0, 1, 2 грани 5 с радиусом 0.005м
drawer.createFillets(
faceNum: 5,
radius: 0.005,
edgeNums: 0, 1, 2
);
// Фаска на рёбрах с двумя расстояниями
drawer.createChamfers(
faceNum: 5,
distance1: 0.002,
distance2: 0.003,
edgeNums: 0, 1
);
// Удалить последние 3 элемента из дерева построений
drawer.deleteLastFeatures(3);
SWDrawer drawer = new SWDrawer();
drawer.init();
drawer.newProject(DocumentType.PART);
// Создаём основание
drawer.selectDefaultPlane(DefaultPlaneName.TOP);
drawer.insertSketch(true);
drawer.createCenterRectangle(0, 0, 0, 0.05, 0.05, 0);
drawer.extrude(0.02);
// Создаём отверстие
Body2[] bodies = drawer.getAllBodies();
drawer.SelectFaceByIndex(bodies[0], 0); // Верхняя грань
drawer.insertSketch(true);
drawer.createCircleByRadius(0, 0, 0, 0.01);
drawer.cutHole(HoleType.CUT_THROUGH);
// Скругляем рёбра
drawer.createFillets(0, 0.002, 0, 1, 2, 3);
drawer.newProject(DocumentType.ASSEMBLY);
// Импорт одной детали
drawer.importPart(
@"C:\Projects\Parts\bolt.SLDPRT",
x: 0,
y: 0,
z: 0
);
// Импортировать все детали из папки
// Детали располагаются сеткой 5x5
drawer.importPartsFromFolder(
@"C:\Projects\Parts\",
offset: 0.1, // Расстояние между деталями
rawLength: 5 // Количество деталей в ряду
);
List<Body2> bodies = drawer.GetAllBodiesFromAssembly();
Класс для автоматического создания массива отверстий в заданной области.
SWDrawer drawer = new SWDrawer();
drawer.init();
drawer.connectToOpenedPart();
HolesArrayCutter cutter = new HolesArrayCutter(drawer);
// Выделите 2 вершины в модели, которые образуют область
// Затем вызовите метод:
cutter.cutHoles(
rowsNum: 5, // Количество рядов
columsNum: 5, // Количество столбцов
verticiesNum: 6, // Вершин в многоугольнике (6 = шестиугольник)
angle: 0.0, // Угол поворота (градусы)
offset: 0.005, // Отступ от граней области
reverse: false // Обратное направление
);
rowsNum - количество отверстий по вертикалиcolumsNum - количество отверстий по горизонталиverticiesNum - количество сторон многоугольника (3 = треугольник, 4 = квадрат, 6 = шестиугольник и т.д.)angle - угол поворота многоугольника в градусахoffset - отступ от верхней и нижней граней области (если 0, то вырезает насквозь)DocumentType.DRAWING // Чертёж
DocumentType.PART // Деталь
DocumentType.ASSEMBLY // Сборка
DefaultPlaneName.TOP // Сверху
DefaultPlaneName.FRONT // Спереди
DefaultPlaneName.RIGHT // Справа
HoleType.CUT_THROUGH // Вырезать насквозь
HoleType.DISTANCE // Вырезать на глубину
HoleType.OFFSET // Вырезать с отступом от поверхности
ObjectType.EDGE // Ребро
ObjectType.FACE // Грань
ObjectType.VERTEX // Вершина
ObjectType.PLANE // Плоскость
ObjectType.AXIS // Ось
ObjectType.SKETCH_SEGMENT // Сегмент эскиза
Для последующей работы с элементами (обрезка, модификация) сохраняйте их в переменные:
SketchSegment circle = drawer.createCircleByRadius(0, 0, 0, 0.05);
SketchSegment line = drawer.createLineByCoords(0, 0, 0, 0.1, 0, 0);
// Теперь можно работать с этими элементами
drawer.trim(circle, 0.03, 0.03, 0);
Используйте отладочные методы для визуального определения индексов:
Body2[] bodies = drawer.getAllBodies();
// Показать все грани с их индексами
drawer.viewBodyFaces(bodies[0]);
// Показать все рёбра грани с индексами
drawer.viewFaceEdges(0);
Все размеры вводятся в миллиметрах, но внутри методов автоматически конвертируются в метры:
// Если вы хотите куб 100x100x100 мм:
double size = 100 / 1000.0; // = 0.1 метра
drawer.createCenterRectangle(0, 0, 0, size/2, size/2, 0);
drawer.extrude(size);
insertSketch(false))extrude() и cutHole() работают только внутри эскизаviewBodyFaces, viewFaceEdges) для определения индексовchangeDirection: trueSWDrawer drawer = new SWDrawer();
drawer.init();
drawer.newProject(DocumentType.PART);
// Основание
drawer.selectDefaultPlane(DefaultPlaneName.TOP);
drawer.insertSketch(true);
drawer.createCenterRectangle(0, 0, 0, 0.05, 0.05, 0);
drawer.extrude(0.02);
// Отверстие
Body2[] bodies = drawer.getAllBodies();
drawer.SelectFaceByIndex(bodies[0], 0);
drawer.insertSketch(true);
drawer.createCircleByRadius(0, 0, 0, 0.01);
drawer.cutHole(HoleType.CUT_THROUGH, changeDirection: true);
SWDrawer drawer = new SWDrawer();
drawer.init();
drawer.newProject(DocumentType.ASSEMBLY);
drawer.importPartsFromFolder(
@"C:\MyProject\Parts\",
offset: 0.15,
rawLength: 4
);
Библиотека создана для упрощения работы с SolidWorks API и помощи в изучении возможностей программы.
Основной функционал библиотеки заложил @ArkHarKharon, также в разработке приложил свою руку @KingArtur1000.
Свободное использование в учебных проектах
Selected from shared topics, language and repository description—not editorial ratings.
nalbandci /
Данный репозиторий содержит коллекцию программных решений различных задач на языке C.
34/100 healthkk1241 /
Данный репозиторий содержит учебный проект s21_matrix Школы 21. Цель проекта — реализовать библиотеку для работы с матрицами на языке C.
44/100 healthfreeeakn /
Данный репозиторий содержит программу на языке C++, предназначенную для управления заказами ателье одежды. Программа реализована с использованием ООП и паттерна MVC.
37/100 healthKorobokkk /
Данный репозиторий содержит реализацию базового html сайта c применением JS и CSS. Реализовано взаимодействие с Canvas, базовые скрипты для взаимодействия с ним, и сохранение файлов. Решение не включает в себя серверную часть, вся работа реализована на стороне пользователя.
34/100 healthPavelZhlabo-tech /
Данный репозиторий содержит практические задания по ООП в C#: наследование, интерфейсы и отношения между классами. В проектах реализованы абстрактные классы, интерфейсы, иерархии наследования, а также примеры ассоциации, агрегации и композиции. Код демонстрирует работу с объектами и базовой бизнес‑логикой.
42/100 health