Замкнутый контур из скеча

Программирование для CATIA.

Замкнутый контур из скеча

Сообщение Anton2 » 10 май 2015 14:00

Всем, привет.

Есть задача - надо просканировать, имеющийся, эскиз и найти в нем все замкнутые контуры. Из контуров будут делаться отдельные эскизы, а из них в свою очередь - "пады" и "покеты".
Решение в лоб - "пробежаться" по всем примитивам и сравнить точки совпадения - как-то грубо. Уверен есть аналог команды Boundary для эскиза или Explode to domains. Главное на выходе получить наборы линий, кривых, точек, образующие замкнутые контуры.
Подскажите в каком направлении рыть или какие есть идеи.

VBS CATIA V5 R19

Заранее спасибо.
Anton2
Newly registered account
 
Сообщения: 1
Зарегистрирован: 10 май 2015 13:42

Re: Замкнутый контур из скеча

Сообщение Artem » 12 май 2015 18:18

1)Например через AddNewDatums + посредник (напрямик не захотело)
Код: Выделить всё
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridShapeDirection1 As HybridShapeDirection
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 0#)

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Geometrical Set.4")

Dim sketches1 As Sketches
Set sketches1 = hybridBody1.HybridSketches

Dim sketch1 As Sketch
Set sketch1 = sketches1.Item("Sketch.2")

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(sketch1)

Dim axisSystems1 As AxisSystems
Set axisSystems1 = part1.AxisSystems

Dim axisSystem1 As AxisSystem
Set axisSystem1 = axisSystems1.Item("Absolute Axis System")

Dim reference3 As Reference
Set reference3 = part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(AxisSystem.1;2);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Dim hybridShapeCurvePar1 As HybridShapeCurvePar
Set hybridShapeCurvePar1 = hybridShapeFactory1.AddNewCurvePar(reference1, reference3, 0#, False, False)

hybridShapeCurvePar1.SmoothingType = 0
hybridBody1.AppendHybridShape hybridShapeCurvePar1
part1.InWorkObject = hybridShapeCurvePar1
part1.Update

Dim HShape
 Set Reference = part1.CreateReferenceFromObject(hybridShapeCurvePar1)
  ' HShape = hybridShapeFactory1.AddNewDatums(reference1) -не хочет
  HShape = hybridShapeFactory1.AddNewDatums(Reference)
  num = UBound(HShape)
  For i = 0 To num
        hybridBody1.AppendHybridShape HShape(i)
  Next
  part1.InWorkObject = HShape(num)
  part1.Update
End Sub

2)В рейде вроде есть еще CATDomain....;
3)StartCommand ( "Disassemble" ) http://www.coe.org/p/fo/et/thread=14966 - ноо тут бы неплохо перед нажатием "ОК" через WApi выбрать деление на домены, а не примитивы;
а вообще простой проход вполне себе сойдет(если, конечно, оно будет проще п.1 - не факт).
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4