(defun C:win (/ dcl_id what_next ) (setq dcl_id (load_dialog "win.dcl")) (new_dialog "win" dcl_id) (if(null newcount)(progn(setq mrail 1.5 brail 3.25 framethick 2 horep 2 verep 2 sillthick 1 sash 2 dvb 0.875 newcount 1))) ;;;;;;;;;;;;;;;;;;;;;;;;;;; TILE INITIALIZATION ;;;;;;;;;;;;;;;;;;;;;;;;;;;; (action_tile "casement" "(setq wtype \"Casement\")(set_tile \"hung\" \"0\")(mode_tile \"mrail\" 1)(mode_tile \"brail\" 1))") (action_tile "hung" "(setq wtype \"Hung\")(set_tile \"casement\" \"0\")(mode_tile \"mrail\" 0)(mode_tile \"brail\" 0))") (action_tile "mrail" "(setq mrail (atof (get_tile \"mrail\")))") (action_tile "brail" "(setq brail (atof (get_tile \"brail\")))") (action_tile "framethick" "(setq framethick (atof (get_tile \"framethick\")))") (action_tile "sash" "(setq sash (atof (get_tile \"sash\")))") (action_tile "sillthick" "(setq sillthick (atof (get_tile \"sillthick\")))") (if (or (equal div "Yes") (null div)) (progn (mode_tile "horep" 0) (mode_tile "verep" 0) (mode_tile "dvb" 0) (set_tile "nodiv" "0"))) (if (equal div "No") (progn (mode_tile "horep" 1) (mode_tile "verep" 1) (mode_tile "dvb" 1) (set_tile "div" "0"))) (action_tile "div" "(progn (setq div \"Yes\")(SET_TILE \"nodiv\"\"0\")(mode_tile \"horep\" 0)(mode_tile \"verep\" 0)(mode_tile \"dvb\" 0))") (action_tile "nodiv" "(progn(setq div \"No\")(SET_TILE \"div\" \"0\")(mode_tile \"horep\" 1)(mode_tile \"verep\" 1)(mode_tile \"dvb\" 1))") (action_tile "horep" "(setq horep (atoi (get_tile \"horep\")))") (action_tile "verep" "(setq verep (atoi (get_tile \"verep\")))") (action_tile "dvb" "(setq dvb (atof (get_tile \"dvb\")))") (action_tile "accept" "(done_dialog 1)") (action_tile "pickpoints" "(done_dialog 4)") (if (equal div "Yes")(progn (set_tile "div" "1")(set_tile "nodiv" "0"))) (if (equal div "No")(progn (set_tile "nodiv" "1")(set_tile "div" "0"))) (if (not (null mrail))(set_tile "mrail" (rtos mrail))) (if (not (null brail))(set_tile "brail" (rtos brail))) (if (not (null framethick))(set_tile "framethick" (rtos framethick))) (if (not (null sash))(set_tile "sash" (rtos sash))) (if (not (null sillthick))(set_tile "sillthick" (rtos sillthick))) (if (not (null horep))(set_tile "horep" (itoa horep))) (if (not (null verep))(set_tile "verep" (itoa verep))) (if (not (null dvb))(set_tile "dvb" (rtos dvb))) (if (equal wtype "Casement") (progn (set_tile "casement" "1") (set_tile "hung" "0") (mode_tile "mrail" 1) (mode_tile "brail" 1)) (progn (set_tile "hung" "1") (set_tile "casement" "0") (mode_tile "mrail" 0) (mode_tile "brail" 0)) ) ;; END OF IF ;;;;;;;;;;;;;;;;;;;;;;;; END OF INITIALIZATIONS ;;;;;;;;;;;;;;;;;;;;;;;; (setq what_next (start_dialog)) (cond ((= what_next 4)(getpts)) ((= what_next 0)(prompt "\nuser cancelled dialog")) ) (unload_dialog dcl_id) ) ;end win ;;;;;;;;;;;;;;;;;;;;;;; GETPTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun getpts () ;define getpts (setq pt1 (getpoint "Pick two corners of a window in elevation:")) (setq pt2 (getpoint "Pick second corner:")) (draw) ) ;;;;;;;;;;;;;;;;;;;;;;; DRAW ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun draw (/ pt1x pt1y pt2x pt2y MOl MOr MOt MOb MOBL MOTL MOTR MOBR FBL FTL FTR FBR sillleft sillright Sb Sl St Sr SBL STL STR SBR curLAYER MRt MRb MRTL MRTR MRBL MRBR picky pickleft pickright breakleft breakright ) ; defines draw (setq pt1x (car pt1)) (setq pt1y (cadr pt1)) (setq pt2x (car pt2)) (setq pt2y (cadr pt2)) (if (< pt1x pt2x) (setq MOl pt1x MOr pt2x) (setq MOl pt2x MOr pt1x)) (if (> pt1y pt2y) (setq MOt pt1y MOb pt2y) (setq MOt pt2y MOb pt1y)) (setq MOBL (list MOl MOb)) (setq MOTL (list MOl MOt)) (setq MOTR (list MOr MOt)) (setq MOBR (list MOr MOb)) (setq origAPERTURE (getvar "aperture")) (setq origPICKBOX (getvar "pickbox")) (setq origOSMODE (getvar "osmode")) (setq curLAYER (getvar "clayer")) (setvar "osmode" 0) (setvar "aperture" 1) (setvar "pickbox" 0) (setvar "clayer" "e-bold") (command "line" MOBL MOTL MOTR "") (setvar "clayer" "e-med") (command "line" MOTR MOBR MOBL "") ;;===================================END OF MASONRY OPENING (setq Fb (+ MOb sillthick)) (setq Fl (+ MOl framethick)) (setq Ft (- MOt framethick)) (setq Fr (- MOr framethick)) (setq FBL (list Fl Fb)) (setq FTL (list Fl Ft)) (setq FTR (list Fr Ft)) (setq FBR (list Fr Fb)) (command "line" FBL FTL FTR "") (setvar "clayer" "e-fine") (command "line" FTR FBR "") (setq sillleft (list MOl Fb)) (setq sillright (list MOr Fb)) (command "line" sillleft sillright "") ;========================================= END OF FRAME AND SILL (cond ((equal wtype "Casement") ; IF CASEMENT.. (progn (if (equal div "Yes") ; IF DIVIDED... (setvar "clayer" "e-xfine")) ; CHANGE LAYER, OTHERWISE.. (setq Sb (+ Fb sash)) (setq Sl (+ Fl sash)) (setq St (- Ft sash)) (setq Sr (- Fr sash)) (setq SBL (list Sl Sb)) (setq STL (list Sl St)) (setq STR (list Sr St)) (setq SBR (list Sr Sb)) (command "line" SBL STL STR "") ; BEGIN DRAWING SASH (setvar "clayer" "e-xfine") (command "line" STR SBR SBL "") ; FINISH SASH (cond ((equal div "Yes") ; IF DIVIDED... (progn (setq Lb (+ Sb (/ dvb 2))) (setq Ll (+ Sl (/ dvb 2))) (setq Lt (+ Lb (/ (- (- St Sb) (* dvb verep)) verep))) (setq Lr (+ Ll (/ (- (- Sr Sl) (* dvb horep)) horep))) (setq LBL (list Ll Lb)) (setq LTL (list Ll Lt)) (setq LTR (list Lr Lt)) (setq LBR (list Lr Lb)) (setvar "clayer" "e-fine") (setvar "aperture" 1) (setvar "pickbox" 0) (setvar "osmode" 0) (command "line" LBL LTL LTR "") ;BEGIN DRAWING LITE (setvar "clayer" "e-xfine") (command "line" LTR LBR LBL "") ;FINISH LITE (setq verarray (+ (- Lt Lb) dvb)) (setq horarray (+ (- Lr Ll) dvb)) (if (and (not (= horep 1))(not (= verep 1))) (command "array" "w" LBL LTR "r" "" verep horep verarray horarray )) (if (and (not (= horep 1))(= verep 1)) (command "array" "w" LBL LTR "r" "" verep horep horarray )) (if (and (= horep 1)(not (= verep 1))) (command "array" "w" LBL LTR "r" "" verep horep verarray )) (if (and (= horep 1)(= verep 1)) (quit)) ; ARRAY THE LITE ) ; END DIVIDED LITE PROGN ) ;END OF FIRST CONDITONAL ) ; END OF COND ) ; END OF CASEMENT PROGN ) ; END OF CASEMENT COND ;==================================================== END OF CASEMENT ((equal wtype "Hung") ; IF HUNG.. (progn (if (equal div "Yes") ;IF DIVIDE, CHANGE LAYER.. (setvar "clayer" "e-xfine") ) (setq Sb (+ Fb brail)) ; OTHERWISE... (setq Sl (+ Fl sash)) (setq St (- Ft sash)) (setq Sr (- Fr sash)) (setq SBL (list Sl Sb)) (setq STL (list Sl St)) (setq STR (list Sr St)) (setq SBR (list Sr Sb)) (command "line" SBL STL STR "") ; BEGIN DRAWING SASHES (setvar "clayer" "e-xfine") (command "line" STR SBR SBL "") (setq MRt (/ (+ mrail St Sb) 2)) (setq MRb (- MRt mrail)) (setq MRTL (list Sl MRt)) (setq MRTR (list Sr MRt)) (command "line" MRTL MRTR "") ; DRAW MIDRAIL TOP (setvar "clayer" "e-med") (setq MRBL (list Fl MRb)) (setq MRBR (list Fr MRb)) (command "line" MRBL MRBR "") ;DRAW MIDRAIL BOTTOM (setq breakleft (list Sl MRb)) (setq breakright (list Sr MRb)) (setq picky (/ (+ Sb St) 2)) (setq pickleft (list Sl picky)) (setq pickright (list Sr picky)) (command "break" pickleft "f" MRTL breakleft) (command "break" pickright "f" MRTR breakright) (if (equal div "Yes") ; IF DIVIDED... (progn (setq Lb (+ Sb (/ dvb 2))) (setq Ll (+ Sl (/ dvb 2))) (setq Lt (+ Lb (/ (- (- MRb Sb) (* dvb verep)) verep))) (setq Lr (+ Ll (/ (- (- Sr Sl) (* dvb horep)) horep))) (setq LBL (list Ll Lb)) (setq LTL (list Ll Lt)) (setq LTR (list Lr Lt)) (setq LBR (list Lr Lb)) (setvar "clayer" "e-fine") (setvar "aperture" 1) (setvar "pickbox" 0) (setvar "osmode" 0) (command "line" LBL LTL LTR "") ; BEGIN DRAWING LITE (setvar "clayer" "e-xfine") (command "line" LTR LBR LBL "") ; FINISH DRAWING LITE (setq verarray (+ (- Lt Lb) dvb)) (setq horarray (+ (- Lr Ll) dvb)) ;; the array conditionals (if (and (not (= horep 1))(not (= verep 1))) (command "array" "w" LBL LTR "r" "" verep horep verarray horarray )) (if (and (not (= horep 1))(= verep 1)) (command "array" "w" LBL LTR "r" "" verep horep horarray )) (if (and (= horep 1)(not (= verep 1))) (command "array" "w" LBL LTR "r" "" verep horep verarray )) (if (and (= horep 1)(= verep 1)) (quit)) ; ARRAY LITE (command "copy" "w" LBL MRBR "" SBL MRTL) ; COPY LOWER LITES ) ; END OF DIVIDED PROGN ) ; END OF DIVIDED IF ) ; END OF HUNG COND ) ; END OF HUNG TYPE ) ; END OF TYPE TEST ;============================================= RESET SETTINGS AND EXIT (setvar "osmode" origOSMODE) (setvar "clayer" curLAYER) (setvar "aperture" origAPERTURE) (setvar "pickbox" origPICKBOX) (princ) ) ; END OF DRAW