presented by bruce vaughan friday, september 23, 2011 9:00

45
Presented by Bruce Vaughan Friday, September 23, 2011 9:00 – 10:00 AM

Upload: others

Post on 19-Apr-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Presented by Bruce VaughanFriday, September 23, 2011

9:00 – 10:00 AM

Page 2: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

o Custom Member and Commands API (plugins)(p g )o New modules:

• Model• Dialog• Drawing

Fl tC i• FloatComparison• Layout3D• Math3D• Point3D• Transform3D

F db k• Feedback

Page 3: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

o Commands can be created that are accessed from the user’s toolbar, shortcut menu, or from the user s toolbar, shortcut menu, or mode

o Commands are installed under the SDS/2 data or Job “plugins” subdirectory

o CommandsB Stiff t i B Stiff 2 08 • BeamStiff – parametric Beam_Stiff_v2.08.py installed as a plugin

• ColumnStiff – parametric on Col_Stiff_v2.08.py p pyinstalled as a plugin

• ShapeInfo – new parametric ShapeInfo.py installed as a pluginas a plugin

Page 4: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

New features:• Cope or Clip• Rotate about

member “Z” axisW ld d Pl t • Welded Plate Wide Flange material supportpp

Custom toolbar icons:

Page 5: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Custom toolbar icons:

Page 6: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

ShapeInfo will display rolled shape data from the local material file for a given size. The size can be entered or selected from a browse window. The user can alternately display main information only or all attributes for a particular y p y y pshape.SDS/2 automatically generates a text icon for the toolbar.

Page 7: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

o EmbedPL version 4.17E b dA l i 3 09o EmbedAngle version 3.09

o RodBrace version 1.03S R d i 1 04o SagRod version 1.04

o ConcFtgCol version 3.04o CraneRail version 1.01o TiltUp version 3.00

Page 8: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

New features:• An appropriate material description is set for the pp p p

specified material grade.• Full support for metric – metric and imperial primary

units are interchangeableunits are interchangeable.• Enabled named material colors in context menu and

entry widget.• Enabled addition of CNC marks at studs and DBAs.• Added support for Lenton couplers.• The name of the Defaults file now includes the name • The name of the Defaults file now includes the name

of the job.• Added a LoadableFrame for the dialog box (copy,

paste load and save buttons)paste, load and save buttons).

Page 9: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Imperial units are displayed when fabricator primary dimensions are set to “Imperial”.

Page 10: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Metric units are displayed when fabricator primary dimensions are set to “Metric”.

Page 11: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Available diameters and material description are dependent on selected material grade.

Page 12: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

L t l d t h b t d i t th XML d t fil f DBA/R b Lenton coupler data has been entered into the XML data file for DBA/Rebar sizes 1/2, 5/8, 3/4, 7/8, and 1in.

<LentonCouplerData><!-- 'size' values must equal a value in the dba_diaList corresponding to the DBA grade -->

l d A di "0 75" B di "1 1875" D di "0 5625" G di "0 4375" f "L " "EL12C2" i "1/2"/<couplerdata A_dia="0.75" B_dim="1.1875" D_dim="0.5625" G_dim="0.4375" mfg="Lenton" part_no="EL12C2" size="1/2"/><couplerdata A_dia="1.00" B_dim="1.375" D_dim="0.875" G_dim="0.5625" mfg="Lenton" part_no="EL16C2" size="5/8"/><couplerdata A_dia="1.25" B_dim="2.15625" D_dim="1.125" G_dim="0.875" mfg="Lenton" part_no="EL20C3J" size="3/4"/><couplerdata A_dia="1.25" B_dim="2.40625" D_dim="1.25" G_dim="0.75" mfg="Lenton" part_no="EL22C3J" size="7/8"/><couplerdata A_dia="1.5625" B_dim="2.53125" D_dim="1.375" G_dim="1.00" mfg="Lenton" part_no="EL25C3J" size="1in"/>

</LentonCouplerData>

Page 13: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Units are supported in hanchor spacings. Units must

be used when changing from metric to imperial pprimary dimensions. Lenton couplers can be specified on this screen and specified on this screen and will be applied if a suitable coupler is listed in the data f l f h f d DBAfile for the specified DBA diameter.

Page 14: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Add CNC marks at studs and DBAs was added as a setup item. • A LoadableFrame was added to the dialog box. Notice the familiar

buttons in the upper left corner.h d d h d b d d f h bl• Joist anchor and mixed anchor data can be edited from the Joist Table

and Mixed Table buttons.

Page 15: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• A LoadableFrame was added to the dialog box.• The name of the Defaults file now includes the name of the job.• Added vertical leg hole option “Fixed”. This enables holes starting at

f d d f h d A d ll d dfixed distances from each end. A negative distance is allowed one end.• Added support for interchangeable metric and imperial units

Page 16: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

RodBrace is a new custom member with the following features:• Add clevis at left end or plain• Add clevis at right end or plain• Add pin or open hole in clevises• Add thread at left end or plain• Add thread at right end or plain• Add thread at turnbuckles or plain• Add turnbuckle(s)( )• User-determined first round bar length if turnbuckle is used• Option to rotate member about its "X" axis to align with a

sloping plane• Option to rotate each clevis about the member axis• Single rod or last rod length will be rounded off to the value

of variable ROUNDOFFINCR

Page 17: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 18: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

SagRod is a new custom member with the following features:• SagRod is a processable sag/hanger/brace round bar custom member.

R i SDS/2 i 7 234 i i 7 241 t lRequires SDS/2 version 7.234 minimum, 7.241 to process properly.• Supported connections:

• PlainHole in top flange• Hole in top flange

• Hole in bottom flange• Hole in web• Floor Clip angle (Point 1 only)• Floor Clip angle (Point 1 only)

• "Hole" and "Floor Clip" connections offer a variety of choices for hole types, sizes and rotations for each end.

• Supported connecting member types: "Misc", "Column", "Beam", pp g yp , , ,"Vertical Brace", "Horizontal Brc", "Purlin", "Girt"

• The API will not make holes in non-processable ('Misc') members.• Supported connecting main material types: "W flange", "W Tee", "Tube",

h l l ld d ld d h l“"Channel", "Angle", "Cold Formed Z", "Cold Formed Channel“.

Page 19: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• “Repeat” has been implemented. After the first SagRod is added or edited, subsequent identical SagRods can be added with the “Repeat” button.

• Options:Add th d t P i t 1 l i• Add thread at Point 1 or plain

• Add thread at Point 2 or plain• Add one or two nuts each end, type selectable (nut 1 can be doubled)• Add one or two washers each end, type selectable, yp• Add bearing plate each end (Straight rod type only)• Add floor clip at Point 1• Rod overall length can be rounded to a user-selectable increment

Rod overall length is displayed and can be modified for rounding • Rod overall length is displayed and can be modified for rounding (straight rod type only)

• Member can be rotated about its "X" axis• One or two bend points can be selected

Th l h f h b d b dj d• The length of each bend can be adjusted• Different values of bearing distances and grips can be input. Different

values on otherwise identical sag rods will result in different piecemarks.• Holes are added to a supporting member main material if a valid

b l f dpp g

intersecting member element is found.

Page 20: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Metric and Imperial units are interchangeable.• The rod material always ends at the end of the member line. User y

can change the length of straight sag rod members on the edit screen.

• The floor clip can be plain or have one or two holes for expansion p p pbolts.

• The bearing plate is a rectangular plate object suitable for bearing on top of joist chord angles.p j g

• Results may be invalid if attempting to hole connect to a member with multiple main materials.

• User can add one or two bend points. p• A bent sag rod can be converted to a straight sag rod but not vice-

versa.• A help file can be installed and called from the Help button• A help file can be installed and called from the Help button.

Page 21: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Issues:• Nuts and washers receive different marks if the distance between pt1

d t2 diff t S R d d difi d t l l t t2 fi d and pt2 are different. SagRod code was modified to calculate pt2 a fixed distance from pt1.

• There was a memory leak in the custom member API (7.240 and older). During process, memory usage will build. When the upper limit of g p y g ppavailable memory was reached, process would fail resulting in the model closing and the member file locked. The leak was fixed in 7.241.

• Sag rod holes cannot be added to non-processable members.• Material bolt objects must be added after all material in SDS/2 version • Material bolt objects must be added after all material in SDS/2 version

7.239. If not, bolts added before material will disappear.• Edit() method would always return True unless member was set to

model complete. This would set the member process flag. This was l d b ti h h l f th di l b b f d ft d solved by computing a hash value of the dialog box before and after and

returning the boolean preHash != postHash.• self.SetImmediateProcess(False) must be called in __init__() if the Modifies()

method returns a list with one or more member numbers. If not, SDS/2 will crash.

Page 22: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Issues (continued):• If param.ClearSelection() is called in the Modifies() method all material

becomes uneditable.• Bend points must be selected before the edit screen. SDS/2 will not

allow point selections after the edit screen.• Sag rod and supporting members do not get properly marked for

processing when stretched or moved. Mark all affected members for processing manually. This is PR24282.A i ll i d d ld b i X i • A true vertically oriented sag rod would not rotate about its X axis. As a work-around, one end would be moved 0.01" so member would not be true vertical. A self.SetColumn(True) call was added in the constructor and CreateMaterial() method which resolved this issueconstructor and CreateMaterial() method, which resolved this issue

• Sag rods with different rotations will have different piecemarks.

Page 23: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 24: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 25: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Graphical and Galvanized attributes are supported.

• Dialog attribute frames are l d bl ( d loadable (copy, paste, save and load buttons).

• Member piecemark can be edited in the member screen. When changed, it becomes a user mark. The piecemark can be changed to a system mark by

i it d iremoving it and processing.

Page 26: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• By checking the Galvanized check button, all material finishes will be set to “Galvanized”. The finishes for nuts and washers will be set to the

l f f b F b i t () l b lt fi i h h d li value of fab.Fabricator().galv_conn_bolt_finish when modeling was started. Unchecking the Galvanized check button restores the finishes to the initial values of the edit screen.

Page 27: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• By checking the Graphical check button, the system material will not be regenerated.

Page 28: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• When an attribute is modified in the edit screen, the member is marked f i d “P R i d” ill b di l d ditfor processing and “Process Required” will be displayed on reedit.

Page 29: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

SagRod members in an industrial building

Page 30: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• ConcFtgCol – “Rectangular Plate” material custom member that represents a concrete footing, square column, or round column.

• CraneRail – Simple rolled shape custom member written for a crane rail CraneRail Simple rolled shape custom member written for a crane rail member where the member line could be positioned along the top edge of material.

• TiltUp – “Rectangular Plate” material custom member that represents a p g pconcrete wall, tilt-up or precast panel.

CraneRail

Page 31: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 32: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 33: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Dialog box customization possibilities are Dialog box customization possibilities are virtually unlimited.

• Custom Tkinter widgets can be created and gmanipulated for special applications.

• On the next slide is displayed an inside polygon p y p ygtest application. The red circle is the polygon start point, magenta circles are additional

l i d h ll i l i h polygon vertices, and the yellow circle is the point to test.

Page 34: Presented by Bruce Vaughan Friday, September 23, 2011 9:00
Page 35: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Parametric BentBolt_v3.04.py uses new dialog box features._ py g

Page 36: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• To make use of the new dialog box code for a To make use of the new dialog box code for a parametric, starting from a simple template can be helpful.

• Source code for a simple template is on the following slide. Other code can be copied from other applications, even custom member code, as needed.F b i h l i i l d d • For brevity, the only imports included are imports required for the simple application.

Page 37: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

from point import Pointfrom member import Member, MemberLocatefrom member import MarkMemberForProcessfrom member import error as memerrorf j b i J b P J b P O M

DimensionEntry(self.mainFrame,'extendDist',style='dim',label="Distance to extend")

if lf R ()from job import Job, ProcessJob, ProcessOneMemimport param

from dialog import Dialogfrom dialog.frame import Framefrom dialog.dimension import DimensionEntryf d l b b C b b

if self.Run():m = self.model[0]if m.whichEnd in ["Left", "Both"]:

mem.left.location = mem.left.location + \mem.translate(-m.extendDist, 0, 0)

if m.whichEnd in ["Right", "Both"]:h l h l \from dialog.combobox import Combobox

param.Units("feet")

class DictAttr(dict):def __init__(self,**kw):

mem.right.location = mem.right.location + \mem.translate(m.extendDist, 0, 0)

mem.Update()MarkMemberForProcess(mem.number)ProcessJob()

dict.__init__(self, kw)self.__dict__.update(kw)

class App(Dialog):

def __init__(self, mem, *models):

if __name__ == "__main__":def main():

param.ClearSelection()m = DictAttr(whichEnd="Left", extendDist=12.0)while True:

try:Dialog.__init__(self, "Extend Ends")self.window.geometry("+400+300")self.model = modelsself.mainFrame = Frame(self)Combobox(self.mainFrame,

'whichEnd',

mem = MemberLocate("Select member to extend end(s)")except memerror:

returnparam.ClearSelection()x = App(mem, m)# if x.Run():

["Left", "Right", "Both"],"Which end to extend")

main()

Page 38: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Capability was added to parametrics with the p y paddition of the model module.

• The model module gives users access to many b b d i l b l d ld member, member end, material, bolt, and weld

attributes that were previously unavailable.• The model module gives users a more efficient • The model module gives users a more efficient

way of accessing members in the 3D model.• Parametric ModelAttributesPrint will display p y

most available attributes for selected members and objects (material, bolts, welds) on the selected membersselected members.

Page 39: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• Parametric Model Mtrl ABM compiles a Parametric Model_Mtrl_ABM compiles a summary of material for selected members suitable for purchasing.

• Parametric Model_Piecemarks summarizes all member and submaterial piecemarks in the current job. It also includes a progress bar.

Page 40: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

• The Transform3D module, when used with new material method SetTransform, makes possible in f , pparametrics what was previously difficult or impossible – moving material, setting odd material orientations and calculating point locations in the orientations, and calculating point locations in the 3D model.

• Unfortunately, there is little documentation at this time.

• Parametric Misc_X_Bridging_v2.02.py was written to add “X” bracing angles normal to sloping to add X bracing angles normal to sloping planes. Use of Transform3D code eliminated one pick point and made point location calculations easiereasier.

Page 41: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

angle.Add()# Transform3D.Transform3D(member index, mtrl index)xf = Transform3D Transform3D(angle number 0)xf = Transform3D.Transform3D(angle.number, 0)# offset member material by gageangle.SetTransform(xf.Translate(Point3D(0, gage, 0)))

Page 42: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

The location and orientation of plate washers on bent sag rods was too difficult using old methods. Use of Transform3D methods made it possible. See source code snippets on the next slides.

Page 43: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

if self.plateLeft == "Yes":# C l l t l t k i t i t l ti t i# Calculate plate work points using a translation matrix# self.zAxis was assigned in self.AddRod()x0 = Point3D(uv(self.ptList[1],self.ptList[0]))z0 = self.zAxisy0 = z0.Cross(x0)T = Transform3D(x0, y0, z0)pt2 = self.ptList[0] + \

T.TranslateToGlobal(Point3D(-left_brg_dist,self.plateLength/2,-self.plateWidth/2))

pt3 = pt2 + T.TranslateToGlobal(Point3D(0,-self.plateLength, 0))x = Point3D(uv(pt2, pt3))( (p , p ))z = Point3D(uv(self.ptList[1], self.ptList[0]))y = z.Cross(x)self.PLAdd(pt2, pt3, Transform3D(x, y, z, pt2))

Page 44: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

def PLAdd(self, p1, p2, T):'''Add rectangular bearing washer plate'''Add rectangular bearing washer platemem = Member(self.GetMemberNumber())rp1 = RectPlate()rp1.member = memrp1.pt1 = Point(p1)rp1 pt2 = Point(p2)rp1.pt2 = Point(p2)rp1.grade = self.plateGraderp1.origin = "FS"rp1.width = self.plateWidthrp1.thick = self.plateThk

1 k di lf l hrp1.work_pt_dist = self.plateLengthrp1.setback_left = 0rp1.setback_right = 0rp1.length = self.plateLengthrp1.mtrl_type = "Plate"rp1.mtrl_usage = "Brg Washer PL"rp1.finish = self.plateFinishrp1.color = OptionDlg.validColTup(self.plateColor)rp1.ref_pt_offset = (self.plateLength/2.0,-self.plateWidth/2.0,0)rp1.mtrl_is_main = "No"rp1.add()rp1.SetTransform(T)

Page 45: Presented by Bruce Vaughan Friday, September 23, 2011 9:00

Utilization of the enhanced dialog box and other parametric code enhancements can greatly improve the ease of use and flexibility of your applications the ease of use and flexibility of your applications and increase the productivity of their use.

QUESTIONS?

Post to the SDS/2 Paramtrics Forum or Detailing Forum with any

Presented by Bruce Vaughan

Post to the SDS/2 Paramtrics Forum or Detailing Forum with any additional questions you may have regarding this presentation.

Friday, September 23, 20119:00 – 10:00 AM