|
(1)打开等高线和高程点图层
(defun c:dgx-dxmd()
(command"layer" "on" "dgx" "thaw" "dgx" "")
(command"layer""on" "gcd" "thaw" "gcd" "")
(2)选择需要检查等高线点线矛盾的范围线,并从范围线内找出所有的高程点:
(prompt"选择需要检查等高线点线矛盾的范围线,若还没有范围线,要先绘出。\n")
…
(setq entdgx (ssget "cp" list-p '((0 . "*POLYLINE")(8 . "dgx"))))
…
(3)输入其他检查参数
(setq dis-dgx (getreal"\n输入允许的两等高线间距<6.0>:"))
(setq dgj (getreal "\n输入等高距<0.5>:"))
其中输入允许的两等高线间距的目的是为了提高检查速度,针对每幅图的不一致解性,在程序中设定屏幕输入两条等高线的最大间距。
(4)逐一通过数据获取每一个高程点高程值并搜索出高程点理论上存在的邻近等高线及等高线的高程值:
(write-line"\n正在检查范围线内的等高线是否有点线矛盾……")
(Setq ent-long (sslength ent))
(Setq ent-n 0 n-error 0)
(repeat ent-LONG)
(setq ty (ssname ent ent-n))
(c:getgc-minmax)
…
;获取高程点附近的理论上存在的两根等高线高程 gc-min , gc-max
(defun c:getgc-minmax()
…
)
(5)通过高程点的高程值、及高程点到等高线的距离与等高线的高程值的比较判断是存在点线点线矛盾,并在存在问题的高程点上作出标记,提醒作业者进行修改:
;检查高程点的点线矛盾cha-dxmd
(defun c:cha-dxmd()
…
(if(NOT (and (OR (equal gc-dgx1 gc-min wc-dgx)
(equal gc-dgx1 gc-max wc-dgx))
(OR (equal gc-dgx2 gc-min wc-dgx)
(equal gc-dgx2 gc-max wc-dgx))))(progn
(command"circle" p-point 5)
(setq n-error (1+ n-error))
))
(6)通过窗口输出存在的错误个数,检查完成。
程序运行步骤如下:
1、加载程序,把编辑好的程序dgx-dxmd.lsp拷贝在CAD默认的路径下,启动CASS5.0程序,打开要检查的地形图,在命令行加载程序(laod“dgx-dxmd.lsp”);
2、输入执行命令dgx-dxmd,出现命令行:选择需要检查等高线点线矛盾的范围线,
3、输入两等高线间距:
4、输入等高距:
5、程序开始自动检查,根据图形复杂程度,几分钟后检查完成;
6、输出对话提示框1或对话提示框2,作业员再根据对话提示框和图面上的注记作出修改决定 |
|