Можно ли посмотреть габариты деталей входящих в сборку.

Автор Starik, 26.03.15, 11:38:06

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

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

Starik

Здравствуйте уважаемые друзья.
Нарисовалась вот такая задача:
Имеем некую сборку. Имеем в ней объекты спецификации. Имеем свойства всех компонентов, входящих в эту сборку. Из всего что я перечислил мы можем без всяких усилий и хлопот посмотреть для каждого компонента материал, объем, массу, координаты центра масс, имя фала, автора и кучу, кучу всяких данных. Но вот никак не могу найти, можем ли мы так же свободно, без лишних телодвижений и измерений посмотреть максимальные габариты каждой детали. А именно максимальные размеры по X, Y и Z. Поискал по форуму и в выложенных библиотеках пользователей, и ничего не нашёл. Подскажите пожалуйста. Может ищу плохо?

Алхимик

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

Надежда только на тех кто знаком с программированием под Компас :(

Starik

Ну не может быть.  :%:  Раз считает объем, раз геометрия тела имеет месть быть, то у этой геометрии есть и максимальные и минимальные значения по каждой координате. Отсюда вывод, значит и габарит тоже известен. Вопрос только в том, а где его прочитать?

Kirilius83

похоже что про него просто забыли. надо предложение делать...

Vitalij Lysanov

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

Есть и практическое решение.
Если записать детали  в формате .stl  или .wrl, оттуда можно программно (Python, VBA или ...) выбрать координаты и определить максимумы и минимумы по трем координатам, это и даст габариты.

Если Компас не успевает он рисует вместо деталей кубики, а где берет координаты ?
Или вычисляет без отображения или берет готовые координаты с детали ?
При перестроении тоже может нарисовать кубики.

Формат dxf например  для чертежа хранит максимальные и минимальные размеры..

$EXTMIN
10
-11.0
20
-11.0
30
0.0
  9
$EXTMAX
10
11.0
20
11.0
 

   

Здрасти
Виталий, я то же думал если есть интерфейс к 3д-документу и выбрать метод GetGabarit ... он будет возвращать координаты/размер bounding box модели...однко у меня на пашет

вот из 16-й версии

# -*- coding: cp1251 -*-
#|3

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument3D = iKompasObject.ActiveDocument3D()

iDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)

iPart = Dispatch('KOMPAS.Application.5')
iPart = KAPI.ksPart(iPart)
MH.iPart = iPart

iPartC = Dispatch('KOMPAS.Application.5')
iPartC = KAPI.ksPartCollection(iPartC)
MH.iPartC = iPartC

d = iDocument3D.GetGabarit()
iKompasObject.ksMessage(d)



А куда функции GetGabarit этот габарит писать?

Алхимик

Цитата: Vitalij Lysanov от 26.03.15, 14:21:01
Вы знаете тоже была мысль соударять с плоскостью, но это не скоро.
Можно сделать с помощью библиотеки анимации... но мне не нравится то что я там увидел.

ПС. В файле полуфабрикат, ибо сейчас нет доступа к библиотеке анимации.

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

ПС3. В Файле есть тело цилиндр, и 6ть плоскостей. Все плоскости заданы на расстоянии от центра на соответствующем расстоянии.
В библиотеку анимации записываем 6ть шагов для каждой переменной X1, X2, Y1, Y2, Z1, Z2 в какой последовательности не важно. Включаем соударения, как в настройках так и в параметрах библиотеки анимации.

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

Дальше смотрим на значение X Y Z - видим габариты, но смотрим ПС2 и  :`(

ПС4. Компас не хочет соудярять поверхности, значит надо рисовать тела... в принципе чтобы тела всегда смыкались можно запараметризировать прямоугольники 6ти сторон соответствующим образом, чтобы получился Паралелепипед из тел, но с небольшим зазаром чтобы анимация не останавливалась сразу))

Vitalij Lysanov

Про габариты не забыли, просто не заказывали.
На предмет движения в сборке.
Получилось на примере библиотеки "Pik10" файл  "step3D2.a3m" пункт четыре.



import Kompas6API5, LDefin3D, LDefin2D
Kompas, doc3d = start3d()

example = 4
read(example='0.Пример')

[if example == 4:        # получить и изменить место расположения детали в сборке
    iPart = Kompas6API5.ksPart(doc3d.GetPart(0))       # первая деталь в сборке
    iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
    x=y=z=0
    ok,x,y,z = iplac.GetOrigin(x, y, z)
    Kompas.ksMessage( ' '.join( map( unicode, ["x = " , x , " y = " , y , " z = " , z] ) ) )
    iplac.SetOrigin(200, 200, 200)
    iPart.SetPlacement(iplac)
    iPart.UpdatePlacement()
    iPart.Update()/code]

Цитата: Sabahs от 26.03.15, 14:48:50
А куда функции GetGabarit этот габарит писать?
если с full-опцией... увы непонятно, что хотели разработчики когда обозвали функцией изъятия данных Get.. как бы намекает.
2 вывода булево значение и полный габарит модели

Это нормальная практика для любого языка, вернуть итог выполнения функции, а в переменные указанные в скобках, вернуть значение габарита.

bull

Цитата: Starik от 26.03.15, 13:53:32
Ну не может быть.  :%:  Раз считает объем, раз геометрия тела имеет месть быть, то у этой геометрии есть и максимальные и минимальные значения по каждой координате. Отсюда вывод, значит и габарит тоже известен. Вопрос только в том, а где его прочитать?
Не совсем правильные рассуждения. То, что есть информация по объему, не говорит о том, что она получена каким-то образом относительно габаритов. Даже скорее совсем не так. Просто при моделировании используются прямоугольники/цилиндры/конусы и т.п. У всего этого есть объем, вот эти данные и суммируются. А может ещё как-то иначе. Скажем, от какой-то произвольной точки тела ставится "кирпичик" объемом в одну единицу, к нему присобачивается до тех пор, пока не упрется в наружную поверхность тела. В общем, гадать можно долго. Ведомо одному Аллаху создателю программы. Габарит - точно не факт.

А попытки самому сделать макрос/прогу анализа - пож-ста... Никто не запретит.