03-20-2024
03:44 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
03-20-2024
03:44 PM
This example creates a (very thin) box and aligns it with an edge that you selected.
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.
Blog: hjalte.nl - github.com