工程测量点之记自动绘图程序设计.docx
24页工程测量点之记自动绘图程序设计 摘要:为了使一线工程测量技术人员从繁重的人工绘制测量点之记作业过程中减少劳动强度,提高工作效率和技术质量,本文件介绍了在AutoCAD开发环境下根据地形图和控制点数据文件自动裁剪和绘制测量点之记的功能实现方法关键词:AutoCAD;AutoLisp;地形图;点之记;工程测量一、引言在工程测量中,为了满足施工图测量要求,首先要根据工程规模大小以及设计要求布设相应等级的平面及高程控制点,该控制点一般需要保存至工程施工结束而工程项目从前期勘测设计阶段到施工阶段有一定的周期,少则几个月,多则几年不等而控制点的保护和绘制点位略图(简称点之记)显然是必要的,这为以后施工单位进场施工寻找测量控制点大大提供了方便长期以来,测量单位绘制点之记的方法是比较费时费力的传统作业方法一般是从外业开始,测量员实地选埋好控制点后,作业人员开始根据相关地形地物现场绘制点位略图,然后用皮尺量取控制点至相邻地物的距离并记录在工作草图上,回到室内后再用CAD绘图软件一点一线进行手工绘制点之记而现在也有不少测量单位利用CASS软件直接将控制点展绘在地形图上,套上点之记内图框,然后将每个控制点及其相关地形图裁剪出来,再复制到点之记图框里形成控制点点之记成果图。
这样的作业方法做起来既费时又费力,图形裁剪时也很容易漏剪和多剪,使地形底图残缺不全如果只有几个控制点,还不觉得怎么累,如果有几十个,甚至上百个控制点,那么工作量显然是巨大的本文介绍的点之记绘图程序是在AutoCAD环境下用AutoLisp语言开发的程序文件名为“DZJ.LSP”,它可以最大限度地节省重复裁剪和移动复制的工作量,程序运行时直接根据控制点数据文件和地形底图自动绘制控制点符号并将地形底图裁剪到点之记图框内,无需人工干预便可生成一幅幅工程测量桩位点之记成果图二、程序介绍1、数据准备(1)首先需要准备好地形图,一般为本工程范围内实测或修测好的最终版地形成果图为了与控制点有鲜明的对比度,我们可以将地形图所有图形要素设置为同一个图层,命名为“DXT”,并将该图层和对象颜色值设为8(深灰色)2)控制点数据为CSV逗号文件类型,可以用Excel表或记事本打开进行编辑,首行不能有空行或其它非法字符,其数据格式如下(不同数据用逗号分隔):项目编号,JA18-144项目名称,远东路(新建东路~南奉公路)道路整治工程草图绘制者,章健制图者,李君检查者,濮先峰日期,2018-4-4点名,桩质,X,Y,H,控制点类型代码G1,六角钉,-34631.826,444.439,4.475,5G2,十字钉,-34961.064,567.955,4.649,5G3,六角钉,-35244.742,611.616,4.845,5BM1,钢钉,-34631.128,464.515,4.476,6BM2,六角钉,-35264.611,567.125,4.661,6其中控制点类型代码为:1、天文点2、三角点3、导线点4、图根点5、GPS控制点6、水准点。
3)准备好空白点之记图框模版,本文所用空白点之记图框模版和由程序自动绘制的点之记成果如下:空白点之记图框由程序自动绘制的点之记该点之记图框模版为A4幅面,每页可以裁剪出4个控制点程序的主要功能:第一是将控制点数据文件里的内容自动填写到项目编号、项目名称、点名、桩别、草图绘制者、制图者及日期的相应位置上,第二是根据控制点的数量计算出总页数后填写正确的页码,第三是根据控制点类型代码将不同的控制点符号展绘到点之记内图框的中心位置上,并根据控制点坐标数据将地形图裁剪至点之记内图框中完成自动绘制点之记的目的,完全省掉了人工繁锁的裁剪、移动和复制工作一般不同的测量单位所使用的点之记图框样式不同,每个单位有自已特色的点之记样式,可以根据本文后面介绍的程序源代码及注释找到点之记图框信息19个定位点坐标进行修改,以满足自已单位的点之记成果样式,注意所有图框信息定位点坐标为相对坐标,均是相对于空白图框模版左下角的点之记图框模版定义好后,可以作为符号块保存到AutoCAD安装目录支持搜索路径下,方便以后程序自动调用2、程序操作首先在AutoCAD中打开准备好的地形图,用“APPLOAD”加载“DZJ.LSP”程序,成功加载后在CAD命令行中执行“DZJ”命令。
命令行窗口会显示以下内容:命令1、ZDZJ:展绘控制点;命令2、MDZJ:生成点之记;命令3、VIDZJ:显示地形图;命令4、REDZJ:重构点之记,更新点之记地形图;命令5、PX:点之记攀线第一步执行ZDZJ命令展绘控制点程序会要求用户打开控制点数据文件(扩展名为.CSV),然后程序会将点之记图框模版中的控制点内图框(矩形框)和控制点符号展绘到地形图上,用户可以浏览控制点附近的地形图,也可以适当地将地形图上的注记信息(如道路、河流、桥位、村庄及单位名称等)移至矩形框内这样绘制出来的点之记信息将会更完整也更方便使用者快速寻找和定位到控制点第二步执行MDZJ命令生成点之记执行该命令时会提示用户在屏幕上拾取任一点,此时地形图会消失,程序会在刚才用户拾取点的位置开始按顺序从左向右绘制点之记,绘完一页后连续绘制下一页,直至将全部控制点绘完为止第三步执行PX命令俗称攀线,该命令是标注控制点到相邻地物点的距离,在地物点许可的情况下,一般每个控制点标注3个距离如控制点附近没有明显地物点,则可不标注距离,但最好说明一下无法攀线该程序中还有两个命令VIDZJ和REDZJ,一般情况下用不到除非在绘好的点之记中发现明显的地形图表示错误。
此时可以用VIDZJ将原地形图显示出来进行修正,原地形图修改好后再执行REDZJ重构点之记此时原地形图会消失,而点之记中裁剪出来的地形会自动更新为修正后的地形图3、程序代码及注释下面提供的是源程序全部AutoLisp代码,仅供学习和研究使用,不作商业用途///DZJ测量点之记绘图程序(说明:此行为注释行)(defunC:dzj()(setvar"TILEMODE"1)(command"layer""on""*""t""*""u""*""")(command"layer""u""*""")(command"layer""lo""DXT,KZD,PLOTK,TK,PX""")(setqtement(ssget"X"))(iftement(command"erase"tement""));删除所选图层所有实体(command"layer""m""0""u""*""")(command"purge""a""*""n")(command"zoom""e")(command"zoom""0.7x")(princ"\n欢迎使用测量点之记绘图程序,请合理运用以下5个命令")(princ"\n命令1、ZDZJ:展绘控制点;命令2、MDZJ:生成点之记;")(princ"\n命令3、VIDZJ:显示地形图;命令4、REDZJ:重构点之记,更新点之记地形图;命令5、PX:点之记攀线。
")(princ"\n首先请准备好KZD.CSV和地形底图文件!")(setvar"cmdecho"0)(setvar"blipmode"0)(princ));enddzj;///PX点之记攀线(一般每个控制点标注3个距离)(defunC:px()(princ"\n点之记攀线:一般要求每个控制点标注3个距离,请选择适当的地物进行标注!")(if(/=(getvar"DIMSTYLE")"CLDIM")(cldim));设置测量标注样式(command"layer""m""PX""")(setvar"OSMODE"111)(command"dimaligned")(princ));endpx;///ZDZJ展绘控制点及点之记内图框(defunC:zdzj();(/f1scalclyosmdhx1y1z1pt0kinsert)(vl-load-com)(setqscal(/(getvar"userr1")1000.0))(setqosm(getvar"osmode"))(setqcly(getvar"clayer"))(setvar"osmode"0)(setqtement(ssget"X"'((8."KZD"))))(iftement(command"erase"tement""))(setqtement(ssget"X"'((8."DZJTK"))))(iftement(command"erase"tement""))(setup1)(zkzdtk"tempkzd")(command"zoom""e")(setvar"osmode"osm)(setvar"clayer"cly)(princ"OK!")(princ));endzdzj;///MDZJ插入点之记图框,套入地形生成点之记(defunC:mdzj()(setqosm(getvar"osmode"));获取当前捕捉模式(setqcly(getvar"clayer"));获取当前图层(setvar"osmode"111)(setqdzjpt(getpoint"\n请拾取点之记位置:"))(setvar"osmode"0);关闭捕捉模式(setqx(nth0dzjpt))(setqy(nth1dzjpt))(setqtement(ssget"X"'((8."tempkzd"))))(iftement(command"erase"tement""));删除控制点图层所有实体(setqtement(ssget"X"'((8."KZD"))))(iftement(command"erase"tement""));删除控制点图层所有实体(setqtement(ssget"X"'((8."DZJTK"))))(iftement(command"erase"tement""));删除点之记图框图层所有实体(setqtement(ssget"X"'((8."TK"))))(iftement(command"erase"tement""));删除控制点图层所有实体(setqtement(ssget"X"'((8."PLOTK"))))(iftement(command"erase"tement""));删除控制点图层所有实体(command"purge""a""*""n");清除图形垃圾(setqinsbasept(list000))(setvar"insbase"insbasept)(setqalldxt(ssget"X"'((8."DXT"))))(command"block""dzjdxt"insbaseptalldxt"")(readkzd)(command"zoom"dzjpt(list(+x(*300pagezs))(+y297)))(command"style""htj_s""romans,htj_s"00.80"n""n")(command"layer""m""KZD""c""1""""")(setqcount0)(setqpagecount0)(repeatpagezs(setqpt00(listxy));点之记图框起始定位点(setqpt01(list(+x66.5)(+y259.2)));项目编号定位点01(setqpt02(list(+x155.5)(+y259.2)));项目名称定位点02(setqpt03。





