home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Share Gallery 1
/
share_gal_1.zip
/
share_gal_1
/
GR
/
GR505.ZIP
/
LSP.EXE
/
SDBEAM.LSP
< prev
next >
Wrap
Lisp/Scheme
|
1988-08-20
|
29KB
|
441 lines
(defun c:sdbeam ()
(vmon)
(graphscr)
(terpri)
(princ "Copyright 1988, Jerry Montgomery, All Rights Reserved")
(setvar "blipmode" 0)(setvar "cmdecho" 0)(setvar "highlight" 0)
(terpri)
(newd)
(losc)
(inatr)
(points)
(draw)
(angle)
(block)
(dimb)
(if (= lout "Y")(command "zoom" "p" ))
(command "insert" "posn" "0,0" "" "" "" posn)
(if (and (= lout "Y")(= posn 9))(lin))
(setvar "blipmode" 1)(setvar "cmdecho" 1)(setvar "highlight" 1)
)
;*******************************************************************;
;Test for new drawing ;
;
(defun newd ( / z) ;
(setq z(entlast)) ;
(if(= z nil) ;
(progn ;
(setq posn 0) ;
(command "dim" "dimtad" "on" "dimtoh" "off" "dimtsz" ".05" ;
"dimtih" "off" "dimtxt" "0.125" ^c "layer" "s" "bom" "" ;
"insert" "blo" "0,0" "" "" "" "layer" "s" "graphics" "") ;
) ;
(setq posn (atoi (cdr (assoc 1 (entget (entnext z)))))) ;
) ;
) ;
;*******************************************************************;
;*****************************************************************************;
;Get scaling and layout modes ;
;
(defun losc ( / check) ;
(setq check "n") ;
(while check ;
(prompt "Use automatic layout and scaling? [Y]es or [N]o <Y> ") ;
(setq lout(getstring)) ;
(setq lout(strcase lout)) ;
(if(or(= lout "Y")(= lout "")) ;
(progn ;
(setq lout "Y") ;
(getposn)(data) ;
(setq l 6 w (* (atoi width) 0.125) check nil) ;
)) ;
(if (= lout "N") ;
(progn ;
(setq default ;
(getstring "Use automatic scaling only? [Y]es [N]o <Y> ")) ;
(setq default (strcase default))(terpri) ;
(if (or (= default "Y")(= default "")) ;
(progn (setq default "Y") ;
(setq posn(+ posn 1))(data)(terpri) ;
(prompt "Digitize lower left hand corner of BEAM.")(terpri) ;
(setq p1 (getpoint)) ;
(setq l 6 w (* (atoi width) 0.125) check nil) ;
)) ;
(if (= default "N") ;
(progn ;
(setq check nil)(terpri) ;
(setq posn(+ posn 1))(data)(terpri) ;
(prompt "Digitize lower left hand corner of BEAM.")(terpri) ;
(setq p1 (getpoint)) ;
(setq l ;
(getdist "Enter LENGTH of beam in inches to be drawn. ")) ;
(terpri) ;
(setq w ;
(getdist "Enter WIDTH of beam in inches to be drawn. ")) ;
(terpri) ;
)) ;
)) ;
) ;
) ;
;*****************************************************************************;
;*****************************************************************************;
;Input data section ;
;
(defun data ( / check hold pstring) ;
(if (= reqd nil)(setq reqd "ONE")) ;
(if (= width nil)(setq width "14")) ;
(if (= weight nil)(setq weight "22")) ;
(if (= feet nil)(setq feet "0")) ;
(if (= inch nil)(setq inch "0")) ;
(if (= rmrk nil)(setq rmrk " ")) ;
(if (= mark nil)(setq mark "B1")) ;
;
(setq check "n") ;
(while check ;
(terpri) ;
(setq hold width) ;
(setq pstring ;
(strcat "Enter the actual WIDTH of the beam in inches. <" width "> ")) ;
(princ pstring)(setq width (getstring)) ;
(if (= width "")(setq width hold))(terpri) ;
;
(setq hold weight) ;
(setq pstring ;
(strcat "Enter the actual WEIGHT of the beam in lbs/ft. <" weight "> "))
(princ pstring)(setq weight (getstring)) ;
(if (= weight "")(setq weight hold))(terpri) ;
;
(setq hold feet) ;
(prompt "Enter the actual LENGTH of the beam.")(terpri) ;
(setq pstring (strcat "Enter FEET. <" feet "> ")) ;
(princ pstring)(setq feet (getstring)) ;
(if (= feet "")(setq feet hold));(terpri) ;
;
(setq hold inch) ;
(setq pstring (strcat "Enter INCHES. <" inch "> ")) ;
(princ pstring)(setq inch (getstring)) ;
(if (= inch "")(setq inch hold))(terpri) ;
;
(setq hold mark) ;
(setq pstring (strcat "Enter the ID MARK. <" mark "> ")) ;
(princ pstring)(setq mark (getstring)) ;
(if (= mark "")(setq mark hold))(terpri) ;
;
(setq hold reqd) ;
(setq pstring ;
(strcat "Enter the NUMBER REQUIRED. <" reqd "> ")) ;
(princ pstring)(setq reqd (getstring)) ;
(if (= reqd "")(setq reqd hold))(terpri) ;
;
(setq hold rmrk) ;
(setq pstring (strcat "Enter REMARKS. <" rmrk "> ")) ;
(princ pstring)(setq rmrk (getstring 1)) ;
(if (= rmrk "")(setq rmrk hold))(terpri) ;
;
(setq check ;
(getstring "Do you want to check these values? [Y]es [N]o <N> ")) ;
(setq check(strcase check)) ;
(if (or (= check "")(= check "N"))(setq check nil)) ;
) ;
) ;
;*****************************************************************************;
;***************************************************************;
;Get x,y position of beam point ;
;
(defun getposn ( / z1 ) ;
(if(= lout "Y")(progn ;
(setq posn(+ posn 1)) ;
(if(= posn 1)(setq p1 '(2.75 19) z1 '(1.25 16.125))) ;
(if(= posn 2)(setq p1 '(12.25 19) z1 '(10.75 16.125))) ;
(if(= posn 3)(setq p1 '(21.75 19) z1 '(20.25 16.125))) ;
(if(= posn 4)(setq p1 '(2.75 11.34) z1 '(1.25 8.4375))) ;
(if(= posn 5)(setq p1 '(12.25 11.34) z1 '(10.75 8.4375))) ;
(if(= posn 6)(setq p1 '(21.75 11.34) z1 '(20.25 8.4375))) ;
(if(= posn 7)(setq p1 '(2.75 3.68) z1 '(1.25 0.75))) ;
(if(= posn 8)(setq p1 '(12.25 3.68) z1 '(10.75 0.75))) ;
(if(= posn 9)(setq p1 '(21.75 3.68) z1 '(20.25 0.75))) ;
(command "zoom" "w" z1 "@9,7") ;
)) ;
) ;
;***************************************************************;
;*****************************************************************************;
;Insert attributes ;
;
(defun inatr ( / xpt ypt bompt section) ;
(setq section(strcat "W" width "x" weight "x")) ;
(if (<= (strlen inch) 3)(strcat " " inch)) ;
(setq xpt 29.5 ypt (- 23 posn)) ;
(setq bompt (list xpt ypt)) ;
(command "layer" "s" "dim" "") ;
(command "insert" "bmb" bompt "" "" "" reqd mark section feet inch rmrk) ;
(command "layer" "s" "graphics" "") ;
) ;
;*****************************************************************************;
;*********************************************************;
;Points for plotting beams ;
;
(defun points ( / osr ) ;
;
(setq blockx 0.5 blocky 0.25 fwidth 0.0625 aos 0.375) ;
(setq osr 0.125 bp 0.51625 bpu 1.0625) ;
(setq p2(list(+(car p1)blockx)(cadr p1))) ;
(setq p3(list(+(car p1)(/ l 2))(cadr p1))) ;
(setq p4(list(car p1)(+(cadr p1)fwidth))) ;
(setq p5(list(car p2)(cadr p4))) ;
(setq p6(list(car p3)(cadr p4))) ;
(setq p7(list(car p1)(+(cadr p1)blocky))) ;
(setq p8(list(car p1)(+(cadr p1)(/ w 2)))) ;
(setq p9(list(car p1)(+(cadr p1)w))) ;
(setq p10(list(+(car p1)l)(+(cadr p1)w))) ;
(setq p11(list(+(car p1)l)(cadr p1))) ;
(setq p12(list(car p2)(-(cadr p9)blocky))) ;
(setq p13(list(-(car p11)blockx)(cadr p12))) ;
(setq p14(list(-(car p13)fwidth)(+(cadr p7)fwidth))) ;
(setq p15(list(car p1)(+(cadr p1)aos))) ;
(setq p16(list(car p1)(-(cadr p9)aos))) ;
(setq p17(list(+(car p1)0.375)(cadr p15))) ;
(setq p18(list(car p17)(cadr p16))) ;
(setq p19(list(-(car p1)osr)(cadr p16))) ;
(setq p20(list(car p19)(cadr p15))) ;
(setq p21(list(-(car p20)fwidth)(cadr p15))) ;
(setq p22(list(car p21)(cadr p16))) ;
(setq p23(list(-(car p22)fwidth)(cadr p9))) ;
(setq p24(list(-(car p22)fwidth)(+(cadr p22)fwidth))) ;
(setq p25(list(+(car p17)fwidth)(-(cadr p17)fwidth))) ;
(setq p26(list(+(car p11)fwidth)(+(cadr p11)blockx))) ;
(setq p27(list(-(car p10)fwidth)(-(cadr p10)blockx))) ;
(setq p28(list(+(car p15)fwidth)(+(cadr p15)osr))) ;
(setq p29(list(-(car p16)fwidth)(-(cadr p16)osr))) ;
(setq p30(list(car p3)(-(cadr p3)1.75))) ;
) ;
;*********************************************************;
;**********************************************************;
;Draw beam ;
;
(defun draw ( / p33 p34 p35 ) ;
(command "line" p1 p2 p3 "" ) ;
(command "line" p1 p4 p5 p6 "") ;
(command "line" p4 p7 p8 "") ;
(setq p34(list(+(car p3)blocky)(- (cadr p3) blocky))) ;
(setq p35(list(-(car p8)blocky)(+ (cadr p8) blocky))) ;
(command "mirror" "w" p35 p34 "" p8 "@1,0" "") ;
(setq p33(list(-(car p9)blocky)(+ (cadr p9) blocky))) ;
(command "mirror" "w" p33 p34 "" p3 "@0,1" "") ;
) ;
;**********************************************************;
;*************************************************************************;
;Add angles ;
;
(defun angle ( / p36 ) ;
(terpri)(terpri) ;
(princ "Add angle bracket(s)? [N]one [L]eft [R]ight [B]oth <N> ") ;
(setq angles(getstring)) ;
(if (= angles "")(setq angles "N")) ;
(setq angles(strcase angles)) ;
(terpri) ;
(if(not (= angles "N")) ;
(progn ;
(command "erase" "c" p28 p29 "") ;
(command "line" p7 p15 p17 p18 p16 "@0,0.125" "") ;
(command "line" p20 p21 p22 p19 "")(command "line" p16 p19 p20 p15 "") ;
(if(= angles "R")(progn ;
(setq p36(list(+(car p11)fwidth)(cadr p11))) ;
(command "mirror" "w" p23 p36 "" p3 p6 "y")(command "redraw"))) ;
(if(= angles "B")(progn ;
(command "erase" "c" p26 p27 "") ;
(command "mirror" "c" p24 p25 "" p3 "@0,1" ""))) ;
)) ;
(setq dos 0.1875) ;
(setq b1 p1 b4 p11) ;
(if(or(= angles "L")(= angles "B")) ;
(setq b1(list(-(car p1)dos)(+(cadr p1)aos)))) ;
(if(or(= angles "R")(= angles "B")) ;
(setq b4(list(+(car p11)dos)(+(cadr p1)aos)))) ;
) ;
;*************************************************************************;
;***************************************************************;
;Block corners ;
;
(defun block ( / bstring blockit counter tx1 tx2 t1 t2 p31 p41 ;
p37 p38 p39 p40) ;
;
(setq counter 0) ;
(while counter ;
(setq counter (+ counter 1) blockit "N") ;
(if(= counter 1)(progn ;
(setq bstring "Block lower left?")(blkit) ;
(if(= blockit "Y")(progn ;
(setq p2(list(+(car p2)fwidth)(-(cadr p2)fwidth))) ;
(setq p41(list(-(car p7)fwidth)(+(cadr p7)fwidth))) ;
(command "erase" "w" p41 p2 "") ;
(command "insert" "cornerbk" p1 "" "" "") ;
(if(or(= angles "N")(= angles "R")) ;
(setq b1(list(car p1)(+(cadr p1)blocky)))) ;
(gettxt) ;
(setq t1 (list (+ (car p1) blocky)(- (cadr p1) bp))) ;
(setq t2 (list (+ (car t1) aos)(cadr t1))) ;
(command "layer" "s" "dim" "") ;
(if (or (= angles "N")(= angles "R")) ;
(command "insert" "dblkb2" p7 "1" "1" "") ;
(command "insert" "dblkb" p7 "1" "1" "")) ;
(puttxt) ;
)) ;
)) ;
;
(if (= counter 2)(progn ;
(setq bstring "Block upper left?")(blkit) ;
(if(= blockit "Y")(progn ;
(setq p39(list(-(car p9)fwidth)(+(cadr p9)fwidth))) ;
(setq p40(list(+(car p12)fwidth)(-(cadr p12)fwidth))) ;
(command "erase" "w" p39 p40 "") ;
(command "insert" "cornerbk" p9 "1" "-1" "") ;
(gettxt) ;
(setq bd2 (list (car p1)(- (cadr p9)blocky))) ;
(setq t1 (list (+ (car p1) blocky)(+ (cadr bd2) bpu))) ;
(setq t2 (list (+ (car t1) aos)(cadr t1))) ;
(command "layer" "s" "dim" "") ;
(command "insert" "dblk" bd2 "1" "1" "") ;
(puttxt) ;
)) ;
)) ;
;
(if(= counter 3)(progn ;
(setq bstring "Block upper right?")(blkit) ;
(if(= blockit "Y")(progn ;
(setq p37(list(-(car p13)fwidth)(-(cadr p13)fwidth))) ;
(setq p38(list(+(car p10)fwidth)(+(cadr p10)fwidth))) ;
(command "erase" "w" p37 p38 "") ;
(command "insert" "cornerbk" p10 "-1" "-1" "") ;
(gettxt) ;
(setq bd2 (list (car p10)(- (cadr p10)blocky))) ;
(setq t1 (list (- (car p10) blocky)(+ (cadr bd2) bpu)));
(setq t2 (list (+ (car t1) aos)(cadr t1))) ;
(command "layer" "s" "dim" "") ;
(command "insert" "dblkb" bd2 "-1" "-1" "") ;
(puttxt) ;
)) ;
)) ;
;
(if (= counter 4)(progn ;
(setq counter nil) ;
(setq bstring "Block lower right?")(blkit) ;
(if(= blockit "Y")(progn ;
(setq p31(list(car p11)(- (cadr p11) blocky))) ;
(command "erase" "w" p14 p31 "") ;
(command "insert" "cornerbk" p11 "-1" "1" "") ;
(if(or(= angles "N")(= angles "L")) ;
(setq b4(list(car p11)(+(cadr p11)blocky)))) ;
(gettxt) ;
(setq bd4 (list (car p11)(+ (cadr p11)blocky))) ;
(setq t1 (list (- (car p11) blocky)(- (cadr p11) bp))) ;
(if (or (= angles "R")(= angles "B")) ;
(setq t2 (list (+ (car t1) blockx)(cadr t1))) ;
(setq t2 (list (+ (car t1) aos)(cadr t1)))) ;
(command "layer" "s" "dim" "") ;
(if (or (= angles "L")(= angles "N")) ;
(command "insert" "dblk2" bd4 "1" "1" "") ;
(command "insert" "dblk" bd4 "-1" "-1" "")) ;
(puttxt) ;
)) ;
)) ;
) ;
) ;
;***************************************************************;
;******************************************************************************;
;Dimension beam ;
;
(defun dimb ( / ans) ;
(setq ans ;
(strcat reqd " REQ'D " "W" width "x" weight "x" feet "'-" inch (chr 34))) ;
(command "layer" "s" "dim" "") ;
(command "dim" "horiz" b1 b4 p30 ans ^c) ;
(command "layer" "s" "graphics" "") ;
) ;
;******************************************************************************;
;**********************************************;
;Draw borders ;
;
(defun lin () ;
(command "layer" "s" "bom" "") ;
(command "line" "10.5,0.5" "@0,23" "") ;
(command "line" "20,0.5" "@0,23" "") ;
(command "line" "29.5,2" "@0,12.0" "") ;
(command "line" "1,8.2" "@28.5,0" "") ;
(command "line" "1,15.9" "@28.5,0" "") ;
(command "layer" "s" "graphics" "") ;
) ;
;**********************************************;
;************************************************************************;
;Get block dimensions ;
;
(defun gettxt ( / hold1 hold2 pstring pstg check) ;
(setq check "n") ;
(while check ;
(if (= txt1 nil)(setq txt1 " ")) ;
(if (= txt2 nil)(setq txt2 " ")) ;
(setq hold1 txt1 hold2 txt2) ;
(setq pstg (strcat "Enter the block dimensions. ")); ;
(prompt pstg)(terpri) ;
(setq pstring ;
(strcat "Enter INCHES in the horizontal direction. <" txt1 "> ")) ;
(princ pstring)(setq txt1 (getstring)) ;
(if (= txt1 "")(setq txt1 hold1));(terpri) ;
(setq pstring ;
(strcat "Enter INCHES in the vertical direction. <" txt2 "> ")) ;
(princ pstring)(setq txt2 (getstring)) ;
(if (= txt2 "")(setq txt2 hold2))(terpri) ;
(setq check ;
(getstring "Do you want to check these values? [Y]es [N]o <N> "))
(setq check(strcase check)) ;
(if (or (= check "")(= check "N"))(setq check nil)(terpri)) ;
(setq tx1 (strcat txt1 (chr 34)) tx2 (strcat " x " txt2 (chr 34))) ;
) ;
) ;
;************************************************************************;
;****************************************************;
;Put block text in drawing ;
;
(defun puttxt ( / fd1 fd2) ;
(if (> (strlen tx1) 3) ;
(progn ;
(setq fd1 (list (- (car t1) 0.22)(cadr t1))) ;
(setq fd2 (list (+ (car t1) 0.22)(cadr t1))) ;
(command "text" "f" fd1 fd2 "0.1" tx1)) ;
(command "text" "c" t1 "0.1" "0" tx1) ;
) ;
(command "text" t2 "0.1" "0" tx2) ;
(command "layer" "s" "graphics" "") ;
) ;
;****************************************************;
;*********************************************************************;
;Block this corner? ;
;
(defun blkit ( / c ) ;
(terpri)(setq c "b") ;
(while c ;
(princ bstring) ;
(setq blockit ;
(getstring " [Y]es or [N]o <N> "))(terpri) ;
(setq blockit(strcase blockit))(if(= blockit "Y")(setq c nil)) ;
(if(or(= blockit "N")(= blockit ""))(setq c nil)) ;
) ;
) ;
;*********************************************************************;