Как запросить ребра объекта?

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

Re: Как запросить ребра объекта?

Сообщение Artem » 22 июн 2011 14:40

Сначала думал что нумерация у еджей не с начала...причем как то хаотически начинается ..потом доперло что она одна на двоих - с фейсами заодно(причем у бордеров только), аналогично вертексы с вайреджами - одна нумерация.....а сформировать РЕджи просто вроде - пройтись по фейсам и проверить на существование еджа для всех пар (проверить по имени -так же как в макросе)...на досуге попробую сварганить - скорость будет ниже по сравнению с селектом к гадалке не ходи....
Ps универсальной фичер не сделать - чтоб извлекал у всех и сразу, ибо длинное имя не вижу как сгенерить...а вот для датумных поверхностей с использованием замечательной функцией ассембли, таки да
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 23 июн 2011 01:05

Если с датумной будет драть, я выложу фичу, шоб со всех поверхностей драла и даже с сетов (возможно и с тел). Думаю получится, тока еще времени пока не хватает, но теперь мы на более верном пути, по моему скромному мнению.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение [PTM] » 30 июл 2011 11:01

может будет кому-то полезно.
скрипт считывает данные из файла и подсвечивает их в окне кати.( например точку 100 20 20)
Для его правильной работы надо создать файл C:\Temp\Points.txt
и запустить через VBA( с catscript говорят глючит)
называется
Identifying the exact face, edge or vertice a point is located on
думаю из названия все ясно)
Код: Выделить всё
Sub CATMain()

    Const PATH_TO_POINTS_FILE = "C:\Temp\Points.txt"

    ' read points to be used for geometry generation from a file
    Dim aPoint(2) ' as Double
    Dim aPoints() ' As Double
    Dim iNbPoints ' as Integer
    iNbPoints = 0
   
    Dim fsoFileSystem ' As FileSystemObject
    Set fsoFileSystem = CreateObject("Scripting.FileSystemObject")
   
    Dim tsSourceStream ' as TextStream
    On Error Resume Next
        Set tsSourceStream = fsoFileSystem.OpenTextFile(PATH_TO_POINTS_FILE)
    If (Err.Number <> 0) Then
        MsgBox "Can't open source file for reading (" & PATH_TO_POINTS_FILE & ")"
        Exit Sub
    End If
   
    Dim sLine As String
    Dim aLineSplit ' as Variant
   
    Do While (tsSourceStream.AtEndOfStream = False)
        ' read next line
        sLine = tsSourceStream.ReadLine()
       
        ' trying to split contents
        Err.Clear
        On Error Resume Next
            aLineSplit = Split(sLine, " ")
       
        If (Err.Number = 0) Then
       
            ' saving contents in array
            ReDim Preserve aPoints(iNbPoints)
           
            On Error Resume Next
                aPoint(0) = Round(Val(aLineSplit(0)), 3)
            On Error Resume Next
                aPoint(1) = Round(Val(aLineSplit(1)), 3)
            On Error Resume Next
                aPoint(2) = Round(Val(aLineSplit(2)), 3)
               
            If (Err.Number = 0) Then
                aPoints(iNbPoints) = aPoint
               
                iNbPoints = iNbPoints + 1
            End If
               
        End If
    Loop
   
    ' close stream
    tsSourceStream.Close


    ' get selection object
    Dim oSelection As Selection
    Set oSelection = CATIA.ActiveDocument.Selection
   
    '------------------------------------------------
    ' FIND ALL GENERATED GEOMETRY IN SELECTED FEATURE
    '------------------------------------------------
    ' start selection procedure
    Dim oSelectedSolid As Body
   
    Dim vSelection ' as Variant
    Set vSelection = oSelection
   
    Dim aSelTypeFilter(0) ' as Variant
    aSelTypeFilter(0) = "Body"
   
    Dim sSelResult ' as String
    sSelResult = vSelection.SelectElement2(aSelTypeFilter, "Select body in which you want to find points", False)
   
    If (sSelResult <> "Normal") Or (vSelection.Count <> 1) Then
        ' nothing has been selected
        Exit Sub
    Else
        Set bdSelectedBody = oSelection.Item(1).Value
    End If
   
    Dim iGeometry ' As Long
   
    ' find all vertices
    oSelection.Clear
    oSelection.Add bdSelectedBody
    oSelection.Search "Topology.Vertex;sel"
   
    Dim aVertices() As Vertex
    Dim vtVertex As Vertex
   
    Dim iNbVertices ' as Integer
    iNbVertices = 0
   
    For iGeometry = 1 To oSelection.Count
        Set vtVertex = oSelection.Item(iGeometry).Value
           
        ' save to array
        ReDim Preserve aVertices(iNbVertices) As Vertex
        Set aVertices(iNbVertices) = vtVertex
           
        iNbVertices = iNbVertices + 1
    Next

    ' find all edges
    oSelection.Clear
    oSelection.Add bdSelectedBody
    oSelection.Search "Topology.Edge;sel"
   
    Dim aEdges() As Edge
    Dim edEdge As Edge
   
    Dim iNbEdges ' as Integer
    iNbEdges = 0
   
    For iGeometry = 1 To oSelection.Count
        Set edEdge = oSelection.Item(iGeometry).Value
           
        ' save to array
        ReDim Preserve aEdges(iNbEdges) As Edge
        Set aEdges(iNbEdges) = edEdge
           
        iNbEdges = iNbEdges + 1
    Next
   
    ' find all faces
    oSelection.Clear
    oSelection.Add bdSelectedBody
    oSelection.Search "Topology.Face;sel"
   
    Dim aFaces() As Face
    Dim fcFace As Face
   
    Dim iNbFaces ' as Integer
    iNbFaces = 0
   
    For iGeometry = 1 To oSelection.Count
        Set fcFace = oSelection.Item(iGeometry).Value
           
        ' save to array
        ReDim Preserve aFaces(iNbFaces) As Face
        Set aFaces(iNbFaces) = fcFace
           
        iNbFaces = iNbFaces + 1
    Next

   
   
    '---------------------------------------------
    ' MEASURE DISTANCE BETWEEN POINTS AND GEOMETRY
    '---------------------------------------------
    ' get Part container of active document
    Dim prtPart As Part
    Set prtPart = CATIA.ActiveDocument.Part
   
    ' get SPA workbench
    Dim wbSPA As SPAWorkbench
    Set wbSPA = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
   
    ' access point on Measurable interface
    Dim refPoint As Reference
    Dim mesPoint As Measurable
    Dim pntPoint As Point
   
    Dim refGeometry As Reference
       
    Dim dDistance ' as Double
    Dim bGeometryFound ' as Boolean
   
    ' clear selection
    oSelection.Clear
   
    ' loop through all points
    Dim iPoint ' as Integer
    For iPoint = 0 To iNbPoints - 1
   
        ' create "point-by-coordinates" feature
        Set pntPoint = prtPart.HybridShapeFactory.AddNewPointCoord(aPoints(iPoint)(0), aPoints(iPoint)(1), aPoints(iPoint)(2))
        pntPoint.Compute
       
        ' access it on Measurable interface
        Set refPoint = prtPart.CreateReferenceFromObject(pntPoint)
        Set mesPoint = wbSPA.GetMeasurable(refPoint)
       
        bGeometryFound = False
        ' measure distance to VERTICES
        If (bGeometryFound = False) Then
            For iGeometry = 0 To iNbVertices - 1
                Set vtVertex = aVertices(iGeometry)
                Set refGeometry = vtVertex
       
                dDistance = mesPoint.GetMinimumDistance(refGeometry)
                dDistance = Round(dDistance, 3)
               
                ' if distance equals to zero then we've found desired geometry
                If (dDistance = 0) Then
                    ' add geometry to selection
                    oSelection.Add vtVertex
                   
                    ' exit loop
                    bGeometryFound = True
                    Exit For
                End If
            Next
        End If
       
        ' measure distance to EDGES
        If (bGeometryFound = False) Then
            For iGeometry = 0 To iNbEdgees - 1
                Set edEdge = aEdges(iGeometry)
                Set refGeometry = edEdge
       
                dDistance = mesPoint.GetMinimumDistance(refGeometry)
                dDistance = Round(dDistance, 3)
               
                ' if distance equals to zero then we've found desired geometry
                If (dDistance = 0) Then
                    ' add geometry to selection
                    oSelection.Add edEdge
                   
                    ' exit loop
                    bGeometryFound = True
                    Exit For
                End If
            Next
        End If
   
        ' measure distance to FACES
        If (bGeometryFound = False) Then
            For iGeometry = 0 To iNbFaces - 1
                Set fcFace = aFaces(iGeometry)
                Set refGeometry = fcFace
       
                dDistance = mesPoint.GetMinimumDistance(refGeometry)
                dDistance = Round(dDistance, 3)
               
                ' if distance equals to zero then we've found desired geometry
                If (dDistance = 0) Then
                    ' add geometry to selection
                    oSelection.Add fcFace
                   
                    ' exit loop
                    bGeometryFound = True
                    Exit For
                End If
            Next
        End If
       
       
        ' delete created feature
        prtPart.HybridShapeFactory.DeleteObjectForDatum pntPoint
       
    Next ' iPoint


End Sub


Скрытый текст. Вы не состоите в группах, которым доступен этот текст.
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2159
Images: 43
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 30 июл 2011 11:33

[PTM], в CATScript'е глючит, ибо он плохо работает с "массивом из массивов" (n массивов по 3 элемента, где n - количество точек, у каждой из которых 3 координаты). А именно в такой структуре хранятся координаты всех точек.
Если переписать на использование одномерного массива (массив размером n x 3), то будет работать везде.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 01 авг 2011 00:14

oSelection.Search "Topology.Edge;sel" - этот метод внутри UDF не пашет, а так без макросов сделали рабочую UDF ближайшего ребра к любому объекту.

Касаемо точек из файла - давно сделал UDF-генератор точек из файла с заголовком XYZ, причем указываешь сет, куда точечки сложить, складываются именно point с координатами. Фича адаптивна правке файла, который можно из нее и сменить.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 12 авг 2011 13:49

Итак, подниму тему и задам несколько сходных по теме вопросов.

1. Например, я имею имя или ссылку/селекшн на тело, тело детали. Как запросить "текущий твердотельный элемент"? Это когда массив в парте делаешь, там можно объектом размножения выбрать фичер или "текущий твердотельный элемент", как его получить на автомашине?

2. Буду делать фичер, извлекающий в виде списка все вершины из точечного объекта. Это, например, если отмассивить точку или спроецировать эскиз с точками. По методу Артема, он описан выше. Поможете?

3. И главная задача - разобраться с объектами типа TriDimFeatEdge, BiDimFeatEdge , MonoDimFeatEdge , TriDimFeatVertexOrBiDimFeatVertex. Если я правильно понял, MonoDimFeatEdge - это один домен от MonoDim, который получается от копипаста в виде результата массива кривых. Как по-простому из многодоменных кривых извлекать ассоциативно в виде списка домены??? Это функционал Dissassemble, если выбрать режим "только домены".
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 12 авг 2011 15:31

И снова здравствуйте.

1. CATIA в качестве "текущего твердотельного элемента" выбирает тело (Body), являющееся "рабочим объектом" (In Work Object). Если такого тела нет, или в качестве "рабочего объекта" выбрана фича или геометрический набор, то "текущим твердотельным элементом" считается главное тело детали - PartBody.
На Automation определение "рабочего объекта" возможно с помощью свойства InWorkObject класса Part:
Код: Выделить всё
Dim prtPart as Part
Dim bdCurrentSolid as Body

' получение "рабочего объекта"
Dim oInWorkObject as Object
Set oInWorkObject = prtPart.InWorkObject

' если рабочий объект не является телом, в качестве "текущего твердотельного" выбирается PartBody
If (TypeName(prtPart.InWorkObject) <> "Body") Then
    Set bdCurrentSolid = prtPart.MainBody
Else
    ' рабочий объект является телом, оно выбирается в качестве "текущего твердотельного элемента"
    Set bdCurrentSolid = oInWorkObject
End If


2. У датумных фич можно вручную "пересчитать" все вершины и рёбра (пример скрипта был ранее). Поэтому всё должно получиться.

3. Disassemble'а в Automation нету. Но зато есть метод Near (рабоатет аналогично сооветствующей команде), при применении которого на многодоменную кривую в результате получается единственный домен. Остаётся придумать, как можно таким образом вычленить все домены, а в особенности те, которые находятся "посередине" многодоменной кривой.

С другой стороны, можно попробовать воспользоваться методикой из п.2 - разобрать кривую на рёбра (она ведь датумная, или нет?), а после слепить из пересекающихся (притыкающихся) рёбер домены с помощью метода Assemble.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 12 авг 2011 17:25

1. Спасибо, попробую. Это аналог задания объекта рабочим? prtPart.InWorkObject = MyBody задание MyBody рабочим?
2. Наверно, разберусь, но все-таки что есть бидимы, монодимы и их ребра?
3. А вот рвать и клеить сборкой нельзя, если домены имеют пересечения между собой. Сольются в замысловатые фигурки. Поэтому ищу способ извлечь каждый первый сегмент или вершину домена. Тогда их можно использовать как ближайшие, хотя вершины могут у доменов и совпасть. Нужен способ получше.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 12 авг 2011 18:05

1. Да, делает MyBody рабочим.
2. Так и не понял, в чём же состоит вопрос. Если про то, как устроена топология в CATIA, то нужно читать статью Topology Concepts в CAA Encyclopedia.
Если про то, как они понимаются в Automation, то вот выдержка из руководства (пусть из другого раздела, но понятия общие для любой автоматизации):
Values:
ZeroDim
Topological 0-D entity (such as a Point2D )

MonoDim
Topological 1-D entity which cannot be infinite (such as a HybridShapeSpline )

MonoDimInfinite
Topological 1-D entity which may be infinite, such as a HybridShapeSpline (not infinite) or a HybridShapeLinePtDir for which a call to HybridShapeLinePtDir.GetLengthType would give 1, 2 or 3 (infinite)

RectilinearMonoDim
1-D entity which cannot be infinite, the entity having a rectilinear geometry

RectilinearMonoDimInfinite
1-D entity which may be infinite, the entity having a rectilinear geometry

BiDim
Topological 2-D entity which cannot be infinite (such as a HybridShapeCylinder )

BiDimInfinite
Topological 2-D entity which may be infinite, such as a HybridShapeCylinder (non infinite) or a HybridShapePlaneOffsetPt (infinite)

PlanarBiDim
2-D entity which cannot be infinite, the entity having a planar geometry

PlanarBiDimInfinite
2-D entity having a planar geometry

CylindricalBiDim
2-D entity which cannot be infinite, the entity having a cylindrical geometry

TriDim
Topological 3-D entity (such as a Pad )


3. Не уверен, что это можно сделать, даже пользуясь Selection'ом и всяческими StartCommand'ами. А уж внутри UDF и подавно...
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 13 авг 2011 13:41

По п.2 вопрос в том, как это можно использовать.Если я правильно понимаю, это типа свойств объектов, их тип. Значит ли это, что я могу делать селекшн с фильтрацией по этим типам или свойствам? Т.е. запросить из геометрического набора только BiDim-ы? А тогда следующий вопрос: как подобным образом запросить все его ребра, грани, вершины через типы BiDimFeatEdge, MonoDimFeatEdge и так далее? Мне придется отделять монодимы и подобные гадства от одиночных линий, например, и тащить оттуда домены.

3. Будьте уверены, именно внутри UDF... и очень скоро... и массив свой произвольный уже почти весь перевел на автомашин внутри UDF и без прежних проблемок/глючков... и без необходимости создавать прототипы и класть их куда-то вне UDF-массива.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 13 авг 2011 22:58

2. Для определения типа геометрии можно и нужно использовать метод GetGeometricalFeatureType класса HybridShapeFactory
3. Очень хочется увидеть исходники такой UDF
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 14 авг 2011 12:23

2. Угу, нечаянно натыкался, но забыл (тока изучаю предмет).
3. Наверное, нет в ближайшие 2-3 года, ибо это часть коммерческого проекта. Возможно, будет демка на моем канале ютуба при рекламной кампании. Но код размножения не будет длиннее фичи Артема по извлечению ребер в этой теме.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 03 окт 2011 16:43

Wireless_Fidelity писал(а):И снова здравствуйте.

3. Disassemble'а в Automation нету....


Вы снова неправы? Тут http://v5vb.wordpress.com/2010/01/11/ch ... try-types/
есть упоминание об этом:


First way is to disassemble the feature using the HybridShapeFactory.AddNewDatums() method. Even though interactively you can choose to disassemble by domain or by cell, in vb it only does it the domain way.This function will return an array containing new dead copies of the geometries...

Это и в хелпе по автомашину написано, но там явно ошибка, и оно не работает. Почему, и как заставить работать? Ошибка: не HShape = hybridShapeFactory.AddNewDatums reference
а HShape = hybridShapeFactory.AddNewDatums (reference) (найдено в немецком форуме). Но все-равно сбой пишет.

Есть решение? На сое есть решение, но нет регистрации. Итак, домены есть в автомашине, но что-то не работают...
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 03 окт 2011 17:30

Я говорил о программном интерфейсе с методом Disassemble. Такого нет.

Что до скрипта, то он работает корректно. Нужно лишь задать все необходимые объекты и переменные.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 04 окт 2011 23:11

Тема доменов решена и закрыта. Генератор работает. Спасибо Артему за подсказку.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 18 апр 2012 12:35

Все, заставил Selection.Search "Topology.Edge;sel" работать внутри и по объектам внутри UDF любой степени вложенности внутри UDF. Но штатно без разработки особой фичи это невозможно. Кстати, эта фича решает и проблемы разбиения на домены.

Теперь можно делать юфы с получением как списков топологии, так и с выбором ближайших. Теперь тема действительно закрыта полностью.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 24 апр 2012 14:39

В чём основная идея особой фичи? Поделитесь, пожалуйста.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 24 апр 2012 22:39

Я создал несколько классов особых объектов, которые не имеют своего класса, они наследуют класс объекта-родителя, эдакие хамелеоны. Они легко наследуют топологию, обычную графику, кроме 2D. Такие объекты легко разбираются на домены, грани, ребра, вершины, менять контекст на внешний относительно UDF, внутри которой он лежит, с их помощью можно получать доступ к потрохам закрытых UDF, если применить одну методику. Отсюда я теперь могу все, о чем писал и чего хотел. В ветке о работе форума я спрашивал про возможность публиковать тут информацию о своих разработках. Вскоре я опубликую тут и еще кое-где презентации и статьи о моих разработках и их возможности. У меня есть крупный потенциальный покупатель, ему я недавно выслал обзорную статью о части этих разработок. Если он не купит это и еще список фич, по сходной цене, они тоже появятся тут как реклама с предложением выкупить. Поэтому подробнее я не могу рассказывать, и даже часть уже готового презентовать не могу до принятия решения о продаже клиенту. Но работу извлечения доменов можно увидеть на моем канале ютуба при работе финальной версии моего генератора: по массивам точек он расставляет клоны со средней скоростью около 10 клонов в секунду. И все - изнутри одной UDF.
P.S. http://www.youtube.com/watch?v=0S5U5xIF1tk тут я строю массивы точек по кривым, добавляя их к проекции круговых массивов точек на поверхность сердечка и юзаю это как входные данные - точки и кривые ориентации. Многодоменка их точек потом внутри массива разбивается, и в каждую точку тащится клон. http://www.youtube.com/watch?v=jkk2L9lfLvw тут наподобие, тоже массивы точек и линий. Скоро будет демка с применением массива вкупе с извлечением вершин и ребер из объектов как исходные данные для массива.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 25 апр 2012 08:34

Спасибо, буду ждать.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение Artem » 25 апр 2012 10:31

кстати доступ к ребрам, если без селекшна обходится, хорошо реализуется через экспертное правило -можно вывести имена любой топологии в лист, а а с них получить фичеры которым они принадлежат
создал несколько классов особых объектов..
если не секрет, это из третьей платформы бизнес объекты, или примитивы через RADE реализованные?
Последний раз редактировалось Artem 25 апр 2012 14:56, всего редактировалось 1 раз.
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 25 апр 2012 11:03

Artem писал(а):кстати доступ к ребрам, если без селекшна обходится, хорошо реализуется через экспертное правило -можно вывести имена любой топологии в лист, а а с них получить фичеры которым они принадлежат


Предлагается создать экспертное правило, "входящим" элементом которого был бы какой-нибудь CATEdge?
А в UDF это будет работать?

UPD
Попробовал внутри обычного парта, не получаетс я заставить экспертное правило заполнять "внешний" список, оно его не находит.
Тогда сделал Find("PartFeature", "", false), чтобы подняться до парта, затем через Access спустился к списку. Тот, вроде как, нашёлся (IsSupporting("List") == true), но метод Append не работает.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение Artem » 25 апр 2012 14:48

честно - доводил до мессаджей имен поверхностей - дальше не думал( ;-) на моей 16 стринги в лист не суются воообще нигде). А скрипт из эксперта не вызывается? А то прям сразу бы как входной параметр туда стринг с именем засовывать, а из него уже и лист формировать...Кстати -а лист (тот что внутренний для правил/реакций) можно же входным в executescript отдать?
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Как запросить ребра объекта?

Сообщение Wireless_Fidelity » 25 апр 2012 17:26

Из эксперта вообще как-то туго до скриптов и параметров в дереве добираться. Параметры и скрипты по имени (`VBScript.1`) им не воспринимаются.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Как запросить ребра объекта?

Сообщение zerganalizer » 25 апр 2012 20:15

Если через мой спец.объект "допрашивать" на ребра многодоменные кривые по многу сегментов, отдает упорядоченно поочередно сначала ребра каждого домена, потом - конечную и начальную точки прошедшего домена, потом идет аналогично к следующему. И счетчики есть. Но последний примитив универсален - одна юфка может отдать вершину, ребро, фейс по номеру с любой графики. Работу "хамелеона" видно по последней демке на канале - юфка выдает то обединение поверхностей, то кривых, то точек, и еще умеет так массив плоскостей.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Как запросить ребра объекта?

Сообщение Artem » 26 апр 2012 09:20

to Wireless_Fidelity - Вы там отпишите за удачный результат, ок? Главное "что-то, где-то" поменять, а уже на это "что-то, где-то" повесить скажем реакцию.....Ну скажем в единичный параметр все засунуть через точку с запятой или ...да хоть в партнамбер )))
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Пред.След.

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

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

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