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

Программирование на VB под SolidWork


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

Хочу написать программу для автоматической генерации программ для обработки деталей на станках с ЧПУ (на первом этапе - хотя бы сверление отверстий). Сам генератор написать проблем нет, а проблема в получении параметров отверстий (координаты, диаметр, глубина) с детали (или чертежа - откуда удобней). Пытался разобраться по sldworksapi - не особо получилось. Может кто толкнет в нужную сторону или, лучше всего, даст ссылку на хороший учебник на русском языке?

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


Хочу написать программу для автоматической генерации программ для обработки деталей на станках с ЧПУ (на первом этапе - хотя бы сверление отверстий). Сам генератор написать проблем нет, а проблема в получении параметров отверстий (координаты, диаметр, глубина) с детали (или чертежа - откуда удобней).

Идея на мой взгляд очень благая, в свое время советовал небезызвестному Турте писать свою программу как приложение к параметрическому CAD, но там не достучатсья, конечно.

Единственное, от чего хочу предостеречь - от иллюзии, что

генератор написать проблем нет,

Не такая это простая вещь на современном-то уровне.

Возможно имеет смысл сделать некоторый интерфейс между CAD и CAM системой для передачи параметров из первой во вторую.

Кстати, посмотрите САМ пакет FeatureWorks - там это (распознавание элементов и использование их для обработки) решено на некотором уровне.

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

Генератор то я написал уже, только параметры отверстий вносятся "ручками", хочу автоматизировать данный процесс. Мне и надо всего лишь собрать отверстия в массив - но как. :confused_1:

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

А генератор для своих личных целей или последующего распространения?? Думаю, на форуме найдутся желающие его попробовать..

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

Генератор то я написал уже, только параметры отверстий вносятся "ручками", хочу автоматизировать данный процесс. Мне и надо всего лишь собрать отверстия в массив - но как.

Ну на сверление-то оно не смертельно.

Даже жаль что не могу помочь, очень уж интересная тема.

А народ в темах про API документацию выкладывал - смотрели?

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

А генератор для своих личных целей или последующего распространения?? Думаю, на форуме найдутся желающие его попробовать..

Для работы. Он генерирует код для фрезерно-присадочных станков типа "ROVER". Код - обычный текстовый файл в котором в нужном порядке и с нужными разделителями записаны шаги обработки детали.
Ссылка на сообщение
Поделиться на других сайтах

у макросов на VB есть неприятная особенность не запускаться на новых версиях солида.

раньше занимался, для каждой версии надо было модифицировать, модифицировать... потом забросил это дело

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

у макросов на VB есть неприятная особенность не запускаться на новых версиях солида.

раньше занимался, для каждой версии надо было модифицировать, модифицировать... потом забросил это дело

Макросы на VB не пишутся, они делаются на VBA.

И это не "у макросов на VB есть неприятная особенность не запускаться на новых версиях солида" , а у тех кто их писал.

Надо же думать про будущие версии...

Тут типа техподдержки нужно, но кто ж ее делать будет-то? За бесплатно.

Обычно макрописатели пишут для себе, как автор перешел на другую версию - исправил, не перешел - значит не судьба...

...

А народ в темах про API документацию выкладывал - смотрели?

В SW API есть масса примеров по работе с отверстиями: определение всех их параметров...

`WizardHoleFeatureData2` объект тут надо смотреть - там все параметры есть.

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

`WizardHoleFeatureData2` объект тут надо смотреть - там все параметры есть.

Этот объект еще не смотрел. Спасибо, буду разбираться.
Ссылка на сообщение
Поделиться на других сайтах

Этот объект еще не смотрел. Спасибо, буду разбираться.

Тут еще не надо путать термины:

для SW "истинное" отверстие - есть "Hole". И если оно без резьбы, сквозное, то его легко можно спутать с обычным "Вытянуть" ("Cut").

Как Вы планируете(или НЕ планируете) обрабатывать объекты, похожие на отверстия, но полученные инструментом "Вытянуть" ?

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

Ага, мне, вообще-то, нужен как раз "Cut". Видимо какой-то другой объект нужен?

Это надо смотреть:

FeatureManager::FeatureCut

FeatureManager::FeatureExtrusion2

Ну и отверстие м.б. получено вращением эскиза с вырезом, тут имеем `revolve feature`. Его данные в `RevolveFeatureData2 Object`

Для определения типа надо смотреть: `Feature::GetTypeName2`

А как быть с глубиной? Дно глухого отверстия в этом случае будет плоским, а не как от сверла!

PS какая версия SW - есть отличия между SW2007/8/9 !!!

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

Вопрос может и очень глупый, но все же:

Вы собираетесь писать интерактивный модуль (чтоб человек мышкой тыкал на все обрабатываемые поверхности)

или определять их автоматом?

если вдруг последнее, то как вариант можно просто парсить step-файл не привязываясь к солиду вообще

(сделайте простенький тестовый файлик и вы увидите, что там тоже есть координаты и элементы эскиза, операций с ним и пр.)

единственное ограничение -- все отверстия должны выполнятся единообразно (т.е., например операцией вращения)

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

если вдруг последнее, то как вариант можно просто парсить step-файл не привязываясь к солиду вообще

(сделайте простенький тестовый файлик и вы увидите, что там тоже есть координаты и элементы эскиза, операций с ним и пр.)

Можно поподробнее - что такое step-файл?

Пока нашел наиболее подходящее решение: Face => Surfase => CylinderParams. Это свойство возвращает массив в котором и диаметр и координаты относительно точки Origin. Единственно, что надо определять в какой плоскости лежит выбранная грань - но это как я понимаю, можно из того же массива. Чтобы пересчитать координаты от базы получаю габариты детали с помощью св-ва PlaneParam. Пока двигаюсь в этом направлении. Если у кого есть хорошие идеи - заранее спасибо.

PS: Отверстия будут выбираться автоматом, т.е. юзер из приложения выбирает файл детали (указывает путь к ней) - и все. Solid при этом может быть закрыт.

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

единственное ограничение -- все отверстия должны выполнятся единообразно (т.е., например операцией вращения)

Все же, имхо, правильнее, работать со стандартным Hole - там и все параметры и координаты тут же - читаешь и загоняешь в цикл. По идее-то...
Ссылка на сообщение
Поделиться на других сайтах

Все же, имхо, правильнее, работать со стандартным Hole

Оно, конечно правильнее, но у нас на работе повелось отверстия делать вырезом - весь архив сделан так.
Ссылка на сообщение
Поделиться на других сайтах

Оно, конечно правильнее, но у нас на работе повелось отверстия делать вырезом - весь архив сделан так.

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

упс... "фартануло"...

Да уж ...

можно просто парсить step-файл

Не врубился сразу о чем это :). А когда врубился - посмотрел и подумал. Может, в самом деле вариант? Чтоб не париться. Пока не понял где там что , но думаю информация о детали должна быть полная.
Ссылка на сообщение
Поделиться на других сайтах

Можно поподробнее - что такое step-файл?

Пока нашел наиболее подходящее решение: Face => Surfase => CylinderParams. Это свойство возвращает массив в котором и диаметр и координаты относительно точки Origin. Единственно, что надо определять в какой плоскости лежит выбранная грань - но это как я понимаю, можно из того же массива. Чтобы пересчитать координаты от базы получаю габариты детали с помощью св-ва PlaneParam. Пока двигаюсь в этом направлении. Если у кого есть хорошие идеи - заранее спасибо.

PS: Отверстия будут выбираться автоматом, т.е. юзер из приложения выбирает файл детали (указывает путь к ней) - и все. Solid при этом может быть закрыт.

Что-то это не туда Вы пошли!

"Face => Surfase => CylinderParams" - это откуда и что это за запись такая, на каком языке?

...

PS: Отверстия будут выбираться автоматом, т.е. юзер из приложения выбирает файл детали (указывает путь к ней) - и все. Solid при этом может быть закрыт.

какой файл выбирает юзер: файл детали SW (*.sldprt) или файл `step` ?

В первом случае надо открыть файл детали SW (*.sldprt) и путем сканирования дерева построений найти все `Hole` и считывать их параметры.

Во втором - для получения файл `step`, также надо открыть файл детали SW (*.sldprt), сохранить его в формате `step`, закрыть SW и далее анализировать полученный step-файл.

Без открытия SW можно обойтись только если Вы знаете формат файла детали SW (*.sldprt)!

Но это уже на грани законности - декодирование, дизассемблирование и т.п.

Потом, в версии SW2009 есть такая фишка:

если Вы сделали отверстие инструментом `Cut` и при включенном режиме отображения манипуляторов, можно "случайно" зацепить манипулятор глубины этого элемента `Cut` и перетащить его НЕ вглубь детали, а в другую сторону, то элемент `Cut` превращается в элемент `Extrude`. Отверстие как-бы выворачивается наизнанку.

Т.е. вместо отверстия запросто можно получить "бобышку" !

Оно, конечно правильнее, но у нас на работе повелось отверстия делать вырезом - весь архив сделан так.

А как же фаски, зенковки, цековки, резьба, дно глухого отверстия и др. элементы ???

Все это - вырезом? Это интересно...

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

"Face => Surfase => CylinderParams" - это откуда и что это за запись такая, на каком языке?

Это условно. Имелось ввиду, что у объекта Surface есть св-во CylinderParams.

какой файл выбирает юзер: файл детали SW (*.sldprt) или файл `step` ?

.sldprt

Без открытия SW можно обойтись только если Вы знаете формат файла детали SW (*.sldprt)!

Это понятно. Я образно. С точки зрения пользователя он закрыт, потому что он, пользователь, его не открывал. А открываем стандартно:
Set swModel = swApp.OpenDoc(FileName, swDocPART)

Потом, в версии SW2009 есть такая фишка

У нас 2007.

А как же фаски, зенковки, цековки, резьба, дно глухого отверстия и др. элементы ???

не, фаски - фаской. :smile: Все прочее не используется - у нас мебельное производство. Изменено пользователем kesean
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • bubl leg
      Всем доброго, друзья! Может кто умного чего подскажет: надо в солиде сделать комплект из пары моделей и потом вывести так - чтобы они, при вставке в слайсер Cura (это я для FDM 3d печати заморачиваюсь) - вывелись строго в том же пространственном положении (например, как бутерброд, лежащие друг на друге, в том же положении, как и в солиде). Я как то так делал - но забыл...:-)   Зачем это надо: печатаю нижнюю модель, печать заканчивается. меняю цвет прутка, удаляю нижнюю деталь, загружаю верхнюю и печатаю её. У меня как то давно так получалось вывести, что модель можно было разгруппировать и удалить ненужное. Сейчас в .stl всегда экспортирую под печать - там не работает такое. Итак? ;-) Любым идеям буду рад!
    • Maik812
      чем открыл/сохронил? сделай сохранить копию.
    • gudstartup
    • Guhl
      Журнал "Огонёк" брать надо, у него бумага хорошая, плотная.
    • Viktor2004
      ну да. Поезд попался не реставрированный. Даже без биотуалета. До последнего момента думал что поеду один в купе. В последнюю секунду вбегает мужик с глазами как у рака. Бросил сумку и давай метаться от туалета к туалету. Но нет. Санитарная зона. А ему очень плохо. Говорю ему, Ладно. Давай этот журнал раскладывай на полу, закрывай дверь и делай свое дело. Потом свернешь в окно выкинешь. Его аж трясет бедного. Закрыли дверь, он расположился, я отвернулся, отошел к окну, открыл его и закурил. Вдруг слышу сзади грозный упрек "Вообще-то в купе не курят!"  
    • gudstartup
      @Viktor2004 согласен. но человек сам хочет попробовать фанук на зуб.. с фирмой или китайцами всегда успеет связаться
    • Viktor2004
      ему надо искать фирму которая продаст FROM модуль к его станку. И ехать покупать вместе с ЧПУ что бы на месте проверить
    • gudstartup
      @Viktor2004 у автора по от 35i работает на 32i а собственный модуль фром неисправен и в м\сх флэш небольшая каша в данных так что ему придется искать другой фром модуль от 32i чтобы считать  рабочий   образ с нормальными данными.  
    • Viktor2004
      Я пробовал считывать так. Выпаял микросхему памяти из модуля, затем купил CF карту с таким же контроллером. Выпаял оттуда микросхему на 128Mb она была на месте "0" и впаял вместо нее микросхему с модуля. https://market.yandex.ru/product--karta-pamiati-cfg8b51mkazws-zaveb-tdk-512-mb/109304488?sku=102980643607&uniqueId=45170721&do-waremd5=G3-wTXG-Bm2zCvteY2KyaA&resale_goods=resale_resale&resale_goods_condition=resale_excellent Так как контроллеры совпадают, GBDriver RA8 программой WINHEX я снял образ с карты. Там уже все блоки были на своих местах. Только вряд ли вам это поможет. На 31i-A такое бы еще прокатило, а на 31i-B в системе появился файл SYS CNTL. Он генерится как на основе загружаемого софта, так и на основе ID-номера контроллера GBDriver. Так что побитно скопированная микросхема у меня работать не стала.
    • gudstartup
      @ДмитрийКм образ с плохого фром модуля у вас явно поврежден так что его на работоспособность можете не рассчитывать. надо считывать системные файлы с хорошего станка @ДмитрийКм если с хорошего 32i фром модуль не дадут то надо искать  файлы вашего по отдельно. но учитывая сложности с бэкапом системы у современных вряд ли они имеются в чистом виде.
×
×
  • Создать...