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

Программирование для 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 пользователей

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



×
×
  • Создать...