Сопряжение деталей с выравниванием по середине

Автор dxsa, 25.08.21, 00:31:16

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dxsa

Приведу общий пример и то понимание, какое есть на данный момент.brusok.png

Например есть 2 бруска, разного размера. Необходимо положить один брусок на другой брусок, но положить строго по середине грани.

Инструментов для такого сопряжения не нашёл, может плохо искал. Пытался сделать подобное выравнивание с помощью вспомогательных поверхностей - но тоже успеха какого-то не было.

Непонятно, как же всё-таки точно и строго выравнивать детали, в случае если нужна именно середина поверхности одной из деталей.

Прошу подсказать способы и методы.

VLaD-Sh

#1
Разные способы есть
1) Через сопряжение "Симметрия" (03)
2) Через средние плоскости (00)
3) Через вспомогательную геометрию (много вариантов точки, прямые, эскизы и т.д.) (01)
4) Параметрически (02)
и т.д.
все зависит от той задачи, что нужно в конечном счете получить

Пример сборки ниже (несколько вариантов в одном фале). Смотрите там варианты исполнений от 00 до 03
При этом, если изменить размеры деталей, то в сборка перестраивается автоматом

VIO

А в чем проблема, всё очень просто три сопряжения

FR347

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

Делаю в сложных сборках так:

Нахожу плоскость симметрии одной из сопрягаемых деталей.
Выделяю ее, жму сопряжение симметрия. Плоскость симметрии оставляю, а во второй строчке сразу крестик. И выбираю две грани в другой сопрягаемой детали.
Кроме плоских граней можно брать "круглые" (для пазов). Можно выбирать не грани а кромки.

IgorT

У конкурентов обсуждаемое сопряжение почему-то имеется в наличии. И не надо лишних действий производить, что бы достигнуть желаемого результата. Для чего у К его нету, не понятно.

СВ

Цитата: dxsa от 25.08.21, 00:31:16Например есть 2 бруска, разного размера. Необходимо положить один брусок на другой брусок, но положить строго по середине грани.
Цитата: FR347 от 25.08.21, 07:01:08Ну самое простое, если есть средние плоскости.
2 - случай не очень частый.
1 - (и главное, чему учу своих ребят) если в детали есть симметрия, даже не полная, стройте симметрично относительно координатных плоскостей. Сопряжение, естественно, по этим плоскостям. Деталь может измениться, сопряжение - нет.

FR347

Я всегда делаю симметрично....
Но при больших сборках, искать эти две плоскости долго. Поэтому и использую симметрию, намного быстрее.

VLaD-Sh

Если делать детали в контексте сборки, то у вы симметрии почти нет

Vitalij Lysanov

Цитата: СВ от 25.08.21, 08:28:51если в детали есть симметрия, даже не полная, стройте симметрично относительно координатных плоскостей. Сопряжение, естественно, по этим плоскостям. Деталь может измениться, сопряжение - нет

Можно пойти дальше.

Направление выдавливания брусков сделать в разные стороны.
Тогда можно просто включить Сопряжение Совпадение Деталей - и все будет на месте.



Если вернуться к истокам.
На грани бруска по объекту создаем ЛСК, получается надпись - По центру.
Затем ниже направление осей - задаем ребра прямоугольника, причем противоположным ребром можно выбрать направление третьей оси, чтобы выбрать правильное направление ЛСК.

Имена ЛСК нужно задать, потому что искать в дереве ЛСК это еще тот подарок.
И этот метод больше подходит для программы.
Искать слова в дереве построения - это любимое занятие для программ.
Буквы - это не графика, тут без вариантов.

Программа читает дерево сборки (заодно может и все поставить в сборку из папки).
Находит ЛСК с нужными именами и все включает на совпадение.

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

Там программы - строк 10.
Прочитать Найти и Включить. 



Что-то наподобие:

Это вставляются 700 деталей, в каждой детали есть входная и выходная ЛСК, все детали последовательно соединяем в цепочку. Если ЛСК немного отличаются по направлению, спираль из 700 деталей получается.





    kolich_det=700

    for k_det in range(kolich_det):
        part = parts.AddFromFile(partFileName1, True, False)  #

    for nomer_det in range(kolich_det-1):
    #1111111111111111111111111111111111111111111111111111111111111111111111111111

        iPart = module_5.ksPart(iDocument3D.GetPart(nomer_det))
        dd=iPart.GetFeature()
        iFeatureCollection = dd.SubFeatureCollection(False, False)

        iFeature = iFeatureCollection.GetByIndex(3)

        ils1=iFeature.GetObject()


    #222222222222222222222222222222222222222222222222222222222222222222222222
        iPart = module_5.ksPart(iDocument3D.GetPart(nomer_det+1))
        dd=iPart.GetFeature()
        iFeatureCollection = dd.SubFeatureCollection(False, False)

        iFeature = iFeatureCollection.GetByIndex(4)

        ils2=iFeature.GetObject()

#        m=(iPart.GetSummMatrix(iDocument3D.GetPart(nomer_det)))
#        mn=np.array([m[0:3],m[4:7],m[8:11]])
#        print (mn)
#      sk=np.dot(mn, mn)
#      vk=np.cross(mn,mn)

    #333333333333333333333333333333333333333333333333333333333333333333333333           
        iPart = module_5.ksPart(iDocument3D.GetPart(nomer_det+1))
        dd=iPart.GetFeature()
        iFeatureCollection = dd.SubFeatureCollection(False, False)
        iFeature = iFeatureCollection.GetByIndex(5)

        ils3=iFeature.GetObject()



        if nomer_det<kolich_det/2:
            iDocument3D.AddMateConstraint(0,ils1,ils2,0,0,0)
         
        else:
            iDocument3D.AddMateConstraint(0,ils1,ils3,0,0,0)
     






СВ

 Виталий, вы, наверное, говорите про построение в "контексте сборки"? Да ещё и создаёте "присоединительные точки" под видом ЛСК?

Vitalij Lysanov

#10
Цитата: СВ от 25.08.21, 10:25:21Виталий, вы, наверное, говорите про построение в "контексте сборки"? Да ещё и создаёте "присоединительные точки" под видом ЛСК?


Обычные детали вставляем в сборку.

Есть поиск в дереве по координатным ...
Все ЛСК можно найти.
Если бы выбрать прямо в поиске, это было бы хорошо (может и есть выбор, проверить нужно)


Дальше включить Сопряжение совпадения на ЛСК двух брусков.


__

Сопряжение Совпадение двух деталей, это включается совпадение главных осей координат, так можно все соедbнить, только результат?

__

Присоединительными точкам не пользуюсь, это как сокращенный вариант ЛСК, еще и вроде менее удобный.
ЛСК дают больше возможностей,
с ЛСК и программы знакомы.




__

ps

Выбрать две ЛСК в поиске?

Можно на графике включить отображение ЛСК и если наводить курсором, то видно что это ЛСК, и можно включить на совпадение. 

СВ

#11
Цитата: Vitalij Lysanov от 25.08.21, 11:41:05Присоединительными точкам не пользуюсь, это как сокращенный вариант ЛСК, еще и вроде менее удобный
Виталий, я неспроста написал  "присоединительные точки"  в кавычках, т.е. присоединение по ЛСК как бы у вас заменяет присоединительные точки.
 Вполне возможно, что не всё понял в вашей концепции присоединения по ЛСК, но у меня создалось впечатление, что такое присоединение подходит только для не редактируемых деталей (типа библиотечных), ведь стоит чему-то измениться, как контакт может нарушиться - ведь перестроения не произойдут, ЛСК/детали остаются на месте.

Vitalij Lysanov

Цитата: СВ от 25.08.21, 12:24:03присоединение подходит только для не редактируемых деталей (типа библиотечных), ведь стоит чему-то измениться, как контакт может нарушиться - ведь перестроения не произойдут, ЛСК/детали остаются на месте.


Применяем ЛСК по объекту, изменяется объект, перестраивается ЛСК.

Прямоугольную грань задаем, получаем центр прямоугольника, направление немного не то.

Включаем ниже направление осей, вверху надпись присоединительная точка Центр.

Задаем направление по ребрам прямоугольника, противоположное ребро переворачивает направление третьей оси.


Проверял, все перестраивается

IgorT

Вот это да! Чудеса акробатики владения Компасом показываем, что бы сделать простейшую (для иных CAD) операцию в сборке. :o:

СВ

#14
 Типа: -Мы простых путей не ищем!
- - - - - -
Виталий всё время рассматривает вопросы с "программных позиций". Возможно, на этом пути можно найти новые и интересные решения.

dxsa

Спасибо огромное всем за ответы!

Буду разбираться, не всё понятно, но буду разбираться