145
590
446
中流砥柱
;draw chainages;by Dave Corrall 12-Nov-2001;degrees>radians(defun dtr (a) (* pi (/ a 180.0)) );radians>degrees(defun rtd (a) (* 180.0(/ a pi)) )(defun intro () (setq dialog-state 999) (setq dialog_pos (list -1 -1)) (setq dcl_id (load_dialog "intro.dcl")) (princ "\nDialog Box:") (while (< 2 dialog-state) (new_dialog "intro" dcl_id "" dialog_pos) (set_tile "lname" "Chainages on Polyline") (setq x (dimx_tile "DC") y (dimy_tile "DC")) (fill_image 0 0 x y -15) (start_image "DC") (slide_image 0 0 x y "dc_logo") (end_image) (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(quit_routine)") (action_tile "about" "(setq userclick1 t)(open_about)") (setq dialog-state (start_dialog)) (if (= dialog-state 1) (princ); (princ "\nDialog Box: ") ) ) (unload_dialog dcl_id); (princ "\nDialog Box: ")); tell about routine(defun open_about (); (done_dialog) (startapp "notepad.exe" "chains.txt"); (setq userclick1 nil) )(defun quit_routine () (setq qr "Q") )(defun chainage () (setq oreq(getvar"attreq")odia(getvar"attdia")) (setq oldlayer(getvar "clayer")) (setvar "attreq" 1) (setvar "attdia" 0) (setvar "osmode" 1024) (command "ucs" "") (setq r 0.0) (setq seg 0.0) (if (= (tblsearch "LAYER" "CCC_LAYOUT_Chainages") nil) (command "layer" "m" "CCC_LAYOUT_Chainages" "c" "7" "" "") (command "layer" "s" "CCC_LAYOUT_Chainages" "") ) (setq step(getreal "\nSet interval to display Chainage text: ")svprefix "Ch"svsuffix "m"scale "1"svval 0) (setq nam (car (entsel "\nSelect Polyline: ")))(command "_change" nam "" "p" "Layer" "CCC_LAYOUT_Chainages" "color" "Bylayer" "") (setq ent (entget nam))(command "_.insert" "Chainage_Tick" nil)(command "measure" nam "b" "Chainage_Tick" "y" "10" "") (if (not (equal (cdr (assoc 0 ent)) "LWPOLYLINE")) (prompt "\nEntity not a polyline...") (progn(setq nv (cdr(assoc 90 ent)))(setq ent1 (member(assoc 10 ent)ent)) (setq ent2(cdr ent1)) (setq ent2(member(assoc 10 ent2)ent2))(while (/= ent2 nil) (if (/= ent2 nil) (progn; IF THE VERTEX PRECEDES A STRAIGHT LINE (if (equal (cdr (assoc 42 ent1)) 0.0) (progn (setq v1(cdr(assoc 10 ent1)) v2(cdr(assoc 10 ent2)) a(angle v1 v2) d(distance v1 v2) p1(polar v1 a (- step r)) d1(distance p1 v2) ) (if(< seg 1) (progn (setq value(strcat svprefix (rtos svval 2 0) svsuffix )) (command "-insert" "Chainage_Text" v1 scale scale (rtd a) value) ) ) (if(<(+ d r) step) (progn (setq r (+ d r)) ) (progn (setq num(1+(fix(/ d1 step)))) (setq cnt 0) (repeat num (progn (setq pt(polar p1 a (* cnt step))) (setq svval(+ svval step) value(strcat svprefix (rtos svval 2 0) svsuffix )) (command "-insert" "Chainage_Text" pt scale scale (rtd a) value)