;;;Autolabel Manholes along a gravity sewer alignment (plan). ; Author: ; Henry C. Francis ; 425 N. Ashe St. ; Southern Pines, NC 28387 ; http://www.pinehurst.net/~pfrancis ; e-mail hfrancis@pinehurst.net ; All rights reserved. (DEFUN c:mhpl () (if gvpno nil (load "gvpno")) (gvpno) (SETQ thts (ustr 1 "\n\"Leroy Template Size\" or Standard(=87.5) " (IF thts thts "Standard" ) ;_ end of IF nil ) ;_ end of ustr ) ;_ end of SETQ (SETQ mh_strt (uint 1 "" "Manhole Index " (if mh_strt mh_strt 1) mh_cnt mh_strt) (SETQ add_sta (ureal 1 "" "Alignment Beginning Station " (if add_sta add_sta 1000)) (SETQ rim_mode (ukword 1 "Pick Key-in" "\nPick or Key-in Rim Elevations? " (IF rim_mode rim_mode "Key-in"))) (WHILE (SETQ align_pline (NENTSELP "\nSelect Alignment Polyline: ")) (PRINC (STRCAT "\nPolyline on layer " (CDR (ASSOC 8 (ENTGET (CAR align_pline))))" selected. ")) (SETQ v_twst (GETVAR "viewtwist")) (if dimscl nil (load"dimscl")) (dimscl) (COND ((OR (EQ (SUBSTR thts 1 1) "S") (EQ (SUBSTR thts 1 1) "s")) (SETQ txcolr "2" lncolr "1" ) ;_ end of SETQ ) ((<= (ATOI thts) 80) (SETQ txcolr "1" lncolr "1" ) ;_ end of SETQ ) ((<= (ATOI thts) 125) (SETQ txcolr "2" lncolr "1" ) ;_ end of SETQ ) ((< (ATOI thts) 200) (SETQ txcolr "3" lncolr "2" ) ;_ end of SETQ ) ((>= (ATOI thts) 200) (SETQ txcolr "5" lncolr "2" ) ;_ end of SETQ ) (thts (SETQ txcolr "2" lncolr "1" thts "125" ) ;_ end of SETQ ) ) ;_ end of COND (IF (OR (EQ (SUBSTR thts 1 1) "S") (EQ (SUBSTR thts 1 1) "s")) (SETQ text_ht (* 0.0875 dimsc)) (SETQ text_ht (* (* (ATOI thts) 0.001) dimsc)) ) ;_ end of IF (SETVAR "TEXTSIZE" text_ht) (SETQ v_next (ENTGET (CAR align_pline)) lu_pre (GETVAR "luprec") sel_pt (CADR align_pline) v_current v_next cur_vpt (CDR (ASSOC 10 v_current)) text_ss nil ; text_ht (* 0.125 dimsc) mjrg "C" ltyp "-" colr "2" modf "NOTE" ) ;_ end of SETQ (SETVAR "luprec" 2) (c:svlayr) (c:mklayr) (IF (EQ (CDR (ASSOC 0 v_next)) "VERTEX") (PROGN (WHILE (EQ (CDR (ASSOC 0 v_next)) "VERTEX") (PROGN (SETQ v_next (ENTGET (ENTNEXT (CDAR v_next))))) ) ;_ end of WHILE (SETQ pline_ent (ENTGET (CDR (ASSOC -2 v_next))) v_next (ENTGET (ENTNEXT (CDAR pline_ent))) begin_v (CDR (ASSOC 10 v_next)) end_v begin_v ; mh_cnt (1+ mh_cnt) cur_sta 0 count (FIX -1) ) ;_ end of SETQ (WHILE (NOT (EQ (CDAR v_next) (CDAR v_current))) (SETQ end_v (CDR (ASSOC 10 v_next)) mh_cnt (1+ mh_cnt) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) ) ;_ end of SETQ (PRINC "\n") (PRINC (RTOS cur_sta 2 2)) ) ;_ end of WHILE (SETQ mh_cnt 1) (SETQ last_test (ENTGET (ENTNEXT (ENTNEXT (CDAR v_next))))) (IF (NOT (EQ (CDR (ASSOC 0 LAST_TEST)) "SEQEND")) (IF (> (DISTANCE sel_pt cur_vpt) ;;;cur_vpt WAS end_v (DISTANCE sel_pt (CDR (ASSOC 10 (ENTGET(ENTNEXT(CDAR v_current)))))) ;last_test ) ;_ end of < (SETQ end_v (CDR (ASSOC 10 v_next)) mh_cnt (1+ mh_cnt) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) end_v (CDR (ASSOC 10 v_next)) ; mh_cnt (1+ mh_cnt) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) ) ;_ end of SETQ (SETQ end_v (CDR (ASSOC 10 v_next)) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v ; mh_cnt (1+ mh_cnt) v_next (ENTGET (ENTNEXT (CDAR v_next))) ) ;_ end of SETQ ) ;_ end of IF (IF (> (DISTANCE sel_pt cur_vpt) ;;;cur_vpt WAS end_v (DISTANCE sel_pt (CDR (ASSOC 10 (ENTGET(ENTNEXT(CDAR v_current)))))) ;last_test ) ;_ end of < (SETQ end_v (CDR (ASSOC 10 v_next)) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) end_v (CDR (ASSOC 10 v_next)) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) mh_cnt (1+ mh_cnt) ) ;_ end of SETQ (SETQ end_v (CDR (ASSOC 10 v_next)) cur_sta (+ cur_sta (DISTANCE begin_v end_v)) begin_v end_v v_next (ENTGET (ENTNEXT (CDAR v_next))) ; mh_cnt (1+ mh_cnt) ) ;_ end of SETQ ) ;_ end of IF ) ;_ end of IF ; (IF (NOT rim_mode) ; ) (SETQ cur_mh_no (ustr 1 "Enter Manhole Number: " (itoa mh_cnt) ; (IF cur_mh_no ; (ITOA (1+ (ATOI cur_mh_no))) ; (ITOA 1) ; ) ;_ end of IF nil ) ;_ end of ustr ss_line "" ; (ustr 1 ; "Enter Sewer Line ID: " ; (IF ss_line ; ss_line ; "S-1" ; ) ;_ end of IF ; T ; ) ;_ end of ustr ) ;_ end of SETQ (IF (EQ rim_mode "Pick") (progn (if mhel nil (load"mhelsub")) (mhel) ) ; (SETQ rim_pick (upoint 1 ; "" ; "Pick Rim Elevation: " ; nil ; (IF rim_pick rim_pick) ; ) ; rim_elev (/(cadr rim_pick)10.00) ; ) (SETQ rim_elev (ureal 1 "" "Enter Rim Elevation: " (IF rim_elev rim_elev 0 ) ;_ end of IF ) ;_ end of ureal rim_txt (STRCAT "RIM ELEV. " (RTOS rim_elev 2 1) "0'") ) ) (SETQ cur_sta (+ cur_sta add_sta)) (SETQ mh_txt_1 (STRCAT "%%224 MANHOLE #" cur_mh_no) mh_txt_2 (STRCAT "STA. " (ITOA (FIX (/ cur_sta 100))) "+" (IF (< (- cur_sta (* (FIX (/ cur_sta 100)) 100)) 10) "0" "" ) ;_ end of IF (RTOS (- cur_sta (* (FIX (/ cur_sta 100)) 100)) 2 2) (IF (=(- cur_sta (* (FIX (/ cur_sta 100)) 100)) 0) ".00" (IF (= (strlen (rtos (- cur_sta (/ (FIX (* cur_sta 10)) 10)) 2 2)) 1) "0" "" ) ) " " ss_line ) ;_ end of STRCAT mh_txt_3 rim_txt text_pt1 end_v text_pt2 (POLAR end_v (- 0 (+ v_twst (/ PI 2))) (* text_ht 1.5) ) ;_ end of POLAR text_pt3 (POLAR text_pt2 (- 0 (+ v_twst (/ PI 2))) (* text_ht 2.0) ) ;_ end of POLAR text_ptj (POLAR (POLAR end_v (- 0 (+ v_twst (/ PI 2))) (* text_ht 2) ) ;_ end of POLAR (- 0 (+ v_twst PI)) (/ text_ht 2.000) ) ;_ end of POLAR ) ;_ end of SETQ (SETQ text_ent1 (LIST (CONS 0 "TEXT") (CONS 1 mh_txt_1) (CONS 10 text_pt1) (CONS 40 text_ht) (CONS 50 (- 0 v_twst)) ) ;_ end of LIST ) ;_ end of SETQ (SETQ text_ent2 (LIST (CONS 0 "TEXT") (CONS 1 mh_txt_2) (CONS 10 text_pt2) (CONS 40 text_ht) (CONS 50 (- 0 v_twst)) ) ;_ end of LIST ) ;_ end of SETQ (SETQ text_ent3 (LIST (CONS 0 "TEXT") (CONS 1 mh_txt_3) (CONS 10 text_pt3) (CONS 40 text_ht) (CONS 50 (- 0 v_twst)) ) ;_ end of LIST ) ;_ end of SETQ (ENTMAKE text_ent1) (SETQ text_ss (SSADD (ENTLAST))) (ENTMAKE text_ent2) (SETQ text_ss (SSADD (ENTLAST) text_ss)) (ENTMAKE text_ent3) (SETQ text_ss (SSADD (ENTLAST) text_ss)) (SETQ max_tl (MAX (DISTANCE (CAR(TEXTBOX text_ent1))(CADR(TEXTBOX text_ent1))) (DISTANCE (CAR(TEXTBOX text_ent2))(CADR(TEXTBOX text_ent2))) (DISTANCE (CAR(TEXTBOX text_ent3))(CADR(TEXTBOX text_ent3))) ) ) (PRINC "\nPick Note Location. ") ;_ end of PRINC (COMMAND "._move" text_ss "" text_ptj pause (SETQ new_text_pt (CADR (GRREAD T 4 1))) ) ;_ end of COMMAND (c:rslayr) (SETQ colr "1") (c:mklayr) (setq new_text_rt (polar new_text_pt (- 0 v_twst)(+ max_tl(* 1.25 text_ht)))) (if (>(distance new_text_pt end_v)(distance new_text_rt end_v)) (setq tmp_new_pt new_text_pt new_text_pt new_text_rt new_text_rt tmp_new_pt v_twst (+ v_twst PI)) ) (SETQ ldr_pt2 (POLAR new_text_pt (- 0 (+ v_twst PI)) (* text_ht 2) ) ;_ end of polar ldr_ang (ANGLE end_v ldr_pt2) ldr_ang_d (* (/ ldr_ang PI) 180.00) ldr_pt (POLAR end_v ldr_ang (* dimsc 0.0625)) fin_bpt (POLAR new_text_pt (- 0 (+ v_twst (/ PI 2))) (* 2.0 text_ht) ) ;_ end of polar fin_tpt (POLAR fin_bpt (- 0 (- v_twst (/ PI 2))) (* 4.0 text_ht) ) ;_ end of polar ) ;_ end of setq (COMMAND "._pline" ldr_pt ldr_pt2 new_text_rt "") ; (COMMAND "._line" fin_bpt fin_tpt "") (COMMAND "._insert" "ldraro" ldr_pt dimsc dimsc ldr_ang_d) ;_ end of COMMAND ) ;_ end of PROGN (PRINC "\nNot a POLYLINE. ") ) ;_ end of IF (c:rslayr) (SETVAR "luprec" lu_pre) (PRINC) ) ) ;_ end of DEFUN ;|«ViLL© FORMAT OPTIONS...» (72 2 20 2 T "end of " 60 9 2 0 0 T nil nil T) ***Don't add text below the comment!***|;