- UID
- 397712
- 积分
- 68
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2006-2-20
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
(defun c:BG (/ odscal scal pt dx dy ptb dxb dyb signx signy
ptt txt pt0 pt1 pt2 pt3 pt4 pt5 loopmk
)
(YL_begin) ;;初始化处理
(princ "\n按比例绘制对高度敏感的标高符号程序!")
(setq odscal (getvar "USERR1")) ;;取系统变量"USERR1"的值为默认比例因子
(if (equal odscal 0.0 0.1) ;;如果系统变量的值为0.0(容许误差为0.1)
(progn ;;则设置
(setq odscal 100.0) ;;首次运行,设默认比例因子为100
(setvar "USERR1" odscal) ;;系统变量userr1存储默认比例因子
)
)
(if (not (tblsearch "layer" "Fline")) ;;判断是否存在Fline层,无则创建。Fline指细实线
(command "layer" "m" "Fline" "c" "6" "" "l" "continuous" "" "")
)
(if (not (tblsearch "layer" "Text")) ;;判断是否存在Text层,无则创建
(command "layer" "m" "Text" "c" "3" "" "l" "continuous" "" "")
)
(if (not (tblsearch "style" "sty_YL")) ;;判断是否存在sty_YL字体,无则创建
(command"style" "sty_YL" "romans,hztxt" 0 0.7 0 "n" "n" "n")
)
(setq scal odscal) ;;比例取默认值
(setq loopmk T)
(while loopmk
(setvar "osmode" 16383) ;;设置对象捕捉方式为全部
(initget "S") ;;定义关键字
(setq pt (getpoint "\n S_比例/<输入标注点>:"))
(setvar "osmode" 0) ;;设置对象捕捉式无
(cond
((= pt nil) (setq loopmk nil))
((= pt "S") ;;比例因子
(setq scal (getreal (strcat "\n 请输入比例因子<" (rtos odscal) ">:")))
(if (= scal nil) (setq scal odscal)) ;;如果用户直接回车,则使用默认的比例值
(setq odscal scal)
)
(T
(setq dx (car pt))
(setq dy (cadr pt))
(setvar "osmode" 16383) ;;设置对象捕捉方式为全部
(setq ptb (getpoint pt "\n请指定点以确定标高符号所在的位置和方向:"))
(setvar "osmode" 0) ;;设置对象捕捉方式无
(if (= ptb nil) exit) ;;如果没有给出点则退出程序
(setq dxb (car ptb))
(setq dyb (cadr ptb))
(if (< dxb dx) (setq signx -1) (setq signx 1))
(if (< dyb dy) (setq signy -1) (setq signy 1))
(if (< dxb dx)
(setq ptt (list (+ dxb (* 0.85 scal signx)) (+ dy (* 0.2 scal signy))))
(setq ptt (list (+ dxb (* 0.04 scal signx)) (+ dy (* 0.2 scal signy))))
)
(if (< dyb dy)
(setq ptt (polar ptt (* pi 1.5) (* 0.25 scal)))
)
(setq pt0 (list (+ dxb (* 0 scal signx)) (+ dy (* 0 scal signy))))
(setq pt1 (list (+ dxb (* 0.16 scal signx)) (+ dy (* 0.16 scal signy))))
(setq pt2 (list (- dxb (* 0.16 scal signx)) (+ dy (* 0.16 scal signy))))
(setq pt3 (list (+ dxb (* 0.85 scal signx)) (+ dy (* 0.16 scal signy))))
(setq pt4 (list (- dxb (* 0.16 scal signx)) (+ dy (* 0 scal signy))))
(setq pt5 (list (+ dxb (* 0.16 scal signx)) (+ dy (* 0 scal signy))))
(command "layer" "s" "Fline" "")
(command "pline" pt1 "w" "0" "0" pt0 pt2 pt3 "")
(command "line" pt4 pt5 "")
(setq txt (getstring (strcat "\n请输入标高值<" (rtos (/ dy 100) 2 3) ">:")))
(cond ((wcmatch txt "") (setq txt (rtos (/ dy 100) 2 3))))
(command "layer" "s" "Text" "")
(setvar "textstyle" "sty_YL")
(command "text" ptt (* 0.25 scal) 0 txt )
)
)
)
(setvar "USERR1" scal) ;;系统变量userr1存储默认比例因子
(YL_end) ;;恢复程序开始前的设置
(princ "\n绘制完成!")
(princ)
) |
|