注子程序。
b.图例程序是利用幻灯菜单给图例名称赋值,然后运用字符串处理和表处理技术求得图例名称的列表,从而连续逐项插入被选中的图例。
c.图例幻灯菜单分两个大区,上面是图例区,下面是幻灯菜单的操作区,可见幻灯菜单能做成复杂高效的菜单。
7程序清单
a.abg.lsp程序及注解;
(defunC:BGBZ()
(setqwhil1t)
(whilewhil1)
(command″vslide″″acd1″)
(if(setqpp(getpoint″请点取标高种类″))
(progn
(redraw)
(setqh(getvar″viewsize″)
pcen(getvar″viewsize″)
pmax(getvar″vsmax″)
pmim(getvar″vsmin″)虚拟屏幕左下角)
(setqw(*(/(-(carpmax)(carpmin))
(-(cadrpmax)(cadrpmin)))h))
(setqpp0(list(-(carpcen)(/w3))
(-(cadrpcen(
/h3))))
(setqpp1(list(+(carpcen)(/w3))
(+(cadrpcen)(/h3))))
(setqdx(/w6)dy(/h6))
(setqlx(carpp)ly(cadrpp))
(setqplx(carpp0)ply(cadrpp0))
(setplx(-lxplx)ly(-lyply))
(setpx(fix(1+(/(-pxpx0)dx))))
(setqy(fix(1+(/(-pypy0)dy))))
(setqnn(strcat(itoax)(itoay)))
(cond((=nn14)(abg1))
((=nn13)(abg2))
((=nn12)(abg3))
((=nn11)(abg4))
主程序BGBZ开始
设whil1值为真
当whil1为真时执行下列程序
显示幻灯在幻灯菜单中选点
重画恢复原画面
绘图区高
绘图区中心点
虚拟屏幕右上角
共获取系统变量
求绘图区宽
有效区左下角,(有效区宽和高占绘图宽和高的三分之二)
有效区右上角
每格宽和高
PP点的X和Y坐标
左下角点坐标
PP点和PP0点X和Y坐标差;
X方向格序号
Y方向格序号
将X和Y连接
多项选择条件函数
nn=13时运行abe2子函数
((=nn24)(abg5))
((=nn23)(abg6))
((=nn22)(abg7))
((=nn21)(abg8))
((=nn34)(abg9))
((=nn33)(abg10))
((=nn32)(abg11))
((=nn31)(abg12))
((=nn44)(abg13))
((=nn43)(abg14))
((=nn42)(abg15))
((=nn41)(setqwhil1nil))
);cond)
)));progn;if;while;defun
(defunabg1()
(while(setqp1(getpoint″输入起点″))
(initget1)
(setqs1(getreal″标高值:″))
(setqp2(polarp108))
(setqp3(polarp2(/pi4)3.2))
(setqp4(list(+(carp2)0)(+(cadrp2)2.9)))
(if(=s10)(setps2″%%p0.00″)(setqs2(rtoss122)))
(command″line″p1″@14<0″″″″line″p3p2
″@3.2<135″″@12.8<0″″″
″text″p42.80s2)));……
b.atl.lsp程序及注解
为11-44格规定功能,即每一格对应一个子函数
主程序BGBZ结束
定义abg1子函数
标高符号起点
不接受空值
标高值
计算各点位置
标高为0时加“±”
画标高符号
写标高值command
while;defun-abg1a
bg2~abg15子函数省略
(defunC:TL()
(setqatllistniltlsld″atla″tlsldn″1″whil1t)
(setqtlpath″/cad/atl″)
(promtp″\n给排水图例程序 —BERIS″)
(whilewhil1
(command″vslide″(strcattlpath″atl″tlsldn))
(initget1)
(setqpp(getpoint″\n请连续点取图例,并点取〈确定〉″))
(setqh(getvar″viewsize″))
(setqpcen(getvar″viewctr″))
图例绘制主程序
赋初始值
图例图块路径
提示
当whil1为真执行下面程序调出幻灯(幻灯名由三个变量连接而成,图2为第一页)
不接受空值
以下内容同标高标注程序
(setqpmax(ge 上一页 [1] [2] [3] 下一页
Tags:
|