Daniel1982

Solidworks api vba

Pinned posts

ID: 1   Опубликовано: (изменено)

Добрый день!

 

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

2321312312.JPG

Изменено пользователем Daniel1982
Добавил наглядное изображение

Поделиться сообщением


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


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

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

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

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

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

1 пользователю понравилось это

Поделиться сообщением


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

Сделал сборку емкости (цилиндрическо-конического танка) с большим числом зависимостей. Охлаждение представляет собой "швеллер" с заданными границами  (мин 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

 

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

ID: 9   Опубликовано: (изменено)

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

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

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

Изменено пользователем streamdown
1 пользователю понравилось это

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

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

2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 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

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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



  • Реклама

  • Сообщения

    • Bors
      Здравствуйте.
      Подскажите пожалуйста, как при построении базовых тел или в эскизнике задавать дробные значения в дюймах? Например вместо 3 7/8" вынужден вводить 3,875". Если число сложнее этого, к примеру 2 17/32" приходится вычислять на калькуляторе его десятичное значение (2,53125") и вводить уже его. В справке, как ни странно, ответа не нашёл. Заранее спасибо.
       
    • Sagrado911
      Доброго времени суток Уважаемые форумчане При использовании DriveWorks возникли проблемы с маштабом на чертеже.
      Как сделать так чтобы масштаб детали всегда вписывался в определенное заданное поле.
      Для примера я указываю что деталь должна отображаться на половине листа и она всегда должна так отображаться несмотря на размеры которые я задаю в DriveWorks при ее создании (длина, ширина, толщина). То как она сейчас отображается Вы можете увидеть в прикрепленном файле.   Спасибо. Korpus_shukhliady_GTV_ PK-0H45XP 0004.rar
    • valeo-ua
      Вот с этого места подробнее :-) По твердости: не указывайте ничего лишнего на чертеже. Приложите к чертежу распечатку странички каталога и все!
    • Kelny
      В незаконности получения продукта. В конфликте с Windows или его обновлениями. В несовместимостью с антивирусом. И т.п.
    • Борман
      25 рисунков японского художника непростой жизни крокодилов, живущих среди людей. https://trollno.com/25-risunkov-yaponskogo-hudozhnika-neprostoj-zhizni-krokodilov-zhivushhih-sredi-lyudej/
    • VOleg
      Вы вырываете фразу без связи с беседой. Я веду речь о заимствованных (чужих) моделях, которые были сделаны без связи с чертежом. Обычно в таких случаях в моделях не проводятся изменения, да и просто ошибки построения. Использовать такие модели нельзя. А т.к. чертеж (заимствованного изделия) содержит все изменения, приходится рисовать СВОЮ модель именно по нему. Впрочем, и модели, связанные с чертежом, в основном построены так, что и в этом случае приходится строить свою модель. Опять же заимствованные (чужие) модели. Надо признаться, что и свои модели 10 летней давности я перерисовываю... Молодой был, дурной.
    • leoekb
      Приветствую уважаемых знатоков КОМПАСа, прошу не пинать сильно за банальный наверное вопрос, как проставить размер  с полями допуска такого типа как проставляется на чертеже, верхний индекс и нижний одновременно. Вроде весь функционал редактора ТТ прошерстил, из спецзнаков могу либо поставить только верхний индекс либо только нижний иначе они сдвигаются сильно относительно друг друга (индексы), ничего лучшего пока как на картинке не придумал сделать.
    • SVB
    • Sergei
        Да нет никакого технолога. Есть мастер, но он только распределяет работы и гоняет пьяниц, как технолог он ноль. Роль технолога выполняет слесарь-инструментальщик. Наладчику фрезерных станков с ЧПУ выдаётся только чертёж и 3D модель, дальше он сам себе технолог-программист-наладчик. Лезть в каталог производителя заготовок он не будет. Кстати, есть одна талантливая симпатичная девушка, которая работает и конструктором (частично) и наладчиком фрезерных станков с ЧПУ и электроэрозионистом и технологом-программистом. Бывают такие уникумы. :-)))))
    • davyd
      Как только начинаю рисовать в эскизе, Solidworks 2018 вылетает!:( В чём может быть проблема? Спасибо!