Home > User Guide > Creating and Modifying Models
Creating Solids
ACIS is a solid modeler that can combine wireframe, surface, and solid models. A wireframe model defines an object only by its edges and vertices. A surface model is similar to a wireframe model, but defines an object by its visible surfaces, including faces. A solid model defines an object in terms of its size, shape, density, and physical properties (for example, weight, volume, and center of gravity).
In the preceding sections, only the functionality of wireframe and surface models were exercised. In this section, solid models are explored. ACIS provides a variety of ways to create solids. The examples in this section create solids by:
- Using solid primitives
- Enclosing a void
- Sweeping a surface
Solid Primitives
ACIS provides many standard basic solid types that can be created quickly, and if desired, already as body topological elements. These include blocks, cones, cylinders, prisms, pyramids, spheres, tori, and wiggles. These are solid primitives.
The following example creates several simple solid primitives.
Scheme Example
; In the previous Scheme example, options were changed.
; If not already done so through a restart,
; turn them back to the defaults.
(option:set "sil" #t)
;; #f
(option:set "u_par" -1)
;; 5
(option:set "v_par" -1)
;; 7
; Create solid block.
(define my_block (solid:block (position 10 10 10)
(position 15 20 30)))
;; my_block
; Create solid cylinder.
(define my_cyl (solid:cylinder (position -10 -5 -15)
(position 0 -15 -15) 10))
;; my_cyl
; Create solid cone.
(define my_cone (solid:cone (position 20 -15 0)
(position 40 -15 10) 10 2))
;; my_cone
; Create a solid prism.
(define my_prism (solid:prism 10 5 5 6))
;; my_prism
; Create a solid pyramid.
(define my_pyramid (solid:pyramid 5 10 15 10 15))
;; my_pyramid
; Create solid sphere.
(define my_sphere (solid:sphere (position -20 20 30) 5))
;;my_sphere
; Create solid torus.
(define my_torus (solid:torus (position 20 -20 -20) 7 3))
;; my_torus
; Save the results to an output file.
(part:save "tmpsolprim1.sat")
;; #tSome of the Scheme extensions related to creation of standard solids are:
- solid:block
- Creates a solid block.
- solid:cone
- Creates a right circular cone.
- solid:cylinder
- Creates a right circular cylinder.
- solid:prism
- Creates a solid prism.
- solid:pyramid
- Creates a solid pyramid.
- solid:sphere
- Creates a sphere centered at the specified position.
- solid:torus
- Creates a solid torus.
- solid:wiggle
- Creates a rectangular block with a spline surface top.
Using Surfaces to Enclose a Void
The techniques for creating surfaces provide a significant amount of flexibility in creating user defined, free form models. However, surface models are just that: models of surfaces. Surfaces have no depth and are not solids. Even when the edges of the surfaces are cleverly chosen to match the edge boundaries of other surfaces, the model will not be a solid unless explicitly defined as such.
If you create surfaces individually, you can combine the surfaces into a volume. If there was overlapping at the individual surface boundaries, the overlap remains. All faces, edges, and vertices that are not necessary to support the topology of the solid entity can be removed.
Some of the Scheme extensions related to solid creation from a surface are:
- sheet:2d
- Modifies a single-sided sheet body into a double-sided sheet body.
- sheet:enclose
- Converts a closed 2D sheet into a solid volume.
Sweeping Surfaces into Solids
ACIS also provides techniques for creating more freeform solids. These include revolving faces about an axis, revolving wires about an axis, sweeping planar faces along a path, rigid sweeping, and using law mathematical functions to do non planar sweeps.
The most flexible of the solid creation techniques is sweeping using law mathematical functions. Laws in sweeping permit:
- Drafting the profile
- As the profile is swept, the ending profile has been offset an equal distance, which facilitates removal of the item from a mold.
- Twisting the profile
- This enables not only solid contours whose profile corkscrews around the sweep path, but also solid contours whose profile meanders or zigzags along the sweep path.
- Orienting the profile
- Twisting orients the profile based on the travel distance along the path. A rail law, on the other hand, specifies the orientation of the profile with respect to local features of the sweep path.
- Filling gaps
- The curves can be extended along their natural curves, along straight lines until they intersect, or as rounded corners.
- Scaling the profile
- Scaling results in proportional changes that do not affect the topology.
Figure. Drafting versus Scaling
As is evident from the control that laws add to sweeping, sweeping is a very powerful tool in creating freeform solids. The sweep path no longer is restricted to being planar. Sweeping does have the limitation that only planar (surface) profiles can be swept. However, a profile can be swept to meet a given face and that face does not have to be planar. Moreover, Boolean operations using non-planar profiles can be performed on the end caps of the swept body to achieve the desired shape.
When a wire body is swept, it can be specified whether or not end capping is performed. In other words, the result can be specified to be either a solid or a straw. When a surface (profile) is swept, it can be either one sided or two sided. The resulting solid is created with the end caps being single sided and having their orientation in the proper direction for a solid.
The following example creates a wire offset. Because the wire offset in the example is planar and bounded, it can be used as a wire body profile for a solid sweep operation. Although not required, the wire body could be made into a simple surface profile using covering techniques, such as sheet:cover-wires. In addition, the simple surface profile can be (optionally) turned into a double sided sheet using sheet:2d.
Scheme Example
;--------- Copy of the Offsetting a Wire Body Example
;--------- (below this line)
; Define the positions to be used
(define my_point1 (position 0 0 0))
;; my_point1
(define my_point2 (position 20 0 0))
;; my_point2
(define my_point3 (position 20 10 0))
;; my_point3
(define my_point4 (position 0 10 0))
;; my_point4
; Create edge 1 as a sine edge.
(define my_linear1 (edge:linear my_point1 my_point2))
;; my_linear1
; Create edge 2 as a linear edge.
(define my_linear2 (edge:linear my_point2 my_point3))
;; my_linear2
; Create edge 3 as a spline curve.
(define my_linear3 (edge:linear my_point3 my_point4))
;; my_linear3
; Create edge 4 as a spline curve.
(define my_linear4 (edge:linear my_point4 my_point1))
;; my_linear4
; Create a wire-body from a list of edges.
(define my_wirebody (wire-body
(list my_linear1 my_linear2 my_linear3 my_linear4)))
;; my_wirebody
(define my_offset (wire-body:offset my_wirebody 5 "r"))
;; my_offset
(entity:delete my_wirebody)
;; ()
;--------- Copy of the Offsetting a Wire Body Example
;--------- (above this line)
(define my_profile my_offset)
;; my_profile
; Create a list of edges for use later.
(define my_list (entity:edges my_profile))
;; my_list
; Create a vector path for sweeping.
(define my_vec_path (gvector 0 0 20))
;; my_vec_path
; Sweep the profile along this vector. Create it as a solid.
(define my_sweep (sweep:along-vector my_profile #t
my_vec_path))
;; my_sweep
; Save the results to an output file.
(part:save "tmpsweep1.sat")
;; #t
![]()
![]()
Figure. Sweeping a Surface to a Solid
This sweeping example does not use laws, because the sweeping path is planar and it is desired that the resulting surface have no twist. It defines a vector to be used for sweeping. The offset profile is swept along this vector into a solid.
A new variable, my_profile, which references the same entity as my_offset is defined in this example. Its purpose is to make the example somewhat clearer in that the created wire offset, my_offset, is now used as the profile for the sweeping operation.
Some of the Scheme extensions related to sweeping are:
- solid:revolve-face
- Creates a solid by revolving a face about an axis.
- solid:revolve-wire
- Creates a solid by revolving a wire about an axis.
- solid:sweep-face
- Creates a solid by sweeping a planar face along a vector.
- solid:sweep-wire
- Creates a solid by sweeping a planar wire along a vector.
- sweep:about-axis
- Sweeps a face or a wire about an axis as a sheet or as a solid.
- sweep:law
- Creates a surface or solid by sweeping a profile along a path.
- sweep:rigid
- Does a rigid sweep of a face or a wire along a path or a vector.
[Top]
© 1989-2007 Spatial Corp., a Dassault Systèmes company. All rights reserved.