 - (defun c:aa()
- (setq cmdmode (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (command "layer" "m" "0_RDCAD" "c" "2" "" "")
- (command "layer" "m" "1_RDCAD" "c" "3" "" "")
- (command "layer" "m" "2_RDCAD" "c" "1" "" "")
- (command "layer" "m" "3_RDCAD" "c" "4" "" "")
- (command "layer" "m" "4_RDCAD" "c" "7" "" "")
- (dcl_ganlu)
- (prin1)
- )
- (defun dcl_ganlu()
- (if (> (setq dcl_id (load_dialog "gan.dcl")) 0) (progn
- (if (new_dialog "NextSetting" dcl_id) (progn
- (def_ganlu)
- (action_tile "bilihuizhi" "(setq ddtype 1)")
- (action_tile "dengjuhuizhi" "(setq ddtype 2)")
- (action_tile "xinjian" "(setq ddtype 3)")
- (action_tile "yuanyou" "(setq ddtype 4)")
- (action_tile "chaichu" "(setq ddtype 5)")
- (action_tile "accept" "(ok_bili)(done_dialog 1)")
- (setq dd (start_dialog))
- )
- (princ "\n无法显示对话框!")
- )
- (unload_dialog dcl_id)
- )
- (princ "\n无法加载对话框!")
- )
- (if (= dd 1) (draw_ganlu))
- )
- (defun def_ganlu ()
- (set_tile "bili_draw" (if bl_draw (rtos bl_draw 2) "4000"))
- )
- (defun ok_bili ()
- (setq bl_draw (atof (get_tile "bili_draw")))
- )
- (defun draw_ganlu ()
- (setq ls 2.25 ;设定直线上面的字偏离直线的距离为ls
- zg 2.5 ;设定字高zg
- r 1.5) ;电杆半径
- (setvar "TEXTSTYLE" "Standard") ;切换到默认的字体
- (graphscr) ;切换到图形窗口
- (setq oce (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (setq bl bl_draw
- ;(setq bl (getint "\n请输入比例<推荐4000>,1:")
- p1 (getpoint "\n杆路的起点:")
- )
- (setq osm (getvar "osmode")) ;储存对象捕捉的系统变量
- (setvar "osmode" 0) ;关闭对象捕捉
- (while (setq a1 (getangle p1 "\n杆路的方向<右键退出/Esc退出>:"))
- (while (setq len (getdist "\n请输入杆距<米>:"))
- (if (= ddtype 1) (SETQ d (/ (* len 1000) bl)))
- (if (= ddtype 2) (SETQ d 15))
- ;(setq d (SETQ d 15))
- ; (setq d (/ (* len 1000) bl))
- (setq p2 (polar p1 a1 d) ;计算p2的坐标
- p11 (polar P1 a1 r)
- p22 (polar p1 a1 (- d r))
- p3 (list (/ (+ (car p1) (car p2)) 2.0) (/ (+ (cadr p1) (cadr p2)) 2.0)) ;计算p1p2的中点p3的坐标
- )
- (cond
- ((= ddtype 3)
- (command "layer" "s" "1_RDCAD" "")
- (command "pline" p11 "w" 0.5 0.5 p22 "")
- (command ".circle" p2 r)
- )
- ((= ddtype 4)
- (command "layer" "s" "0_RDCAD" "")
- (command "pline" p11 "w" 0.25 0.25 p22 "")
- (command ".circle" p2 r)
- )
- ((= ddtype 5)
- (command "layer" "s" "3_RDCAD" "")
- (command "pline" p11 "w" 0.2 0.2 p22 "")
- (command ".circle" p2 r)
- )
- )
- ; (command ".line" p11 p22 "")
- ; (command ".circle" p2 r)
- (if (< (* pi 0.5) a1 (* pi 1.5))
- (setq a2 (angle p2 p1))
- (setq a2 a1)
- )
- (setq p5 (polar p3 (+ a2 (/ pi 2)) ls)) ;计算直线上面的文字位置
- (command "layer" "s" "0" "")
- (command ".text" "m" p5 zg (/ (* a2 180) pi) (rtos len 2 1)) ;以中央对齐的方式写直线上面的字:米
- (setq p1 p2)
- )
- )
- (setvar "osmode" osm)
- (setvar "cmdecho" oce)
- (princ)
- )
|