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

Solidworks api vba


Daniel1982

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

Добрый день!

 

Как прописать в макросе на VBA  изменение параметра величины скручивания в бобышке по траектории? Моих знаний хватает только на простые действия, а здесь обычной записью макроса не могу получить "код" и команду на изменение этого параметра не получается. Желательно примером...(заранее напишу "любителям" очевидных ответов что google и help я просматривал).

2321312312.JPG

Изменено пользователем Daniel1982
Добавил наглядное изображение
Ссылка на сообщение
Поделиться на других сайтах


2 часа назад, Daniel1982 сказал:

Моих знаний хватает только на простые действия

Покажите, что у вас уже есть.

Вроде это то, что вам нужно http://help.solidworks.com/2015/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IFeatureManager~FeatureExtrusion3.html

Если ничего не понятно, мне жаль, я с этим объектом не работал, мне тоже ничего не понятно.

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

Сделал сборку емкости (цилиндрическо-конического танка) с большим числом зависимостей. Охлаждение представляет собой "швеллер" с заданными границами  (мин 100мм макс 161мм) между витками. Сейчас все перестраивается без ошибок, перестраиваются практически все размеры деталей и подсборок (кроме нескольких пар...) в зависимости от объема емкости. 

Расчет такой, при различных объемах (то есть заданном угле конуса, радиусах конуса, цилиндра и торосферы и их толщинах) в сборке работает вырез под люк и этот вырез не должен пересекать "швеллер" охлаждения (условия для размещения "швеллера такие":пределы 100мм-161мм между витками, начало от центра люка и конец на высоте 75% от полного объема емкости).

Так вот...я могу рассчитать по 100мм или по 161мм количество витков (или угол поворота) в зависимости от входных данных -высоты и радиуса цилиндра. Рассчитать так что выполнятся все условия. Для этого мне необходима команда или процедура которую я могу обозначить как переменную и при помощи простой на мой взгляд формулы вычислить. При записи макроса на редактировании определения - "по траектории" получается вот что : 

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("По траектории1@швеллер1-1@емкость1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Эскиз3@швеллер1-1@емкость1", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Эскиз2@швеллер1-1@емкость1", "SKETCH", 0, 0, 0, True, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Эскиз3@швеллер1-1@емкость1", "SKETCH", 0, 0, 0, False, 4, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Эскиз2@швеллер1-1@емкость1", "SKETCH", 0, 0, 0, True, 1, Nothing, 0)
Part.EditAssembly
Part.ClearSelection2 True
End Sub

 

То есть самого действия нет! видно что есть изменение метки эскиза 3 - "...False, 4, Nothing" и эскиза 2 - "...True, 1, Nothing". Результат по этому макросу - автоматическое выделение двух эскизов без их редактирования, просто выделение (как через шифт...).

В хелпах нашел - TwistAngle, в примерах (ссылка) это свойство определяется оператором Dim, то есть оно может быть переменной, но просто объявить его и затем назначить не получается, задавал разные типы.

 

 

123321.jpg

321.JPG

1234.JPG

432.JPG

456.JPG

Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, ILL сказал:

@Daniel1982 , на будущее.. Тема про Solidworks API:

 

http://cccp3d.ru/topic/27048-solidworks-api/?do=getLastComment

 

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

Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, ILL сказал:

Гуру SW API как-то проспали эту тему..

:))) Ну тогда можно тему закрывать, ответа на форуме не нашлось?

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

Это надо хелп по АПИ ковырять.. Главное правильно запрос в поиске на омериканском написать..

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Daniel1982 сказал:

ответа на форуме не нашлось?

а если такой ответ: как хорошо вы разобрались с DriveWorks?

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
34 минуты назад, streamdown сказал:

а если такой ответ: как хорошо вы разобрались с DriveWorks?

Буду разбираться с DriveWorks, но потом. Сначала добью то что начал и оставлю код здесь, может кому и пригодится.

StreamDivision с недавнего времени в закладки добавил, интересной темой занимаетесь Олег!

Ссылка на сообщение
Поделиться на других сайтах
53 минуты назад, Daniel1982 сказал:

Сначала добью то что начал

если вы спрашиваете как изменить параметр фичерса, то вот: покопайтесь в  этом макро но "добивать" вам ещё долго))

Ссылка на сообщение
Поделиться на других сайтах
В 23.03.2018 в 23:55, streamdown сказал:

если вы спрашиваете как изменить параметр фичерса, то вот: покопайтесь в  этом макро но "добивать" вам ещё долго))

 

Set myFeature = Part.FeatureManager.InsertProtrusionSwept3(False, False, 8, False, False, 0, 0, False, 0, 0, 0, 0, True, True, True, n, True) 

строчка которая отвечает за построение (где TwistCtrlOption = 8, а TwistAngle = n ).

Правда теперь при каждой итерации строится следующая бобышка по траектории (это при построении с эскизов), то есть именно построение, но не изменение в уже созданной бобышке по траектории.

При добавлении строки редактирования в начале кода

boolstatus = Part.Extension.SelectByID2("По траектории2", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)

солид вылетает.

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

Все решилось проще.

Нашел размер отвечающий за угол в модели и который можно просто задать (записью макроса).

Надо было не "редактировать определение", а изменить "размер" величины градуса в твердом теле (причем в модели задать его можно только от 0 до 360, а в макросе изменить можно на любой угол - в радианах).

Всем спасибо! Было интересно:)

 

123231.JPG

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

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

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

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

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

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

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

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

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

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

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




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