Цепная линия. Какую среду программирования освоить для решения задачи.

Автор beginner, 21.11.22, 11:34:40

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

IgorT

]
Цитата: СВ от 23.11.22, 08:28:26Другими словами, если ограничиться практическими задачами В Компасе как конструктору, то Питона, считаете, будет достаточно?
Питон сам по себе для освоения не сложен. Сложности начинаются в освоении SDK Компаса. Это не каждому по силам.

graphdark

Справедливости ради. Хоть я очень не люблю питон. На нем можно написать буквально все.

p3452

Цитата: graphdark от 23.11.22, 21:19:41На нем можно написать буквально все.
:-)))  :-)))  :-)))
Как на счет Операционной системы, какого-нибудь компилятора, или, хотя-бы, простенького CAD-а...?
У Python достаточно узкая ниша применения, если исходить из разумной целесообразности - и лампочкой можно гвозди забивать, но вот нужно ли?

graphdark

Цитата: p3452 от 24.11.22, 00:00:20Как на счет Операционной системы, какого-нибудь компилятора, или, хотя-бы, простенького CAD-а...?

Стоит заметить, что вот пишу на Delphi, C++. И не хочу участвовать в написании ОС или простенького компилятора. А кад на питоне есть. Есть граф. редакторы. У меня это в голове не укладывается, но скриптом описали даже броузер. Не хочу сказать, что  ПО на питоне прям огонь. Оно невероятно тяжелое, привязано к версии языка. Но оно дергает либы на С++ или С, поэтому умудряется обходить свои ограничения. Но скатываемся к флейму о лучшем ЯП. Но все знаем, что любой ЯП хорош для своей задачи. Макросы-хорош питон.
+ Благодарностей: 1

Doom

Цитата: KrissKross от 21.11.22, 13:11:17могу посоветовать

для описание мат модели использовать программу SMath Studio
https://ru.smath.com/обзор/SMathStudio/резюме
в ней же можно создавать независимые окна для ввода переменных

для связи математики с Компасом - использовать программу Standard Project
https://forum.ascon.ru/index.php?topic=30159.msg239028#msg239028

удобная программа была но стала платной..

помню еще на 2 курсе когда познакомился с matlab simulink - предложил сюда в ветке предложения - встроить математический пакет в Компас для работы с графическими объектами минуя Api.
В сети нашел кучу исходников на плюсах/.Net некоторые из них сгенерировал из того же matlab 6.5 :) - в чем его плюс он генерирует функции с учетом всевозможных событий.

Комплексный анализ.
Граф-аналитические исчисления.
Удобство формирования КД и ПЗ.

У других САПР есть это направление в виде скрипт блоков прям на моделях для синтеза.

beginner

Приветствую.
Почти закончил с написанием программы.

Pythonовцы, посоветуйте пожалуйста, что лучше использовать для создания графического интерфейса pyqt или tkinter.
Прошу посоветовать с чего начать изучение SDK. Мне же как-то нужно передать данные в Компас, чтобы правильная цепь построилась.

Teywl Wind

Цитата: beginner от 05.02.24, 15:46:52Pythonовцы, посоветуйте пожалуйста, что лучше использовать для создания графического интерфейса pyqt или tkinter.

Приветствую. Если графический интерфейс нужен будет только для задач типа "выбрать" или "вписать" значение, то проще взять tkinter, т.к. он является встроенной библиотекой.
+ Благодарностей: 1

beginner

Да.
Графический интерфейс только для ввода данных цепной передачи.

Вират Лакх

Цитата: beginner от 05.02.24, 15:46:52Прошу посоветовать с чего начать изучение SDK. Мне же как-то нужно передать данные в Компас, чтобы правильная цепь построилась.
Перед изучением SDK следует убедиться в наличии библиотеки pywin32 и научиться подключаться к компасу.
Зная CLSID библиотек типов компаса, создаём модули или убеждаемся в их наличии и соответствии (переменные называем как удобно):

from win32com.client import gencache
const = gencache.EnsureModule('{75C9F5D0-B5B8-4526-8681-9903C567D2ED}', 0, 1, 0).constants
con3d = gencache.EnsureModule('{2CAF168C-7961-4B90-9DA2-701419BEEFE3}', 0, 1, 0).constants
api5 = gencache.EnsureModule('{0422828C-F174-495E-AC5D-D31014DBBE87}', 0, 1, 0)
api7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
или
from win32com.client import gencache, constants
gencache.EnsureModule('{75C9F5D0-B5B8-4526-8681-9903C567D2ED}', 0, 1, 0)
gencache.EnsureModule('{2CAF168C-7961-4B90-9DA2-701419BEEFE3}', 0, 1, 0)
api5 = gencache.EnsureModule('{0422828C-F174-495E-AC5D-D31014DBBE87}', 0, 1, 0)
api7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
Зная ProgID компаса, подключаемся к запущенному экземпляру:
from win32com.client import GetActiveObject
kompas5 = GetActiveObject('Kompas.Application.5')
kompas7 = GetActiveObject('Kompas.Application.7')
или
import pythoncom
GetActiveApplication = lambda ProgID: gencache.GetClassForProgID(ProgID)(pythoncom.connect(ProgID))
kompas5 = GetActiveApplication('Kompas.Application.5')
kompas7 = GetActiveApplication('Kompas.Application.7')
или короче
from pythoncom import connect
KompasObject = api5.KompasObject(connect('Kompas.Application.5'))
iApplication = api7.IApplication(connect('Kompas.Application.7'))
Далее открываем SDK, например, https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/applicate.html
Ещё стоит иногда заглядывать в саму питоновскую библиотеку типов. Она расположена тут:
print(gencache.GetGeneratePath())
Предлагаю функцию просмотра свойств полученного интерфейса:
def printprop(i): # i - интерфейс
print(i.__doc__)
for _ in sorted(i._prop_map_get_):
print(_, getattr(i, _))

printprop(iApplication)
Ищите в SDK то, что Вам нужно, и по цепочке получаете интерфейсы свойством / методом или преобразованием типа.
И, конечно же, примеры программ на форуме.
+ Благодарностей: 2

Slaviation

ЦитироватьПрошу посоветовать с чего начать изучение SDK. Мне же как-то нужно передать данные в Компас, чтобы правильная цепь построилась.
Есть PyKompasMacro
ЦитироватьPyKompasMacro будет полезен как для автоматизации работы пользователя в КОМПАС-3D, так и для изучения интерфейсов прикладного программирования (API)  КОМПАС-3D.
https://slaviationsoft.blogspot.com/
+ Благодарностей: 1

СВ

Цитата: beginner от 05.02.24, 15:46:52Приветствую.
Почти закончил с написанием программы.
Pythonовцы, посоветуйте пожалуйста, что лучше использовать для создания графического интерфейса pyqt или tkinter.
Прошу посоветовать с чего начать изучение SDK. Мне же как-то нужно передать данные в Компас, чтобы правильная цепь построилась.
А нет мысли подключить каких-нибудь энтузиастов из профи? Может быть даже в духе соревновательности - кто лучше сделает.
И ещё любопытно: какая у вас концепция заложена? Универсальная, при которой двух звёздочную передачу не проблема переключить на многозвёздочную, или только для двух звёздочек? (Понимаю, что стоит подождать, но - сильно любопытно.)

beginner

Цитата: СВ от 06.02.24, 08:27:11А нет мысли подключить каких-нибудь энтузиастов из профи?
Однозначно Нет. Я понимаю, что мой Код далёк от идеала, но это моё творение и я постараюсь закончить его самостоятельно.

Цитата: СВ от 06.02.24, 08:27:11И ещё любопытно: какая у тебя концепция заложена? Универсальная, при которой двух звёздочную передачу не проблема переключить на многозвёздочную, или только для двух звёздочек? (Понимаю, что стоит подождать, но - сильно любопытно.)
На данный момент расчёт реализован для двух звёздочек (с провисанием снизу)

Вводим количество зубьев, шаг, взаимное расположение звёздочек, начальный угол поворота ведущей звёздочки.
Программа подсчитывает угол поворота ведомой звёздочки и сразу указывает какое наименьшее количество звеньев цепи теоретически возможно.
Вводим необходимое количество звеньев цепи и получаем коэффициент цепной линии и координаты граничных точек.

Теперь задача:
1. Обернуть программу в удобный интерфейс, чтобы пользователь мог вводить данные.
2. Научиться подключаться к Компасу и передавать ему данные, полученные при расчёте, для построения реальной 3D цепи.
+ Благодарностей: 1


СВ

Цитата: beginner от 06.02.24, 08:57:14Вводим количество зубьев, шаг, взаимное расположение звёздочек, начальный угол поворота ведущей звёздочки.
Программа подсчитывает угол поворота ведомой звёздочки и сразу указывает какое наименьшее количество звеньев цепи теоретически возможно.
Вводим необходимое количество звеньев цепи и получаем коэффициент цепной линии и координаты граничных точек.
А "угол наклона" цепной передачи есть? Т.е. угол между горизонтом и плоскостью, в которой расположены оси звёздочек.
- - -
На счёт концепции: я спрашиваю немного о другом, не о вводе данных для построения, а о методе, принятом для нахождения "координат граничных точек", как вы их называете. (Полагаю, это оси шарниров цепи.) Т.е. этим же методом можно находить и "координаты" для многозвёздочной передачи?

beginner

Цитата: Николай от 06.02.24, 13:00:59Вот просто график строитЦепная линия 07.rar
просто построить график цепной линии мы могём... эта задача простая


Цитата: СВ от 06.02.24, 13:21:18А "угол наклона" цепной передачи есть?
конечно есть
Цитата: beginner от 06.02.24, 08:57:14взаимное расположение звёздочек


Цитата: СВ от 06.02.24, 13:21:18Т.е. этим же методом можно находить и "координаты" для многозвёздочной передачи?
Если под многозвёздочностью понимается натяжная звёздочка, то алгоритм другой. Там же не будет (в идеале) провисания цепи.


На счёт сроков реализации. Если верить вот этому мнению (а не доверять этому пользователю у меня нет причин)
Цитата: IgorT от 23.11.22, 08:38:45Питон сам по себе для освоения не сложен. Сложности начинаются в освоении SDK Компаса. Это не каждому по силам.
, то на реализацию всего задуманного у меня уйдёт ещё год (скорее всего). Сейчас дачный сезон начнётся :)))) Все выходные проходят на земле.

MrBarry

Цитата: beginner от 06.02.24, 14:59:59Если верить вот этому мнению (а не доверять этому пользователю у меня нет причин)
ЦитироватьПитон сам по себе для освоения не сложен. Сложности начинаются в освоении SDK Компаса. Это не каждому по силам.
Подтверждаю, он всё верно сказал. Даже если в программировании ровно 0 опыта, при наличии технического мышления (а врятли на этом форуме водится хоть один гуманитарий :D) освоить несложно.
И ещё более верны слова про SDK. Действительно, есть не самая плохая справка, которая, однако, совершенно не научит работать с SDK, она нужна тем, кто уже умеет. Хорошие книги и курсы есть, но они раскиданы по разным языкам программирования: серия статей на Habr по С++, книга Норсеева по Delphi, видео на Ютубе по С#... По Питону что существует я вообще не в курсе...
Короче, освоение идёт наощупь и с трудом, мои ранние темы на этом форуме соврать не дадут)
В идеале найти человека, который уже писал на Питоне и регулярно советоваться, наладить контакт вне тем форума. Но если не получится, то нужно много времени и упорства.


+ Благодарностей: 1

СВ

 Т.е. новичку получить кракозябру вместо программы - раз плюнуть?

MrBarry

Новичку не суметь в принципе запустить программу - раз плюнуть