给排水设计给排水CAD软件开发实例
灯菜单左右代码,左面为1,右面为2;c代表幻灯菜单中上下序号,分别为1~8。
本软件设计的核心思想是通过点的定位计算出的所对应的图例图块名,然后插入图例,多重选择由表处理语句来完成。本文中第7节的b部分给出atl.lsp中与幻灯菜单有关的程序清单及注解。后面还有几个子函数,由于篇幅有限本文不详细列出程序,只做简单介绍:
lastsld子函数对幻灯名字符串进行运算,求出上一页幻灯名;
nextsld子函数对幻灯名字符串进行运算,求出下一页幻灯名;
setnil子函数对各变量(必须包括whill)赋空值,并退出程序:
setok子函数对被选择的图例表进行处理,并逐项连续插入图例。
6小结
a.标高标注程序是利用幻灯菜单调出相应的标高标注子程序。
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子函数
《给排水设计给排水CAD软件开发实例(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/167521.html
本软件设计的核心思想是通过点的定位计算出的所对应的图例图块名,然后插入图例,多重选择由表处理语句来完成。本文中第7节的b部分给出atl.lsp中与幻灯菜单有关的程序清单及注解。后面还有几个子函数,由于篇幅有限本文不详细列出程序,只做简单介绍:
lastsld子函数对幻灯名字符串进行运算,求出上一页幻灯名;
nextsld子函数对幻灯名字符串进行运算,求出下一页幻灯名;
setnil子函数对各变量(必须包括whill)赋空值,并退出程序:
setok子函数对被选择的图例表进行处理,并逐项连续插入图例。
6小结
a.标高标注程序是利用幻灯菜单调出相应的标高标注子程序。
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子函数
《给排水设计给排水CAD软件开发实例(第2页)》