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

Автоматический рассчет массива


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

Доброго всем времени суток.

Хочу попросить помощи в решении следующей проблемы:

Есть деталь с равномерно пробитыми присоединительными отверстиями, количество и межосевое расстояние которых зависит от длины детали. Задача: сделать модель детали, на которой задавалась бы только необходимая длина, а количество отверстий и их положение рассчитывались автоматически. Сами отверстия задаю массивом.

Пробовал несколькими способами, везде свои проблемы.

1. Через уравнения - получается так (расстояние между каями детали и крайними отверстиями - 30 мм, приблизительное межосевое расстояние, от которого обычно отталкиваюсь - 180 мм):

Количество отверстий = (D1@Длина детали - 60)/180 + 1

Точное межосевое = (D1@Длина детали - 60)/(Количество отверстий - 1)

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

2. При помощи DriveWorks не получается выразить межосевое через уже просчитанное количество отверстий, приходится городить формулы, и такое чувство, что в итоге программа рассчитывая только однин параметр.

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


Вопрос такой уже был.

Вам нужно для начала определиться что у вас задается, а что рассчитывается (количество элементов или шаг).

Количество отверстий нужно округлять до целого...

"Количество"= int ( ( "Длина@Эскиз1" - "Смещение@Эскиз2" * 2 ) / 180 ) + 1

"D1@Линейный массив1"= "Количество"

"D3@Линейный массив1"= ( "Длина@Эскиз1" - "смещение@Эскиз2" * 2 ) / ( "Количество" - 1 )

Когда длинна малая и получается 1 или 0 отв. То нужно менять уравнения, писать условия:

"Линейный массив1"= ( if ( "Количество" < 2 , "suppressed" , "unsuppressed" ) )
Ссылка на сообщение
Поделиться на других сайтах

Значит оставлять расчет через уравнения.

В таком случае, как пофиксить исчезновение размера "D3@Линейный массив1" в эскизе после каждого изменения длины детали? В итоге, постоянно выдает ошибку в уравнении, и приходится проставлять этот размер вручную.

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

Размер никуда не девается. Если у вас он пропадает, значит вы что то не так сделали. Хотя я себе не могу этого представить, что бы при изменении размера длины, терялась привязка отверстия.

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

Тогда подскажите, что же я делаю не так

Исходная модель:

post-37351-1351768143_thumb.png

Затем меняю высоту на 1000:

post-37351-1351768173_thumb.png

Межосевое пропадает, отверстия остаются с прежним размером 170 мм, то есть неравномерно. Появляется ошибка уравнения, перестраивание не помогает.

Захожу в редактирование эскиза и вручную проставляю размер:

post-37351-1351767822_thumb.png

Он сразу же автоматически принимает верно рассчитанное значение 188 мм, отверстия распределяются равномерно.

С этим борюсь уже долгое время :dry:

Изменено пользователем Alionex
Ссылка на сообщение
Поделиться на других сайтах

У вас что массив в эскизе? А не массив элемента отверстия? Не увлекайтесь массивами в эскизе, тем более с уравнениями.

Измените на массив одного отверстия.

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

Действительно, при работе с массивом элемента проблемы не возникает. С вашей помощью разобрался, спасибо )

Ну и не подскажете оператор для округления результата к ближайшему целому числу? Когда при расчете количества отверстий получается 2.8, хотелось бы видеть 3 отверстия, а не 2

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

Посмотрите пример уравнения выше.

int (a) целая часть числа возвращает целую часть числа a +1

Есть еще Round - но эта функция в справке не описана, что странно. И она к данной задаче мало применима.

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

Опять-таки, в моем конкретном примере при использовании "int" после деления получаем число 1.8, которое округляется до 1 и в итоге результат уравнения 1+1=2 отверстия с расстоянием 340 мм.

Хотя нашел способ это обойти с такой записью:

"D1@Линейный массив1"=("D2@Базовая кромка1" - "D3@Эскиз5"*2)/180 + 1

"D3@Линейный массив1" = ( "D2@Базовая кромка1" - "D3@Эскиз5" * 2 ) / ( "D1@Линейный массив1" - 1 )

Быть может, это топорно, но результат получается такой, который мне и нужен

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

Ну и не подскажете оператор для округления результата к ближайшему целому числу?

"D1@Extrude1" = FormatCurrency(16,345,2) <noindex>http://fsapr2000.ru/index.php?s=&showt...st&p=155439</noindex>

Справка: <noindex>http://help.solidworks.com/2010/Russian/so...d_constants.htm</noindex>

Есть еще Round - но эта функция в справке не описана, что странно.

Ищите в справке по VBA, на сколько помню там можно использовать практически любые функции из VBA, а не только упомянутую в справке IIF и имеющиеся в окне настройки формул.
Ссылка на сообщение
Поделиться на других сайтах

Хотя нашел способ это обойти с такой записью:

Эти уравнения я привел еще в первом сообщении...

FormatCurrency(16,345,2

Это тоже из VBA, в справке этого нет. Там вообще коротенький список.

п.к. Стандартная математическая функция округления, для данной задачи не применима. Нам фактически нужно округление в большую строну.

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

Это тоже из VBA, в справке этого нет. Там вообще коротенький список.

Думаю на лицо не корректная запись в справке, вероятно должно было быть: "При указании размеров модели можно также использовать функциюи Visual Basic, например IIf."
Ссылка на сообщение
Поделиться на других сайтах

Эти уравнения я привел еще в первом сообщении...

Это тоже из VBA, в справке этого нет. Там вообще коротенький список.

п.к. Стандартная математическая функция округления, для данной задачи не применима. Нам фактически нужно округление в большую строну.

Сделайте поиск по теме: "округление чисел в языках программирования"!

Там каких только вариантов округлений не найдешь - ИМХО, на любой вкус и цвет...

На VBA я бы вообще не стал ориентироваться - надо смотреть методы из нормальных языков прогр-я...

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

вставь таблицу параметров.

считай все в excel`е и не парься с формулами.

хотя это оправдывает только сложные расчеты...

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

Я бы тоже сделал таблицу в Excell

Да собственно так и делаю.

Там можно кучу условий наложить.

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Александр 36
      Как это узнать есть он там?SRAM0_5A.FDB
    • Viktor2004
      Только если в архиве бэкапа есть файл PMC1.000 А файл SRAM_BAK.001 тут не поможет
    • ivanK
      Единственный момент я чет не соображу нужно ли забивать корректор на длину инструмента в таблицу для этой проверки (длину от торца шпинделя до кончика индикатора)  Потому что команда G43.4 подаётся вместе с корректором H.  Допустим в шпинделе инструмент номер 3 тогда команда включения tcpm: G43.4 H3.    Попробуйте аккуратно сначала с нулевым корректором. 
    • Viktor2004
      Спасибо попробую
    • Александр 36
      Подскажите если во время корректировки ладдера что то пойдет не так можно будет бэкапом все восстановить?
    • ivanK
      На видео которое я скидывал с обработкой (в программе CimcoEdit) где фреза делает "кульбыт" с правой стороны я думал что зарез происходит в этот самый момент, но меня смущало что такой же зарез получается с другой короткой стороны. Сейчас я сделал виртуальную модель станка с осями B и C чтобы посмотреть какая поверхность получается перифирией фрезы проходя по коротким сторонам детали. Но таких зарезов на модели в симуляции я не вижу. Завтра скину видео что получилось на виртуальной модели.  Прошу прощения что ввел вас в заблуждение.  Если дело в смене направления движения по оси B то проверить это можно так: -Ставим в шпиндель индикатор -подводим к калибровочной сфере -касаемся сферы -включаем tcpm (G43.4)  -делаем движение G01 B-20 F100 - а потом G01 B20 F100.  И смотрим что происходит в момент когда направление движения меняется   На протяжении всего движения значение на индикаторе должно оставаться таким же как в момент начального касания сферы
    • Viktor2004
      Нет я так не умею
    • ivanK
      Y2mate.mx-Кинематика станка Iron Mac IMU 5X 430 #Shorts.mp4
    • Viktor2004
      Видео посмотреть не могу. Ю́туб заблокирован. Что там? Это долго будет и не факт что дадут. Служба безопасности А как у вас в видео получилась такая же кривая деталь как у меня? Что-то не так сдвинули? Может у меня то же самое сдвинуто
    • ivanK
      Может конечно глупо прозвучит а теста типо такого не проводили   Нет возможности запросить у клиента 3D модель обрабатываемой детали? Или чертеж я бы хоть наложил модель из симуляции на обрабатываемую (ну или чертеж детали)  Мое последнее предположение что с осью B что то может быть не так, по длинным сторонам детали она движется в одном направлении а на коротких сторонах с изменением направления 
×
×
  • Создать...