[Company Logo Image] BV Detailing & Design, Inc.

      Copyright 2010 BV Detailing & Design, Inc.


Home                     SDS/2 PARAMETRICS


BV Detailing has developed numerous Python scripts that execute in the SDS/2 3D model parametrically. Our parametrics were updated for SDS/2 version 7.0 and above and have the following features:

  • Scripts will import user created modules for functions and classes which makes putting a parametric together more modular and maintenance easier. Many of the modules can be executed as stand-alone parametrics.
  • The subdirectory for library modules is 'SDS/2 root data'/macro/macrolib
  • The subdirectory for automatic default values files is 'SDS/2 root data'/macro/Defaults
  • The subdirectory for images is 'SDS/2 root data'/macro/Images
  • Default values are imported and exported to/from disk. Data types int, float, list and string are automatically converted when imported.
  • Each script will run as a function and will be deleted from memory upon completion.
  • Scripts will read the user's current working directory for imports and images. SDS/2 sets the current working directory to the root SDS/2 data directory.
  • Custom default files can be imported and exported for parametric scripts that have a large number of variables. The script will create a subdirectory under the current job directory if it does not exist. Example subdirectory created: 'C:\SDS2_7.0\jobs\Test1\macro\Defaults\GridSave\GridSave.txt' where the job is 'Test1' and the script name is 'GridSave'.
  • Script instructions can be displayed in report viewer from the dialog box.

BV Detailing developed several custom members that are installed with SDS/2 including EmbedPL, EmbedAngle, and SagRod. Custom member BentPL is available on request. Plugins SagRodTool and ShapeInfo are also installed with SDS/2.

BV Detailing develops custom parametrics for other steel detailers. Please contact us if you are interested in our custom services.

Following is a partial list of BV Detailing SDS/2 parametrics that were updated for SDS/2 version 7.0:

Miscellaneous informational parametrics:

These parametrics demonstrate the powerful capabilities of the modules developed by BV detailing:

  • Basis3D_XYZ.py
  • DistancePointLine3D_v1.02.py
  • PlaneIntersect3D_v1.02.py
  • EllipseLayout_v1.02.py
  • LineLineIntersect3D_v1.04.py

Library modules currently available:

**SDS/2 Version 7.1 required


Kicker Angle Image

Link to SDS/2's parametrics page: http://www.sds2.com/support/parametrics/index.php Contact us or your support represented if you are interested in the latest versions of the SDS/2 parametrics developed by BV Detailing.

Module L3D.py contains class definitions LineLineIntersect3D and DistancePointLine3D. LineLineIntersect3D calculates the geometric relationship between two skew (agonic) lines in R3 (3D space). A line segment is defined that represents the shortest line between two lines in 3D. DistancePointLine3D calculates the geometric relationship between a point and a line in 3D.

Module P3D.py contains class definition Plane3D. Given three non-collinear points, Plane3D defines a three-dimensional plane. A Plane3D instance has methods to:

  1. Check if a point lies on the plane.
  2. Calculate the radius and center point of a circle that connects the three points. From this information a 3 point construction circle can be created in 3D. Plane3D calculates the intersection of three planes to determine the center point. Parametric BeamReducedFlg uses the Plane3D method three_point_circle() to calculate the radius and center point required.
  3. Rotate a point about the plane normal vector passing through point 1 of the three points. Parametric BeamReducedFlg uses the Plane3D method PointRotate3D() to calculate the point list required to make radius cuts.

See also PointPlane3D for standalone implementation of class Point, class Plane3D and miscellaneous functions.

Module Basis3D contains class definitions BasisTransToGlobal and BasisTransToLocal. BasisTransToGlobal translates a point in a local basis to the standard basis (similar to mem.translate()) and has an instance method 'translate'. BasisTransToLocal translates a point in the standard basis to a local basis (similar to mem.trans_to_local()) and has an instance method 'trans_to_local'. The local basis is defined by three points passed to Plane3D. The standard basis is the SDS/2 global XYZ axis. Basis3D uses module Plane3D to define the local basis.



Demo script Basis3D_XYZ.py will add
miscellaneous members that represent
unit vectors of the local basis and local





Rotate about an arbitrary axis in 3D:
Module PointRotate contains function PointRotate3D. PointRotate3D will return the new location of a point in 3D rotated about an arbitrary axis.

EllipseLayout_v1.01.py will layout an ellipse in 3D.









Ellipse layout completed
using 3 point construction circles


Module FileDefaults contains functions developed for use in saving and reading default values files.
Module MemCnt contains function member_count. When passed a member object or a member piecemark string, member_count will return a list of member objects with the same piecemark. If a member object is passed, the passed member will be the first member in the list.
Module PrintDict contains function formatDict that returns a formatted string of a dictionary listing.
Module PrintPtList contains function formatPtList that returns a formatted string of a list of point objects.
Module round_length contains functions round_length_last, round_length_next, and round_length_near.
Module fifDim contains functions:
    round_off_point(pt, [dec_places])
    round_off(number, [denom])
    simplify(n, d)
    fifDim(d, [a])

Additional scripts in line for updating:
  • Col_ErectSeat_R8.py
  • V7Beam_HipPlate_R2.py
  • V7Beam_RidgePlate_R2.py
  • V7Beam_RolledEdge_R2.py
  • V7Beam_SagRodHoles_R2.py
  • V7Col_SafetyHolesMark_R2.py
  • V7Col_TopGirtClip_R3.py
  • V7Col_WebSpliceShims_R2.py
  • V7Girt_SagRodHoles_R2.py
  • V7MemberPropertiesMisc_R2.py
  • V7Misc_RolledEdge_R2.py
More scripts further down the list:
  • Beam_BearingAngleWeb_R3.py
  • Beam_BearingPlate_R3.py
  • Beam_BearingPlateWeb_R2.py
  • Beam_FlgSplicePL_R2.py
  • Beam_Safety_Holes_R1.py
  • Beam_WebAngle_Align_R3.py
  • Beam_WebAngle_Toe.py
  • Beam_WebAngle_Web_R3.py
  • Col_ExtShearTab_R1.py
  • Col_Moment_Plates_R2.py
  • HB_BoltIntersBeam_R3.py
  • HB_BoltIntersBeam_Top.py
  • Misc_WP_Elevations.py
  • Purlin_BoltBrg_R1.py
  • Purlin08_BltBott_R0.py
  • Purlin12_BltBott_R1A.py
  • Sectprop_R0.py
  • VB_Bolted_Stitch_R1.py See parametric StitchPlate
  • VB_BoltInters_R2.py
  • VB_Welded_Stitch_R3.py See parametric StitchPlate
  • VbIntBlt_R2.py

Images for vertical bracing parametric developed for Ivan Jivkov at Jitech Fabrication Technologies

Images for platform parametric - PlatformMembers.py, PlatformMtrl.py, PlatformHoles.py
Data is read from data files. PlatformMembers writes member data to file. PlatformHoles adds rotated slots in toe angle horizontal leg.

Images for parametric Floor_Plates developed for Cartee-Berry & Associates, LLC.
The user selects four supporting beam members and additional beam members for plug welding.
Skewed edges are accomplished with cut layout. The cuts are made automatically.
Extensive use of class LineLineIntersect3D was required.
Image of platform framing used for testing.

Dillards - This project would have been much easier with the tools on this page!

DART - This project IS much easier with the tools on this page!


Dictionary complements an if, elif, else block
Dates class
simplify numerator/denominator
mono/multinomial encapsulation
dirlist5, dirlist walk, dirlist3, dirlist2, dirlist1
beam list by sequence
beam intersecting point list
process each word
optparse module test
user name
class basics
simple matrix 2
snippet: getattr_case_insensitive
point class
current working directory
index list
rational numbers
prime number list
file_data -> dictionary
file_data -> dictionary2
sort points on attribute
variable dictionary
list comprehension dictionary
list comprehension dictionary3
list comprehension dictionary4
list comprehension dictionary6
print number string
csv file to dict
random numbers to file
dice roll
five dice roll - summarize in dictionary
process time
sample points write back
substring dictionary
test ConfigureParser
camera track data
list remove duplicates
csv writer
character sequence replace
pickle interactive
backup music files
parse matrix data and sequence data files
shift characters
sample point data
datetime compare seconds
read/write sensor log
mem_nomod_azimuthvessel_OR   platform_IR platform_ORtoe_dirbrkt_typetos_el hr_ext
83190.0109.0 120.0216.0InF1456.5Yes
832337.0109.0 120.0216.0InF11456.5Yes
833316.0109.0 120.0216.0InF21456.5Yes
834298.0109.0 120.0192.0OutF31456.5Yes
836277.0109.0 120.0192.0OutF41456.5Yes
837270.0109.0 120.0192.0InF1468.5Yes
838256.0109.0 120.0192.0InF1468.5No
839180.0109.0 120.0216.0OutF21456.5Yes
84059.0109.0 120.0216.0InF1456.5Yes
84139.0109.0 120.0216.0InF1456.5Yes
84217.0109.0 120.0216.0OutF1456.5Yes
849356.0109.0 120.0216.0OutF1456.5Yes
Top of page


       Send mail to BV Detailing with questions or comments about this web site.
       Last modified: 02/24/10
       This website is maintained by Bruce Vaughan using Microsoft Frontpage.