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

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

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




  • Сообщения

    • gudstartup
      да у вас очень древний чемоданчик думаю из 90-х ну его ломать не жалко но если все уже заменили с рабочего то тут даже не знаю что и посоветовать....
    • stanislavz
      Спасибо за ответ. Так этот и был заказан на запас. В машине живой рабочий. Носителя нету, все в памяти hm628128-10 + ээпром.
    • gudstartup
      @stanislavz вы уж сразу еще один контроллер закажите а потом этот доламывайте. а со старым комбинировать не пробовали? у вас там диск или ssd в качестве носителя? может hdd загибается а вы сразу в мат.плату полезли. дисковые операции тоже ввод вывод тормозят...
    • maxx2000
      Подушную малость. Чё там. Уже в упор научились резьбу резать без выходной канавки?
    • ispite
      Здравствуйте, не могу построить стандартную сетку, что не позволяет дальше провести расчёт. Получается сделать сетку "на основе кривизны", но солид отказывается считать, после нажатия кнопки "запустить исследование" происходит сбой. https://disk.yandex.ru/d/D8wvRbYMW1lWjQ
    • ddm
      изготовить по чертежу с последующим покрытием,цинкование ,по 1000 шт каждой позиции ,предложение отправить на почту qwer463@yandex.ru
    • sklide008
      И еще можно ли задать горчие клавиши на кнопки открыть, скрыть и тд?
    • sklide008
      Подскажите, пожалуйста, в инвенторе есть такой пункт упорядочи по алфавиту дерево. Здесь найти такого не могу, пытался treesorter ставить но он добавляет просто в папку а не сортирует в дереве. Есть ли такой макрос чтобы все детали в дереве по порядку и алфавиту шли?
    • stanislavz
      Есть станок с данным контроллером. Все работает. Недавно была проблема с передачей данных - установил запасной контроллер. А запасной контроллер сказал нет работе. Проблема была в программе компьютера для передачи данных. Грустно, досадно, контроллер был куплен как рабочий. Как бы и не горит, но необходимо поправить. Плата управления с процессором mc68020, память hm628128-10. Память буферным питанием от 3 батареек + 0,5 Фарада на плате как буфер для замены батареек на 1 сутки. Лежало долго, без батареек. Симптомы: После первого включения, в памяти были и программы и параметры (0 странность). Честно, удивило. Но - система жутко тормозит, отклик на нажатие кнопки 3-5 секунд. В таком режиме сумел закачать машинные параметры под свой станок. Но это заняло час.. 4 строки и ждет секунд 10 итд. Есть видео. Перекинул с рабочего контроллера, БП, плату плц, ээпром плц - все то же. Проверил осциллографом кварцы живые , частота есть, амплитуда хорошая. 1 странность - после манипуляций по замене батарейки, старые записи из памяти исчезли. Ничего не коротнул. Возможно 0,5 Ф был не заряжен. Там тоже необходимы сутки для зарядки. Но как оно было запечатоно до этого - мистика. 2 странность. Если плата лежит ночь без питания, только с буфером - потом 2-3 минуты работает хорошо. 3 аналогично работает 2-3 минуты если питание отключить и очистить питание памяти (выпаял 0,5 Ф буфер с платы) Проверка памяти на старте есть. Проходит хорошо. На зависает, на холодную пайку не похоже. Шевелил / двигал все. Да и не виснет, именно тормозит. При том если оставить на час - тоже все стабильно плохо. Если набрать быстро 5 символей- экран сразу пуст, но после задержки символы будут на экране. Заказал второй процессор и память. 10 штук. Подавал прямо 5 вольт на память - все так же. Токи потребления между плохой и хорошей платой смогу проверит.    
    • brigval
×
×
  • Создать...