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

Программирование на 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 пользователей

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

  • Сообщения

    • 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 фром модуль не дадут то надо искать  файлы вашего по отдельно. но учитывая сложности с бэкапом системы у современных вряд ли они имеются в чистом виде.
    • a_schelyaev
      Убедиться в том, что "учет гидростатики" работает, можно на примере со свободной конвекцией. Сделали проект с "коробкой": справа стенка горячая, слева холодная, снизу и сверху - адиабатика. Если моделировать без учета гидростатики, то мы опять же видим "гидростатический" столб, и видим, что воздух движется в результате нагрева в поле действия силы тяжести: Если же включить "учет гидростатики", то гидростатического столба мы не видим, давление практически постоянно. Однако по векторам мы видим, что движение идет, то есть все работает так же, как и в первом случае, только решатель оперирует другими значениями давления.   Как итог - накатали заявку в следующей версии выводить "Давление+гидростатика", чтобы все было наглядно и не приходилось эти умозрительные эксперименты проводить.   В документации смысл фразы не в том, что давление не нужно задавать, а в том, что при задании его значений не нужно учитывать гидростатический перепад. Если вход находится сверху, а выход снизу, то давления на них будут отличаться за счет гидростатики. И вот при использовании "учета" не нужно высчитывать, сколько составит перепад и прибавлять/вычитать из него нужные значения. Это может так же помогать на вертикальных границах входа/выхода. У нас в FlowVision есть туториал с нефтью: там сбоку вертикальная входная граница. В проекте включен учет гидростатики и стоит просто полное давление 0. Если же учет отключить, то придется задавать на этой границе значение через формулу, которая учитывает гидростатику, пример вот здесь:    
    • a_schelyaev
      Модель k-e, т.к. Y+=<1 в Компасе сейчас недостижим. Поэтому не нужно качаться на папе, он не для этого вешался.
    • Guhl
      @Viktor2004 под стук колес лучше думает. Проводница молодая снует туда-сюда...
    • gudstartup
      помните как в анекдоте про л.и. - иде я нахожусь!  до остановки поезда осталось пять минут....
    • hlibhlib
      Как рас и навсегда во всех траекториях отключить визуализацию Планов перехода???  
    • maxx2000
      @Богоманшин Игорь G93 сугубо для поворотных осей G94 обычная минутная подача G95 не представляю как её применять для фрезерных циклов, ибо это подача мм на оборот
    • Viktor2004
      Вечером я напишу вам одну идею, щас я в поезде Посмотрите какой контроллер GBDriver у вас на плате. Его точное название
    • gudstartup
      раньше так и было но потом их перенесли в from и хранятся надежнее и выделять под программы можно разный объем при помощи опций а также статическое озу такого объема сильно дорогая вещь системные файлы вы накидывать не сможете с проводочками лучше не рисковать много ошибок может при записи возникнуть  даже если вам удастся выделить нужные системные файлы из вашего raw образа и проверить их контрольные суммы то как вы собираетесь их в чпу записать? @ДмитрийКм
×
×
  • Создать...