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

Программирование для Solidworks - с чего начать?


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

Уважаемые профессионалы!

Использую эту САПР относительно недавно, года 2. В принципе, особых проблем, с использованием стандартных функций системы (в моделировании, построении сборок и КД) не испытываю, но есть огромное количество пожеланий к оной, которые, как я понял, кроме меня - вряд-ли кто будет исполнять. Соответственно, встал вопрос о программировании для этой сапр. Пытался разобраться с мануалом по Solidworks API, не помогло, сказывается нехватка знаний по программированию в VBA и, естессно, ангийского языка. С первым пунктом, в принципе, не очень сложно, есть умные книжки, и некоторый опыт программирования в Pascal, позже, в AutoLISP и Delphi. Признаюсь чесно, никогда крутым программером не был, но для автокада, ваял все что мне было нужно, правда, не использовал VBA, видимо, зря. Пытался записывать макросы, а потом разбираться в листингах - тоже, результаты - ниже среднего. Вопрос: Существуют-ли какие-нибудь русскоязычные материалы по этому вопросу? Возможно, кто-нибудь из вас сталкивался с подобной проблемой и нашел ее решение. В курсе, что официального русскоязычного описания API не было, потому и пристаю с глупыми вопросами к вам! Заранее благодарен всем, кто как-то отреагировал и, еще раз, прошу прощения, за глупые вопросы!

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


1) посмотреть здесь:

<noindex>http://www.pogruzka.com/julio/</noindex>

там есть полезные утилиты, некоторые с исходниками;

2) берем исходник и выполняем в пошаговом режиме (VB), смотрим что прога делает, как работают функци API и тд;

3) почти все действия, которые пользователь делает в SW записываются в файл "ХХХ:\Program Files\SolidWorks\swxJRNL.swj", можно посмотреть, изучить;

4) включить запись макросов SW при выполнении группы каких-либо действий - посмотреть, изучить в пошаговом режиме;

Вот, первое, что пришло в голову.

Удачи!

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

Вот спасибо, про лог - не знал, обязательно помотрю, потому как многое, из того, что доступно на сайте мне, пока, непонятно, либо, опять-таки, пока не нужно. Да и примеров там не так уж и много, по крайней мере, по моделированию параметрических моделей, с использованием VBA, я че-то не нашел, а до свойств файлов и конфигураций - пока далеко, тоже нужно, но для начала, нужно заставить его моделировать, а потом, согласно модели, выносить ее свойства. В любом случае, огромное спасибо! :clap_1:

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

Что-то не нашел я этого файла, только в Туторах валяется такой, и никакого отношения (оно и понятно) к тому что я делаю в солиде не имеет. :(

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

Что-то не нашел я этого файла, только в Туторах валяется такой, и никакого отношения (оно и понятно) к тому что я делаю в солиде не имеет. :(

<{POST_SNAPBACK}>

Какого файла?

Этого:

"ХХХ:\Program Files\SolidWorks\swxJRNL.swj" ?

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

Именно его... просмотрел настройки в солидворкс - нигде о нем ни слова не нашел. Может это в 2007 нормально?

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

Именно его... просмотрел настройки в солидворкс - нигде о нем ни слова не нашел. Может это в 2007 нормально?

<{POST_SNAPBACK}>

Да нет, насколько я помню уже в SW2003 он был. Я вот не помню, чтобы я где-то в установках его включал.

Может как-то по другому называется?

Если попробовать так: загрузить SW, сделать какую-либо операцию,

свернуть SW и сделать поиск последних файлов (я в TotalCommander`e это обычно делаю).

Вот для примера мой файл (я его сильно сократил, последний размер его - 380Кб):

"

' ******************************************************************************

' swxJRNL.swj - journal recorded on 01/06/07 by ssvadmin

' *****************************************************************************

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim Feature As Object

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.OpenDoc6 ("E:\ADOC_SSV\ADOC SW\Perpetum\Disk1_СБ.SLDASM", 2, 0, "", longstatus, longwarnings)

Set Part = swApp.ActivateDoc2 ("Disk1_СБ.SLDASM", False, longstatus)

swApp.ActiveDoc.ActiveView.FrameLeft = 0

swApp.ActiveDoc.ActiveView.FrameTop = 0

swApp.ActiveDoc.ActiveView.FrameState = 1

swApp.ActiveDoc.ActiveView.FrameState = 1

swApp.ActiveDoc.ActiveView.FrameState = 1

boolstatus = Part.Extension.SelectByID2("", "FACE", -0.02741962598139, 0.02299999999991, 0.004757867699027, False, 0, Nothing, 0)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("", "FACE", -0.03000295000368, 0.02299999999991, 0.000434542130165, False, 0, Nothing, 0)

Part.Save2 FALSE

Set Part = swApp.ActivateDoc2 ("Magn.SLDPRT", False, longstatus)

Part.Save2 FALSE

swApp.CloseAllDocuments True

swApp.ExitApp

End Sub

"

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

Этот файл может оказаться в папке рабочей.

Либо в Common Files.

Или C:\Documents and Settings\<USER>\Application Data\SolidWorks и т.д. Можно попробовать поиском.

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

Этот файл может оказаться в папке рабочей.

Либо в Common Files.

Или C:\Documents and Settings\<USER>\Application Data\SolidWorks и т.д. Можно попробовать поиском.

<{POST_SNAPBACK}>

Но он все-таки у всех существует?

Или я в чем-то ошибаюсь?

У меня лично он "всю жизнь" находился в папке "XXX:\Program Files\SolidWorks\swxJRNL.swj".

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

Существует.

Я думаю в разных версиях солида он в разных местах.

2005 у меня оставлял его в рабочей папке. Было удобно, т.к. для конкретных проектов свой файл был.

Сейчас в 2006 сп 4.1 у меня он находится в папке

C:\Documents and Settings\Peshkoff_VN\Application Data\SolidWorks

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

Да нет же, я ввобще, не только swxJRNL.swj, но и *.swj искал на всем диске, нашел тоько один, вышеупомянутый файл... :no:

О, нашел... C:\Documents and Settings\<Username>\Application Data\SolidWorks

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

Всем привет.

У меня в SW2007SP2 файл журнала СВ:

c:\Documents and Settings\XXXX\Application Data\SolidWorks\swxJRNL.swj

чуть-чууть опоздал... :-)

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

Чет я не пойму, как заставить скрипт проставить размеры на эскизе, не выводя ниалогового окна, тоест, не спрашивая пользователя... Суть в том, что основные, скажем, размеры, пользователь забивает в форме, а вот те, которые рассчитались самим скриптом?, тоесть, начертит он линию, скажем, уже по вбитому размеру, но, чтобы определить эскиз, нужно, чтобы он его еще и проставил. Получается только так: Он чертит линию, ставит размер и переспрашивает его в меню, чего мне не нужно. Согласен, чо нет проблем, заставить его, потом вбить нужный, но это не интересно. Нужно, чтобы он пользователя без нужды, не дергал...

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

Чет я не пойму, как заставить скрипт проставить ...

Хых...

никакой скрипт за тебя работать не будет, и никак его НЕ заставишь работать.

Работа скрипта - это прежде всего работа человека, который его(скрипт) создал.

Какая задача стоит перед тобой??

Сформулируй.

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

А вот попытаешься объяснить это другому человеку даже далекому от техники и, вдруг, самому становится все понятно!

Эт по-моему в психологии какое- то понятие есть. Я имею ввиду "вслух_произношение".

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

Короче: Я в открытом документе детали запускаю "запись". Далее, выбираю плоскость"Front", создаю в ней эскиз, в эскизе рисую прямоугольник, скажем, от точки "0", ставлю 2 размера, X и Y. Естественно солид меня спрашивает эти размеры. В полученом скрипте есть такаие строки:

boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", -0.01815158806545, 0.03563089509143, 0, False, 0, Nothing, 0)

Dim Annotation As Object

Set Annotation = Part.AddDimension2(-0.0350931, 0.029177, 0)

Part.ClearSelection2 True

Part.Parameter("D1@Эскиз1").SystemValue = 0.6

Тоесть, как я понял, он выбирает объект "Line2", далее, объявлеят переменную Annotation как Object и присваивает ей значение Part.AddDimension2(-0.0350931, 0.029177, 0), тобишь, высвечивает окошко для ввода размера, ну, с условиями размещения размерной линии и т.п. Далее, снимает выделение (как я и делал) и применяет размеру "D1@Эскиз1" значение 0.6, но уже не выводя окошко для ввода размера, хотя, когда я записывал, естественно оно тоже было. Нужно, чтобы программа с самого начала не просиля меня ввести значение размера (не показывала это окошко) а просто добавляла размер "D1@Эскиз1" к "Line2"с уще посчитанным, в ней-же, размером.

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

:rolleyes:

Посмотри настройки

Настройки > Параметры > Настройки пользователя > Общие > Ввести значение размера

и сниму галочку

В обычном (руками) работает

Скорее всего и в автоматическом (с помощью макроса) будет работать

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

Точняк! По умолчанию эта опция включена, но никто не мешает сделать так:

swApp.SetUserPreferenceToggle swInputDimValOnCreate, False

......

Образмерить......

......

swApp.SetUserPreferenceToggle swInputDimValOnCreate, True

Пасибо!

А можно (и так будет правильнее) вот так:

Sub main()

Dim DimValOn As Boolean 'объявляю переменную состояния этого параметра

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

DimValOn = swInputDimValOnCreate 'присваиваю ей текущее значение параметра

swApp.ActiveDoc.ActiveView.FrameState = 1

swApp.SetUserPreferenceToggle swInputDimValOnCreate, False 'выключаю параметр

boolstatus = Part.Extension.SelectByID2("Front", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.SketchRectangle -0.01265105973025, -0.01736156069364, 0, 0.02476377649326, 0.04185616570328, 0, 1

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", -0.01265105973025, 0.01978410404624, 0, False, 0, Nothing, 0)

Dim Annotation As Object

Set Annotation = Part.AddDimension2(-0.0218029, 0.0181691, 0)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0.005921772639692, 0.04158699421965, 0, False, 0, Nothing, 0)

Set Annotation = Part.AddDimension2(0.00619094, 0.052623, 0)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("D1@Эскиз1@Деталь1.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.SketchManager.InsertSketch True

swApp.SetUserPreferenceToggle swInputDimValOnCreate, DimValOn 'возвращаю значение параметра в исходное состояние

End Sub

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

Виноват, фигню спорол...

Для того, чтобы присвоить аеременной текущее значение флага "Ввести значение размера" нужно вот чего:

DimValOn=SldWorks.GetUserPreferenceToggle (swInputDimValOnCreate)

Естесственно, предварительно объявив переменную

DimValOn как Boolean....

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

Это конечно все клево, вот только у меня swApp.SetUserPreferenceToggle отказывался упорно работать.

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

Интересно получиться ли сейчас у тебя. Я работал в СВ2006 сп 0.0

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • alex0800
      у вас в примере в первом кадре цикла не хватает  R --глубина чистового прохода. это раз  второе большая высота резьбы при таком шаге резьбы при нарезании резьбы м60*1.5   глубина резьбы Р920
    • AlexKaz
      Есть другой подход. Конструктор сначала советуется с прочнистом, предоставляю ему полную сборку в нативном каде; прочнист вычищает в нативном всю ненужную мелочь и проводит расчёты, модя геометрию под себя и советуясь с конструктором; потом в несколько этапов таких "советов" конструктор финалит геометрию и КД. А не наоборот... 100500 вариантов голимого stp никому не впёрлось заново вычищать и пересчитывать с нуля...
    • Борман
    • Bot
      19-27 августа 2024 г. состоится серия вебинаров, организованная компанией «Топ Системы», по работе с системой T‑FLEX CAD для преподавателей и специалистов в сфере образования. Летняя школа САПР для преподавателей проходит в рамках программы «Факультет САПР». Ведущими темами онлайн мероприятия будут базовые функции и логика работы в системе T‑FLEX CAD. Летняя школа САПР это: Обмен опытом в сфере технического образования; Знакомство с подходами к процессам оцифровки учебных материалов средствами T FLEX CAD; Метод поддержки образовательных учреждений при обучении будущего поколения инженеров и специалистов управления производством. Темы Ключевые возможности T FLEX CAD 17 и их применение в учебном процессе; Элементы геометрического черчения; Формообразование; Конструктивные элементы; Вспомогательная геометрия. 3D–моделирование; Проекционные виды. Оформление чертежа; Сборка, Анимация разборки. Сборочный чертёж; Средства анализа [...] View the full article
    • artberesta
      Спасибо вам, я понял. У меня не выходило раскрасить готовые прямоугольники которые я уже смоделировал чёрный линией.Как можно выбрать линию которая наслаивается на другую линию для того что бы придать ей цвет   который нужен?  
    • sapr71
      Проверил. Сработало. Теперь выводит правильно. Все оказалось проще, чем я думал. Спасибо mr_Voden.
    • ЮрЮрыч
      У меня это возникает на виртуальных листовых компонентах при выполнении выреза. Поэтому листовые сразу сохраняю во внешнем файле. 
    • mr_Voden
    • gemini74
      Вы работаете в конторе, основной CAD - Компас, ну немного в SW. Конструктора делают модели в 3D. Для переноса в CAE нужно эту модель сборки упростить, убрать крепеж, сделать как можно меньше тел, убрать зазоры под сварку, убрать мелкие элементы. Потом еще Вы предлагаете сделать модель в оболочках. Это дополнительное время . А если эту модель еще для тепловых расчетов параллельно исследовать? Тоже в оболочках? Перевод в оболочку тоже не всегда корректно можно сделать. Она упрощается до простых форм . Или  строить в отдельном моделировщике расчетную модель, тоже время. В чем целесообразность оболочек? А для чего контроль сетки в SW, разные Якобианы? Оболочки более упрощенная , абстрактная модель , когда можно отбросить влияние формы , с минимумом поверхностей , больших и мелких в модели. Не так?
    • sapr71
      Если я правильно вас понял, то ось А это YZ, а ось С это XY.   Станок вот с таким столом, как на картинке.  
×
×
  • Создать...