Как объединить два или более тел в Eyeshot (VB.net)?

  Dim ACone As New Solid
            ACone = Solid.CreateCone(5, 5, New Point3D(0, 0, 0), New Point3D(0, 0, 50), 20)
            DisplayEyeshotBlock.Entities.Add(ACone)

            Dim BCone As New Solid
            BCone = Solid.CreateCone(5, 5, New Point3D(50, 0, 0), New Point3D(50, 0, 50), 20)
            DisplayEyeshotBlock.Entities.Add(BCone)

Я хочу объединить два тела (или более) в одно тело в devDept Eyeshot, чтобы, когда я применяю вращение (перемещение и т. д.), каждое из них получало это преобразование. Твердые тела могут быть широко разделены. Так же, как два конуса (в коде), которые я хочу объединить в одно тело. Я не могу этого сделать, и заранее спасибо.


person Anas Ahmed    schedule 19.08.2020    source источник
comment
Как именно он терпит неудачу?   -  person Craig    schedule 19.08.2020


Ответы (1)


Вам нужно использовать блоки. блок — это объект, который не имеет визуального представления, но содержит List<Entity> видимый объект.

Простой метод, использующий ваш код, сначала создает ваши 2 твердых тела

Dim ACone As New Solid
ACone = Solid.CreateCone(5, 5, New Point3D(0, 0, 0), New Point3D(0, 0, 50), 20)

Dim BCone As New Solid
BCone = Solid.CreateCone(5, 5, New Point3D(50, 0, 0), New Point3D(50, 0, 50), 20)

затем создайте блочный объект, который будет содержать ваши 2 твердых тела

Dim singleBlock As New Block("name")
singleBlock.Entities.Add(ACone)
singleBlock.Entities.Add(BCone)
MyViewport.Blocks.Add(singleBlock)

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

Dim blockRef As New BlockReference("name")
MyViewport.Entities.Add(blockRef);

этот эталонный объект блока — это объект, который вы хотите перемещать/вращать (применять трансформацию) по всему миру

Код может быть не в рабочем состоянии, так как я редко использую VB.Net, но он должен быть довольно близким. Однако имена классов и порядок действий верны.

person Franck    schedule 19.08.2020