Подсборка в сборке

Автор Koroviev, 03.08.21, 16:47:14

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

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

Koroviev

Добрый день! Можно-ли в компасе редактировать подсборку, находясь в сборке?

СВ

 В основном - можно, но не всё. Что именно интересует?

Koroviev

Я бы хотел перепривязать детали подсборки, будучи в большой сборке. Чтобы подсборка изменилась (надо чтобы сопряжения в подсборке были "мягкими". А не таскалась вся подсборка как болванка... Наподобие инвенторовского инструмента "флексибол"...

Koroviev

Что-то типа "несвязанные компоненты"

СВ

03.08.21, 17:08:12 #4 Последнее редактирование: 03.08.21, 17:24:45 от СВ
Нет. Останется "болванкой". Разве что поработать с "костылями" ...
 Может, появилось нужное вам в К20. У вас что именно?

Koroviev

У меня версия 18.1. И я с него начинаю. Раньше работал в инвенторе. Следующий вопрос: помогите создать  медель с картинки. Никакой коммрческой выгоды и денег. Чистый эксперимент.

СВ

 Помогите или сделайте за меня?

Koroviev

Если честно - меня интересует лишь овальная выпуклость посередине. Я ещё не работал с поверхностями. Интересно  как выполняется этот овал. На работе некому показать наглядно.Но к работе это никак не относится. Был под рукой типа тест 3-х летней давности. У меня был инсульт, и я выпал на пару лет из жизни. Не судите строго пожалуйста. Помогите с овалом (модель 3d), остальное попробую сам.

Vitalij Lysanov






В середине все просто:

Запускаем код:



# -*- coding: utf-8 -*-
#|ломанная скругл

import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import MiscellaneousHelpers as MH

#  Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject  = kompas_object

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
iDocument3D = kompas_object.ActiveDocument3D()





import numpy as np



def kont(mt):
    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

    objLom = iPart.NewEntity(kompas6_constants_3d.o3d_polyline)
    iDefinition = objLom.GetDefinition()
    iDefinition.closed = True

    for t in mt:
        iDefinition.AddVertex(t[0], t[1], t[2], 0)
    objLom.name = "Ломаная:1"
    iColorParam = objLom.ColorParam()
    iColorParam.color = 16711680
    objLom.Create()











def kontur(t,r=3,r1=5,r2=7,r3=10):

    kont(t)

    sw=(t[0]+t[0])/2

    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)


    iAuxiliaryGeomContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.IAuxiliaryGeomContainer.CLSID, pythoncom.IID_IDispatch)
    iAuxiliaryGeomContainer = kompas_api7_module.IAuxiliaryGeomContainer(iAuxiliaryGeomContainer)
    iContours3D = iAuxiliaryGeomContainer.Contours3D
    iContour3D = iContours3D.Add()
    iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
    iCollection.SelectByPoint(sw[0], sw[1], sw[2])
    iEdge = iCollection.Last()
    iEdgeDefinition = iEdge.GetDefinition()
    iSketch = iEdgeDefinition.GetOwnerEntity()
    obj = kompas_object.TransferInterface(iSketch, kompas6_constants.ksAPI7Dual, 0)
    arrrayObjects = [obj]





    iContour3D.Edges = arrrayObjects
    iContour3D.Contour3DType = kompas6_constants_3d.ksCTSpace
    iContour3D.CutMode = kompas6_constants_3d.ksECMCircle
    iContour3D.Radius = r
    iContour3D.EdgesVisibility = False
    iContour3D.Update()

    iContour3D.Update()

    iContour3D.SetVarRadius(0, r1)
    iContour3D.SetVarRadius(1, r2)
    iContour3D.SetVarRadius(2, r3)
    iContour3D.Update()





#________________________________________________________
#________________________________________________________
#________________________________________________________
#________________________________________________________
#________________________________________________________
#________________________________________________________





##___________________________________________________________

t=np.array([[1,     22,     0],
           [21,     2,      0],
           [33,     33,     0]])

kontur(t,    r=3,   r1=5,r2=7,r3=8)
##___________________________________________________________


##___________________________________________________________
t=np.array([[1,     0,     10],
           [21,     0,      2],
           [33,     0,     20]])

kontur(t,    r=3,   r1=2,r2=5,r3=8)

##___________________________________________________________
t=np.array([[1,     -22,     0],
           [21,     -2,      0],
           [33,     -33,     0]])

kontur(t,    r=3,   r1=10,r2=7,r3=2)
##___________________________________________________________





Получаем три контура:







Элемент по сечениям:






Ближе к исходной задаче:



Если совсем близко к задаче, в программе задаются точки образующего треугольника:
##___________________________________________________________

t=np.array([[1,     22,     0],
           [21,     2,      0],
           [33,     33,     0]])

kontur(t,    r=3,   r1=5,r2=7,r3=8)
##___________________________________________________________


##___________________________________________________________
t=np.array([[1,     0,     10],
           [21,     0,      2],
           [33,     0,     20]])

kontur(t,    r=3,   r1=2,r2=5,r3=8)

##___________________________________________________________
t=np.array([[1,     -22,     0],
           [21,     -2,      0],
           [33,     -33,     0]])

kontur(t,    r=3,   r1=10,r2=7,r3=2)
##___________________________________________________________

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

И код должен работать на Компас 18, 19, 20


Специфика неизвестна, если будут точки и радиусы - сразу будут контуры, и скругления тоже
 


           

СВ

 Что-то у меня большие сомнения, что "овальный конус" и скругление его вершины радиусом  60 так просто построить.

Vitalij Lysanov

Цитата: СВ от 10.08.21, 09:22:45Что-то у меня большие сомнения, что "овальный конус" и скругление его вершины радиусом  60 так просто построить.


Как уже говорили, есть вариант с Поверхностью по семейству кривых.

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

Для другого направления -  построим две кривые, как раз там и радиус 60 будет и все остальное.
Поверхность для надежности немного выступает за круглое тело.

Поверхности превращаем в новое тело с очень маленькой толщиной.
Круг тоже формируем новым телом.

Вычитание.

Говорит, что появились новые части, одну можно удалить.

Получаем точный вырез


__

Поверхность по сети кривых берет любые кривые.

Вырезать по сечениям требует хоть не эскиз, но плоскую кривую





   

graphdark

Цитата: Koroviev от 09.08.21, 16:50:31глядно.Но к работе это никак
Вообще-то я стараюсь не вылазить из своего загона про пограммирование. Но эта задачка решается просто. Эскиз с учетом центральной впуклости и выдавливание вращением. Сложнее рифление сделать, но можно текстурой просто, если только вид важен. Просто сделать крестообразное возвышение на поверхности.

graphdark

Думаю смысл идеи ясен.

YNA

Ну это не совсем то, но пойдёт.
Попробуйте сделать диск в виде листового тела, а овальное углубление сделайте Закрытой Штамповкой. У этого инструмента множество параметров и можно более-менее подходящий профиль подобрать включая все скругления с двух сторон. Верхнюю перемычку можно потом врукопашную приаттачить простым 3Д моделированием.

СВ

10.08.21, 16:54:48 #14 Последнее редактирование: 10.08.21, 17:15:46 от СВ
 Не хватает сечения, перпендикулярного Г-Г.
Сечение основания выпуклости - эллипс (овал)? Один размер есть - 212, а второй? Построить его, исходя из R150 и R40?

Koroviev

Здравствуйте, дорогие друзья! Благодарю что откликнулись! Я не представляю такой инструмент, как "Закрытая Штамповка". Совершенно не пользовался работать с поверхностями. На первй взгляд интуитивно не понятно. Хочу научиться. На работе пользуемся металлоконструкциями и трубами. Мне бы видео с комментариями или на худой конец 3d-модельку. Чтобы поизучать "историю"... Это старый чертёжик (более 3 лет. Мне его предложили для оценки моих способностей при соискании работы в другой организации)

Студент 2015

Ребята!!! Давайте перейдем к конкретике!!! Как я понял автору вопроса не понятно как сделать центральные 2 отверстия (назову их монтажными отверстиями для крючка крана). Мне тоже не понятно. Вы приводите какие-то примеры и всё, но это всё надо связать вместе. Овал сделать да это просто. Вот модель на 1 эскизе. Но это круглое, а нужен овал. И чтобы он имел такую же толщину как и основной диаметр.
Цитата: СВ от 10.08.21, 16:54:48Не хватает сечения, перпендикулярного Г-Г.
Сечение основания выпуклости - эллипс (овал)? Один размер есть - 212, а второй? Построить его, исходя из R150 и R40?
СВ - в начале вообще простой набросок нужной модели, а не чертеж, не обращайте на это
внимание.
Согласен с 
Цитата: graphdark от 10.08.21, 15:39:58Сложнее рифление сделать, но можно текстурой просто, если только вид важен. Просто сделать крестообразное возвышение на поверхности.

Всего Всем Доброго!!! Давайте сделаем это!!!

СВ

10.08.21, 20:24:43 #17 Последнее редактирование: 10.08.21, 21:20:54 от СВ
Цитата: Студент 2015 от 10.08.21, 18:39:32Ребята!!! Давайте перейдем к конкретике!!! Как я понял автору вопроса не понятно как сделать центральные 2 отверстия (назову их монтажными отверстиями для крючка крана). Мне тоже не понятно. Вы приводите какие-то примеры и всё, но это всё надо связать вместе. Овал сделать да это просто. Вот модель на 1 эскизе. Но это круглое, а нужен овал. И чтобы он имел такую же толщину как и основной диаметр.СВ - в начале вообще простой набросок нужной модели, а не чертеж, не обращайте на это
внимание.
Это две разные вещи: сделать просто "монтажные отверстия для крючка крана" и сделать это по конкретным размерам. Я, к примеру, по размерам вижу основание конуса овальное, а вершину - непонятной: то ли сферическая (R60) то ли тоже овальная. Нет второго сечения, и думай что хочешь ...
- - - - -
 Автор чертежа, похоже, не вникал в правильность и точность собственных линий, а изготовители могли делать приблизительно похожее, благо здесь нет никаких требований к точности, "лишь бы работало".
Сейчас же, при создании модели, можно всё делать исключительно правильно, т.е. просто и реально изготовимое.

graphdark

Цитата: Koroviev от 10.08.21, 18:11:34Здравствуйте, дорогие друзья! Благодарю что откликнулись! Я не представляю такой инструмент, как "Закрытая Штамповка". Совершенно не пользовался работать с поверхностями. На первй взгляд интуитивно не понятно. Хочу научиться. На работе пользуемся металлоконструкциями и трубами. Мне бы видео с комментариями или на худой конец 3d-модельку. Чтобы поизучать "историю"... Это старый чертёжик (более 3 лет. Мне его предложили для оценки моих способностей при соискании работы в другой организации)
Но с чего ты взял, что это строится поверхностями? Можно, конечно, Но зачем? А закрытая штамповка-инструмент листового тела. Я считаю, что эскизом проще, Но я с листовым телом редко работаю. Моделей в компасе вагон. Пример с моего скриншота в библиотеке стандартных, деталь днище ГОСТ 6533. я учил канпас по азбуке встроенной справке.

VLaD-Sh

Цитата: graphdark от 10.08.21, 21:10:39Но с чего ты взял, что это строится поверхностями? Можно, конечно, Но зачем? А закрытая штамповка-инструмент листового тела. Я считаю, что эскизом проще,
И как вы закрытой штамповкой хотите получить элипсный конус ?