Перейти к публикации

Разработка приложения под Solidworks на языке C++


reaper

Рекомендованные сообщения



To reaper

Выслал вам на почту небольшой пример проекта с деталями. Здесь не стал выкладывать, код большой для топика. Там комментарии, так что разбирайтесь. Желаю удачи...

Ссылка на сообщение
Поделиться на других сайтах

Всё ошибка найдена

Так не мешало бы огласить причину!

Может кому и пригодится!

Довольно часто сталкиваюсь на форуме с такого рода эгоизмом: человек задает, задает вопросы, потом :

"Всем спасибо, проблему решил, тему можно закрывать!"

И тишина! И ни слова о том как решил, в чем была проблема...

Ссылка на сообщение
Поделиться на других сайтах

Так не мешало бы огласить причину!

Может кому и пригодится!

Довольно часто сталкиваюсь на форуме с такого рода эгоизмом: человек задает, задает вопросы, потом :

"Всем спасибо, проблему решил, тему можно закрывать!"

И тишина! И ни слова о том как решил, в чем была проблема...

А в ответ все-равно тишина...

Нехорошо тов. reaper, некрасиво...

В следующий раз надо будет подумать отвечать ли на Ваши вопросы или не стоит...

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Так не мешало бы огласить причину!

Может кому и пригодится!

Довольно часто сталкиваюсь на форуме с такого рода эгоизмом: человек задает, задает вопросы, потом :

"Всем спасибо, проблему решил, тему можно закрывать!"

И тишина! И ни слова о том как решил, в чем была проблема...

Я приношу свои извинения что так поздно ответил так как пост заметил только сейчас. Я расскажу сейчас о своей цели и чего я добился. Я точно уже не помню к чему я писал "Ошибка найдена". С самого начала моя цель была написать программу о передаче данных из текстового файла в который забиты координаты точек нескольких деталей. Эти координаты считываются с файла, открывается SolidWorks, рисуется контур и прокручивается вокруг своей оси. Получается деталь - тело вращение. Я точно не помню но ошибка была - в том как сопрячь детали в сборке. С помощью ув. Shvg я пошёл по другому пути - не через получение имён компонентов, а через выделение кромок на каждой детали через координаты точек. В текстовом файле точка сопряжение выделена меткой. То есть мы координаты точки знаем. Поэтому мы выделяем деталь, получаем матрицу преобразования и получаем координаты точки в системе координат сборки. Точка - это проекция кромки на плоскость. В трёхмерном пространстве мы видим выделенную кромку. Эти кромки сопрягаются.

Сейчас пока приложение находится в процессе разработки мы пока умеем строить одну деталь. На любые вопросы я готов на них ответить и в личку и в ветке. Так как небольшой опыт имеется. Ещё раз выражаю благодарность ув. Shvg. его помощь была бесценна.

Ссылка на сообщение
Поделиться на других сайтах

При таком файле может и Солид не нужен - а будет достаточно просто вьювера (для просмотра)???

Таблица в Экселе и вьювер - всё гениальное просто (наверное шутка) :blink::g: :g: :g:

Ссылка на сообщение
Поделиться на других сайтах

При таком файле может и Солид не нужен - а будет достаточно просто вьювера (для просмотра)???

Таблица в Экселе и вьювер - всё гениальное просто (наверное шутка) :blink::g: :g: :g:

Нет, здесь здесь надо построить в SolidWorks трёхмерную модель детали, потом сделать сборку, и затем оформить чертеж и посчитать на прочность
Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...
Солнцеворот

У кого-нибудь получилось сделать приложение для SW в C++ Builder или Visual Basic 6.0?

reaper говорит, что смог сделать только на Visual Studio, а остальные?

Может кто-нибудь объяснить хорошо как прикрепить эти файлы *.tlb к проекту?

С уважением.

Ссылка на сообщение
Поделиться на других сайтах

У кого-нибудь получилось сделать приложение для SW в C++ Builder или Visual Basic 6.0?

<noindex>http://www.solidworks.com/sw/support/APIDownloads.html</noindex>

Может кто-нибудь объяснить хорошо как прикрепить эти файлы *.tlb к проекту?

Можно, например, вот это почитать: Geometric_modeling_kernels_and_API_programming_2008.03.24_.pdf

Или справку наконец почитать по API-интерфейсу для Solidworks (непосредственно в программе Solidworks).

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Visual Basic Чтобы пользоваться функциями Solidworks, нужно в меню Project -> References поставить галки напротив файлов sldworks.tlb и swconst.tlb

Ниже привожу код, списанный с макроса - создает файл детали и делает в нем прямоугольную бобышку 80х40х50 мм. Какие нужно провести над ним манипуляции, чтобы сделать из него отдельное приложение *.exe ?

Kelny, спасибо за ссылку, но боюсь я знаю английский не на том уровне.

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.NewDocument("C:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Деталь.prtdot", 0, 0, 0)

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.SketchManager.InsertSketch True

Dim vSkLines As Variant

vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, 0.08, 0.04, 0)

Dim myFeature As Object

Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0.001, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)

End Sub

Сам додумался. Ниже привожу пример программы для построения бобышки на Visual Basic. Для выполнения проги необходим запущеный солидворкс. Жирным выделена строчка, на которую заменили текст VBA.

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Private Sub Command1_Click() 'По нажатию кнопки1 Выполняется следующее

Set swApp = CreateObject("SldWorks.Application")

'Set swApp = Application.SldWorks

Set Part = swApp.NewDocument("C:\Documents and Settings\All Users\Application Data\SolidWorks\SolidWorks 2009\templates\Деталь.prtdot", 0, 0, 0)

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.SketchManager.InsertSketch True

Dim vSkLines As Variant

vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, 0.08, 0.04, 0)

Dim myFeature As Object

Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0.001, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)

End Sub

Для тех, кому интересно, выкладываю проект на Visual Basic 6.0 Бобышка_визуал_бейсик.rar

Ссылка на сообщение
Поделиться на других сайтах

............

Для выполнения проги необходим запущеный солидворкс. Жирным выделена строчка, на которую заменили текст VBA.

Эта функция
Set swApp = CreateObject("SldWorks.Application")
работает и когда SW не запущен. Она запустит SW, только в "теневом" режиме. Чтобы потом отобразить SW потребунтся строка:

swApp.Visible = Ttue
Когда писал на VB6, предпочитал:

Set swApp = GetObject(, "SldWorks.Application")
Ссылка на сообщение
Поделиться на других сайтах

Когда писал на VB6, предпочитал:

Set swApp = GetObject(, "SldWorks.Application")
Cкажите, а как сделать так, чтобы приложение, написанное на VB6 работало и на других компьютерах, на которых Visual Basic не установлен?
Ссылка на сообщение
Поделиться на других сайтах

Cкажите, а как сделать так, чтобы приложение, написанное на VB6 работало и на других компьютерах, на которых Visual Basic не установлен?

Надо делать нормальный дистрибутив.

Для этого сущ-ют очень много программ.

Например, вот этот вроде ничего:

"

Name: simsetup_r.exe

URL: <noindex>http://www.sminstall.com/simsetup_r.exe</noindex>

Size: 1495919

Create time: 23.06.2008 16:44:49

Complete time: 23.06.2008 16:47:25

Referer: <noindex>http://ru.sminstall.com/</noindex>

Description: Smart Install Maker - это мощное и удобное средство для создания инсталляторов. Программа обладает удобным и интуитивно понятным интерфейсом, а также полным набором необходимых функций для создания профессиональных инсталляторов с минимальным размером, высокой степенью сжатия файлов и приятным интерфейсом.

"

А в самом VB есть дополнение "Package and Deployment Wizard". Его необходимо подключить : через меню - Добавления/Менеджер Дополнений.

В результате получает дистрибутив с файлом "Setup.exe" и набором остальных всех необходимых файлов для работы приложения, (упакованных в *.САВ).

Ссылка на сообщение
Поделиться на других сайтах

ssv22, кошмар. Я в программировании не силен, конечно, но такую неудобность впервые вижу, ну, за исключением, правда, приложений для работы с базами данных, говорят они тоже работают только в инсталляционном варианте.

А в чем лучше всего делать самостоятельное portable приложение для SW, так, чтобы записанный макрос VBA было меньше редактировать?

Ссылка на сообщение
Поделиться на других сайтах

ssv22, кошмар. Я в программировании не силен, конечно, но такую неудобность впервые вижу, ну, за исключением, правда, приложений для работы с

базами данных, говорят они тоже работают только в инсталляционном варианте.

А в чем лучше всего делать самостоятельное portable приложение для SW, так, чтобы записанный макрос VBA было меньше редактировать?

Ничего тут кошмарного нет! И совсем наоборот - сплошная удобность.

Вот причем тут это:

...

приложений для работы с

базами данных, говорят они тоже работают только в инсталляционном варианте.

...

мне непонятно. Что это за вариант такой, инсталляционный. Это вроде не то...

Потом, причем тут "записанный макрос VBA" ?

Не надо путать:

VBA - это макросы, тут инсталятор не нужен или, по-крайней мере, я понятия не имею как его создавать,

я вообще VBA использую только для записи макросов для изучения кода VB, когда в документации что-то мне не понятно

и

VB - тут создается приложение Windows, которое может работать в том числе и в связке с SW.

Тут я создаю свой проект, проверяю его, отлаживаю, потом запускаю упомянутый "Package and Deployment Wizard" прямо находясь в среде VB, в своем проекте - 5 кликов на кнопке "Next" и дистрибутив готов.

Вот это что такое: "самостоятельное portable приложение для SW"?

Есть проект, который я создал, потом я создаю дистрибутив, ЭТОТ дистрибутив и переношу на другой комп, запускаю "setup.exe" - происходит установка приложения.

Так же как и любого другого приложения Windows - MSOffice, SW и т.д.

Как иначе? Вы же не копируете установленный SW с одного компа на другой?

Точно также делается и в `C`, т.е. в Visual Studio.

Ссылка на сообщение
Поделиться на других сайтах

ssv22, неформатной лексикой объяснился.

Я имел в виду, что, насколько я знаю, на С++ пишется программа, запаковуется в один файл с расширением exe и его можно свободно переносить на другой компьютер и запускать там без какой-либо установки. Сам так делал, но программа была самостоятельная, вроде калькулятора.

Я не путаю макросы VBA с VB, просто без особого усилия можно взять текст макроса и перенести его в VB project с минимальными изменениями - удобно, согласитесь.

Но! Если писать программу на VB, то для ее использования на другом компьютере нужно делать инсталлятор, что лично мне кажется неудобным. Если писать программу на С++, то она может быть упакована в один exe`шник, не требующий установки(?), но при этом придется лопатить программный код.

Ссылка на сообщение
Поделиться на других сайтах

ssv22, неформатной лексикой объяснился.

Я имел в виду, что, насколько я знаю, на С++ пишется программа, запаковуется в один файл с расширением exe и его можно свободно переносить

на другой компьютер и запускать там без какой-либо установки. Сам так делал, но программа была самостоятельная, вроде калькулятора.

...

Это возможно потому что сама ОС Windows написана на `C` и все билиотеки, которые применялись при создании программы на одном компе, присутствуют и на любом другом, где установлена Windows!

Однако это срабатывает до определенных пределов(размеров/параметров пограммы): если я на своем ПК делаю программу и применяю в ней какие-либо ресурсы (картинки, иконки и др.),

которые НЕ входят в состав Windows, то при простом переносе данного моего EXE-шника на другой ПК эта программа работать

или неправильно будет или вообще не будет.

Потом, когда на С++ пишется программа, она НЕ пакуется в один файл с расширением exe !!!

Она компилируется в этот исполняемый файл и только. И туда попадают не все ресурсы!

Ну вот допустим пишу я программу, создал там свою форму, на которую поместил рисунок(картинку), которую нарисовал сам.

Скомпилировал EXE-шник. Теперь, если его просто скопировать на другой ПК, там этой картинки не будет.

Ну отсутствие картинки еще не катастрофа, а если теряется более серьезный ресурс?

Кроме того, при создании программ на `C` не всегда выходной файл - EXE-шник! Это скорее исключение, чем правило. Обычно результатом является файл с расширением DLL!

Что Вы с ним будете делать на другом ПК?

Если бы все было так просто никто бы не занимался поиском дистрибутивов, достаточно было-бы скопировать файлы на другой ПК и все. Ан нет! Не получится!

Ну вот Вам нужен допустим SW, Вы же не просите кого-то скопировать вам его. Это же бессмысленно!

Что копировать? Ведь SW при установке прописывается в десятки разных мест на компьютере, в реестр...

Поэтому нормальный стиль программирования на любом языке это : 1) создание программы, 2) создание дистрибутива.

...

просто без особого усилия можно взять текст макроса и перенести его в VB project с минимальными изменениями - удобно,

согласитесь.

...

Канечно, именно так я иногда и делаю :-)

...

Но! Если писать программу на VB, то для ее использования на другом компьютере нужно делать инсталлятор, что лично мне кажется неудобным.

Если писать программу на С++, то она может быть упакована в один exe`шник, не требующий установки(?), но при этом придется лопатить программный код.

Для VB инсталлятор не всегда обязателен, если программа небольшая; это было обязательно в Win95-98, может еще в Win2000.

Но, повторюсь:

Нормальный стиль программирования на любом языке это : 1) создание программы, 2) создание дистрибутива

Это закон!

Ссылка на сообщение
Поделиться на других сайтах

Это закон!

Спасибо за разъяснение.

Но как же в таком случае работают portable программы? Вон у меня MathCad 14 состоит из одного exe файла и прекрасно работает.

Или, если уж на то пошло, можно все файлы ресурсов поместить в одну папку с исполняемым файлом, чтобы он их видел и переносить на другой компьютер не инсталлируя?

Ссылка на сообщение
Поделиться на других сайтах

Спасибо за разъяснение.

Но как же в таком случае работают portable программы? Вон у меня MathCad 14 состоит из одного exe файла и прекрасно работает.

Или, если уж на то пошло, можно все файлы ресурсов поместить в одну папку с исполняемым файлом, чтобы он их видел и переносить на другой компьютер не инсталлируя?

Откуда взялся такой термин : "portable программы"?

Этот MathCad 14 из одного exe файла - он лицензионный? :wink:

И как быть с DLL-ками?

Вы суть DLL понимаете? Это же разделяемый ресурс! Его могут использовать несколько программ. А Вы предлагаете для каждой программы иметь свои собственные ресурсы!

Причем некоторые из них - абсолютно одинаковые! Это же какое дублирование... Вам тогда и сотни террабайтных HDD не хватит для их размещения.

Это все уже было в DOS`e.

И чем Вас так пугает процесс инсталляции?

Windows-то инсталировали или просто копировали? :smile:

Ссылка на сообщение
Поделиться на других сайтах

Откуда взялся такой термин : "portable программы"?

Еж ли верить ВикиПедро

Переносимое приложение (<noindex>англ.</noindex> portable application, portable app) — <noindex>программное обеспечение</noindex>, которое для своего запуска не требует процедуры инсталляции на жесткий диск компьютера, и может полностью храниться на съемных носителях информации, таких как <noindex>CD-ROM</noindex>, <noindex>USB flash drive</noindex>, <noindex>флэш-картах</noindex> и даже на дискете, что позволяет использовать данное ПО на многих компьютерах. Такое приложение в идеале может быть настроено так, чтобы считывать свои конфигурационный настройки во время запуска из того же места, где хранятся его собственные программные файлы. Это однако не подразумевает, что переносимое ПО независимо от операционной системы, типа процессора или различного аппаратного обеспечения. Не стоит путать данный термин с <noindex>портируемым</noindex> ПО, которое подразумевает возможность перекомпиляции и запуска программы после незначительных изменений на отличной от исходной компьютерной платформе.

и ещё

В программировании, под порти́рованием понимают адаптацию некоторой программы или её части, с тем чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана. Процесс портирования также называют по́ртингом (от англ. porting), а результат — портом.

Необходимость в выполнении портирования возникает обычно из-за различий в наборе операций процессора, различий между интерфейсами операционной системы, различий в оборудовании, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.

Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей:

1. Портируемость — как возможность единожды откомпилировав код (обычно в некоторый промежуточный код, который затем компилируется во время исполнения, «на лету», англ. Just-In-Time), затем запускать его на множестве платформ без каких-либо изменений.

2. Портируемость — как свойство программного обеспечения, описывающее, насколько легко это ПО может быть портировано. По мере развития операционных систем, языков и техники программирования, становится всё проще портировать программы между различными платформами. Одной из изначальных целей создания языка Си и стандартной библиотеки этого языка — была возможность простого портирования программ между несовместимыми аппаратными платформами. Дополнительные преимущества в плане портируемости могут иметь программы, удовлетворяющие специальным стандартам и правилам написания (см., например Smart Package Manager).

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Jesse
      посмотрел. По дефолту нормировка DFT идёт на 1/sqrt(N), где N - число отсчётов. Сделал нормировку на 1/N Получил амплитуду теперь меньше единицы....
    • AlexKaz
      Стр. 89-90 https://elib.pstu.ru/docview/6701
    • Борман
      Если так то да. Я про статически-эквивалентный метод говорил там выше.
    • gudstartup
      @gudi продублировали ответы по теме а зачем неясно....
    • ANT0N1DZE
      Упрощенный план действий: Начните со стр. 155 https://www.utgt73.ru/uploads/biblioteka/fizika 10.pdf Если будет вращаться быстро и не в вакууме, то надо будет учесть "парус" этого тела, там сопротивление газа зависит от скорости движения. Это уже примерно 1 курс университета (тоже гуглится спокойно). 
    • MagicNight
      Заметил такую особенность, что в PowerMill v6 (возможно и в других тоже) происходит следующее... Создаю NC-файл и туда сбрасываю траектории (около 10-15 на разные фрезы), на выходе некоторые траектории не прописывает вкл охлаждения. То есть в графе Охлаждение на одну из 10-15 траекторий пишет НЕТ, на всех остальных -Стандартное (то есть да) Получается, что из, условно десяти траекторий, одна или две прописываются без включения СОЖ. Но что интересно по отдельности программы выходят с включенной СОЖ, всегда! Не могу понять зависимость с этим. Кто-нибудь сталкивался с этим?
    • ЮрЮрыч
      Вам нужно просто общее количество или оптимальную раскладку для резки наподобии нестинга?
    • Jesse
      да. Забыл добавить. Я там в тестовом примере ещё сверху шум накинул небольшой амплитуды, в 10 раз меньше чем основной сигнал. Если шум убрать, то получится что амплитуда дискретного фурье спектра растёт примерно в sqrt(N2/N1) раз, где N2 - число отсчётов для правого графика, а N1 - для левого. Но не суть.. Мой главный вопрос как получить "рабочую", правильную амплитуду DFT, которую можно было бы вбить в прогу?   не, у меня более простой второй вариант) вот когда скажут заморочиться с ансамблем и случайными процессами, тогда и будуда и комиссии если что-то подобное пробубнить, то мне точно прилетит..   Harmonic Response. На резонанс проверить.   вот сейчас только в голову пришло! Там ведь поправочные коэффы в DFT используются! Типа 1/sqrt(2*Pi) чё т такое. Пойду курить вольфрам
    • Orchestra2603
      Я, честно скажу, не знаю как на практике это проходит, что в нормах пишут и т.д. Стоит задача провести вероятностный анализ (вероятност ьпревышения пределеа текучести, например), или надо просто посчитать динамику на одну вот эту вот историю ускорений, и все? Второй вариант проще, но по-правильному, наверное надо, как в первом варианте.   а какой анализ вы хотите делать?   Если больше отсчетов по частоте, то повышается разрешение в частотной области, и просто пик становится более резким. В предельном случае будет просто одно значение в районе частоты действия силы, а вокруг него везде нули. Но, когда разрешение падает, то амплитуда с пика "сползает" и "растекается" на соседние частоты. Но сама сумма в силу равенства Парсеваля, как вы правильно сказали,  должна быть такой же.   Это очень странно. Впечатление такое, что как будто где-то какой-то косяк с БПФ. Если в начале во времени был синус с амплитудой 1, то на спектр еможет быть 1 (если однсторонний спектр), либо 1/2, если двухстронний спектр. Может, оконная функция какая-то странная? Надо разбираться...  Так а если он задаст на уровне земли как кинематическое возбуждение опорного контура? Вроде же норм... Или речб о том, чтобы убрать из модели опорную конструкцию, на которой держится оборудовнаие?
    • Борман
      и не только. При отсутствии отраслевого ГОСТа, пользуйтесь СП 14.13330.2018. Там найдете нужные коэффициенты.
×
×
  • Создать...