Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
JelteDeJong
in reply to: WCrihfield

This example creates a (very thin) box and aligns it with an edge that you selected. 

JelteDeJong_0-1710974578921.png

Public Sub Main()
    Dim oTg = ThisApplication.TransientGeometry

    Dim edge As Edge = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartEdgeFilter, "Select an edge.")
    Dim line As LineSegment = edge.Geometry

    Dim startPoint = line.StartPoint

    Dim translationVector = oTg.CreateVector(startPoint.X, startPoint.Y, startPoint.Z)
    Dim vector1 = oTg.CreateVector(0, 0, 1)
    Dim vector2 = line.Direction.AsVector()

    Dim matrix As Matrix = oTg.CreateMatrix()
    matrix.SetToRotateTo(vector1, vector2)
    matrix.SetTranslation(translationVector)

    Dim partDoc As PartDocument = ThisDoc.Document

    Dim transBRep As TransientBRep = ThisApplication.TransientBRep
    Dim transGeom As TransientGeometry = ThisApplication.TransientGeometry

    Dim boxMinPoint As Point = transGeom.CreatePoint(0, 0, 0)
    Dim boxMaxPoint As Point = transGeom.CreatePoint(10, 0.15, 50)

    Dim box As Box = transGeom.CreateBox()
    box.Extend(boxMinPoint)
    box.Extend(boxMaxPoint)

    Dim minBoxSurface As SurfaceBody = ThisApplication.TransientBRep.CreateSolidBlock(box)

    Dim cGraphics As ClientGraphics = CreateBox(partDoc, minBoxSurface, matrix)

    MsgBox("CHeck the preview")

    cGraphics.Delete()
End Sub

Private Function CreateBox(partDoc As Document, surface As Object, matrix As Matrix) As ClientGraphics
    Dim cGraphics As ClientGraphics = partDoc.ComponentDefinition.ClientGraphicsCollection.Add("OrientedRangeBox")
    Dim surfacesNode As GraphicsNode = cGraphics.AddNode(1)
    surfacesNode.Transformation = matrix

    Dim surfGraphics As SurfaceGraphics = surfacesNode.AddSurfaceGraphics(surface)
    Dim targetAppearance As Asset

    Try
        targetAppearance = partDoc.Assets.Item("Clear - Blue")
    Catch
        Dim sourceAppearance As Asset = ThisApplication.AssetLibraries.Item("314DE259-5443-4621-BFBD-1730C6CC9AE9").AppearanceAssets.Item("InvGen-001-1-2") ' "Clear - Blue"
        targetAppearance = sourceAppearance.CopyTo(partDoc)
    End Try

    surfacesNode.Appearance = targetAppearance

    ThisApplication.ActiveView.Update()

    Return cGraphics
End Function

 

Jelte de Jong
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Blog: hjalte.nl - github.com