Transient B-Rep Ruled Surface with Lines
Description
Demonstrate creating a transient ruled surface. This sample uses all straight line segments for each of the sections. A part document must be open.Code Samples
To use this sample a part must be active.
Public Sub RuledSurf() ' Get the transient B-Rep and Geometry objects. Dim tBRep As TransientBRep Set tBRep = ThisApplication.TransientBRep Dim tg As TransientGeometry Set tg = ThisApplication.TransientGeometry ' Create a new surface body definition. Dim bodyDef As SurfaceBodyDefinition Set bodyDef = tBRep.CreateSurfaceBodyDefinition ' Add a lump, shell, and wire. Dim lumpDef As LumpDefinition Set lumpDef = bodyDef.LumpDefinitions.Add Dim shellDef As FaceShellDefinition Set shellDef = lumpDef.FaceShellDefinitions.Add Dim wireDef As WireDefinition Set wireDef = shellDef.WireDefinitions.Add ' Create coordinate points and use those to create vertex definitions. Dim pnts(2) As Point Set pnts(0) = tg.CreatePoint(0, 0, 0) Set pnts(1) = tg.CreatePoint(10, 3, 0) Set pnts(2) = tg.CreatePoint(20, 0, 0) Dim vertexDefs(2) As VertexDefinition Set vertexDefs(0) = bodyDef.VertexDefinitions.Add(pnts(0)) Set vertexDefs(1) = bodyDef.VertexDefinitions.Add(pnts(1)) Set vertexDefs(2) = bodyDef.VertexDefinitions.Add(pnts(2)) ' Create two wire edges, passing through the three vertices. Call wireDef.WireEdgeDefinitions.Add(vertexDefs(0), vertexDefs(1), tg.CreateLineSegment(pnts(0), pnts(1))) Call wireDef.WireEdgeDefinitions.Add(vertexDefs(1), vertexDefs(2), tg.CreateLineSegment(pnts(1), pnts(2))) ' Create a second wire definition. Dim wireDef2 As WireDefinition Set wireDef2 = shellDef.WireDefinitions.Add ' Create coordinate points and use those to create vertex definitions. Set pnts(0) = tg.CreatePoint(-5, 0, 10) Set pnts(1) = tg.CreatePoint(10, 6, 10) Set pnts(2) = tg.CreatePoint(25, 0, 10) Set vertexDefs(0) = bodyDef.VertexDefinitions.Add(pnts(0)) Set vertexDefs(1) = bodyDef.VertexDefinitions.Add(pnts(1)) Set vertexDefs(2) = bodyDef.VertexDefinitions.Add(pnts(2)) ' Create two edges, passing through the three vertices. Call wireDef2.WireEdgeDefinitions.Add(vertexDefs(0), vertexDefs(1), tg.CreateLineSegment(pnts(0), pnts(1))) Call wireDef2.WireEdgeDefinitions.Add(vertexDefs(1), vertexDefs(2), tg.CreateLineSegment(pnts(1), pnts(2))) ' Create a body using the defined wires. Dim errors As NameValueMap Set errors = ThisApplication.TransientObjects.CreateNameValueMap Dim body1 As SurfaceBody Set body1 = bodyDef.CreateTransientSurfaceBody(errors) ' Create a ruled surface between the two wire bodies. Dim ruled As SurfaceBody Set ruled = tBRep.CreateRuledSurface(body1.Wires.Item(1), body1.Wires.Item(2)) ' Get the part component definition of the active document. Dim partDoc As PartDocument Set partDoc = ThisApplication.ActiveDocument Dim partDef As PartComponentDefinition Set partDef = partDoc.ComponentDefinition ' Create a base body feature of the transient body. Dim baseBody As NonParametricBaseFeature Set baseBody = partDef.Features.NonParametricBaseFeatures.Add(ruled) ' Change the result work surface so it's not translucent. baseBody.SurfaceBodies.Item(1).Parent.Translucent = False ThisApplication.ActiveView.Fit End Sub