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

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 пользователей

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




  • Сообщения

    • eljer0n
      @malvi.dp в общем порядок следующий (на каждое исполнение свой чертеж и позиция в спецификации):   Для исполнения с 2мя знаками. 1. Есть деталь с именем формата ХХ-01.01-01 (последнее -01 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации (как у вас на картинке). Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с корректным именем. 5. В спецификации сборки все отображается корректно.     Для исполнения с 3мя знаками. 1. Есть деталь с именем формата ХХ-01.01-011 (последнее -011 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации. Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с некорректным именем, а именно - с обрезанным до двух знаков исполнением (-01). 5. В спецификации сборки шифр отображается (внезапно! может какой глюк был: у солида или у меня ) корректно, как и у вас на рисунке.     Выходит, загвоздка все-таки только в сохранялке чертежа.
    • gudstartup
      да информация о решенной проблеме очень важна так что будем ждать хороших новостей!
    • mrVladimir
      @gudstartup Спасибо Вам за помощь. Теперь дело в приобретении платы. Как что-то получится (сперва приобрести, потом поставить) обязательно отпишусь.
    • gudstartup
      а как вы taxid фирмы нашли?
    • gudstartup
      все что я написал в цитате выше по теме полная фигня в связи с вновь приобретённой информацией. можно менять любые компоненты в пределах серии чпу если только не меняете по или записываете oprminf но  всегда могут быть нюансы  @mrVladimir все должно получиться извините за то что выдал непроверенную информацию за мнение типа знающего эксперта оказывается я 
    • malvi.dp
      Какое у детали имя файла и как формируете Обозначение и Наименование? Вы каждое исполнение сохраняете в новый чертеж? Или это групповой чертеж? Если групповой-то имя конфигурации в нем быть не должно. Стоит ли галочка "Исполнение" "Из конфигурации"? На сколько мне не изменяет память макрос сохраняет файл чертежа с тем же именем что и файл модели в папке модели. В спецификации все правильно отображается, даже если знаков исполнений больше трех  
    • gudstartup
      и главная деталь чтобы на системе была remote option system а именно файл oprminf.000 c сертификатами и были ли проблемы с ними после замены компонентов.
    • boomeeeer
      с него родимого
    • Grundick
    • eljer0n
      Большое спасибо! Посмотрю. Но, судя по всему, даже если удастся заставить его сохранять чертеж с трехзначным исполнением, видимо, в той же спецификации правильного отображения не добиться. У Леона с товарищем был об этом разговор, что солид вроде как не воспринимает исполнения дальше двузначного. Хотя, может и я неправильно понял. Вернусь к этому вопросу чуть позже. Еще раз спасибо за совет.
×
×
  • Создать...