CAD技术在水利水电工程中的应用.doc

上传人:jian****018 文档编号:8297807 上传时间:2020-03-28 格式:DOC 页数:17 大小:61.50KB
返回 下载 相关 举报
CAD技术在水利水电工程中的应用.doc_第1页
第1页 / 共17页
CAD技术在水利水电工程中的应用.doc_第2页
第2页 / 共17页
CAD技术在水利水电工程中的应用.doc_第3页
第3页 / 共17页
点击查看更多>>
资源描述
CAD技术在水利水电工程中的应用作者:不祥 上传:不祥 来源:水工网 2006-01-13 00:371 概述 美国Autodesk公司开发的AutoCAD系统自1982年推出以来,以其使用方便、功能强大和系统开放性一直独领风骚。成为各工程领域首选的CAD系统。水利水电工程领域利用AutoCAD平台进行二次开发也取得了一系列成果,如90年代以来陆续开发的水电站地面厂房CAD系统、重力坝CAD系统、隧洞CAD系统、水机油汽水CAD系统、地质柱状图CAD等均取得了较好的应用效果。但水电工程设计的复杂性决定了任何现成的CAD软件都有其局限性,设计过程中许多问题还只能用原始的方法解决。本文通过几个实例对AutoCAD二次开发常用的Lisp语言在水电工程设计中的应用进行了初步探讨,希望能够起到抛砖引玉的作用。VisualLisp语言是AutoCADR14版本以后提供的全新的开发环境,是嵌于AutoCAD内部,将Lisp语言与AutoCAD相结合的产物,是一种智能型语言。利用AutoLisp可以灵活方便地增加AutoCAD新命令,几乎无限地扩展AutoCAD新功能, 2 应用实例2 .1 坐标画线利用已知坐标点画线是设计工作中经常遇到的问题,如河道、堤防等实测断面、水位流量关系曲线、堰面曲线等数据的处理,均可归结为坐标画线问题。对于堰面曲线等有函数方程的曲线可以利用EXCEL按照期望的步长自动生成一系列坐标点。对于测量常用的起点距-高程形式的数据,也可以利用EXCEL转化成坐标点形式。(1)利用脚本文件(.SCR)利用任何文本编辑器如Note、Uedit、Word、Excel等建立纯文本文件EX1.SCR,注意文本文件后缀必须为.SCR,坐标之间用半角逗号分开,文件中不允许出现空格,文件最后一行必须为空回车。文件建立时,可以直接把EXCEL或其他文件中的坐标表利用拷贝、粘贴功能加入脚本文件中。Pline345.66,238.65213.45,124.56128.44,235.66文件保存后,执行AutoCAD中“工具”下的“运行脚本”,在显示的窗口中查找并选中EX1.SCR,屏幕上会立即显示所绘线条。(2)利用LSP程序建立坐标表文件EX2.DAT,后缀任意,可以依次输入多段曲线,中间用曲线名称分开,程序自动绘制多条曲线并可标注坐标表。“曲线1”213.45,124.56128.44,235.66345.66,231.78“曲线2”433.34,567.23434.12,464.12利用AutoCAD中“工具”菜单下的“VisulLisp编辑器”建立DRLINE.LSP文件如下(defunC:drline()(if fn(setq fn (getfiled 坐标点文件名fn 2)(setq fn (getfiled 坐标点文件名 2)(setq f (open fn r)(setq p0 (getpoint n画线起点:)(setq bz 0 mm 1)(command pline)(while (/= bz 1)(setq md (read-line f)(if (/= md nil)(setq zbb (read md)(setq bz 1)(setq dx (car zbb) dy (cadr zbb)(setq p1 (list (+ dx (car p0)(+ dy (cadr p0)(command p1)(setq mm (1+ mm)(command )(close f)文件存盘后,加载运行,相当于新增加了坐标画线命令DRLINE,按提示选中存放坐标表的文件即可实现自动绘制曲线。2 .2 地形切剖面水电工程设计中经常遇到在地形图上切剖面的问题,借助VisualLisp可以实现快速切剖面。(1)初始地形图处理把带z坐标的地形平面图进行变换,变换后z坐标值成为层名,为加快切剖面运行速度,把“LWPOLYLINE”和”SPLINE”均转化为”LINE“线,程序如下(defunc:pltol();LWPOLYLINE转化为LINE (setqn 0)(setqe (ssgetX (list (cons 0 LWPOLYLINE) (setqsh (sslength e) (if e(while ( n sh)(setq e1 (ssname e n)(command pedit e1 d )(setq x (entget e1)(setq ngc (atof (setq la (fld 8 x)(command explode e1)(setq n (+ n 1) ) )(defun fld(num lst)(cdr (assoc num lst)(defunc:spltol ();SPLINE转化为LINE (setqn 0) (setqe (ssget X (list (cons 0 SPLINE) (setqsh (sslength e) (if e(while ( nm 5) (if (= (car (nth nm x) 10) (progn (setq b1 (nth nm x) (setqx1 (cadr b1) (setqy1 (caddr b1) (setqz1 (cadddr b1) (setqglb (list x1 y1) (commandglb) ) ) (setq nm (- nm 1) )(command )(setq n (+ n 1)(2)切剖面输入剖面编号,在平面地形图上指定两点确定剖面剖切线位置,指定剖面图起点,利用AutoCAD的inters函数搜索剖切线与地形图的全部交点,自动计算交点坐标,计算交点与剖面位置起点的距离,按各交点高程和与起点的距离形成剖面图各点坐标,即可用本文实例1坐标画线生成地形图的剖面。(defundxtent1 () (setqn 0 xdzb nil) (setqxds 0) (setqsh (sslength e1)(while ( dxtgcgc 10) (progn (setq pst (fld 10 x) (setq pet (fld 11 x) (setq zb (list gc (list (car pst) (cadr pst) (list (car pet) (cadr pet) ) (setq xdzb (cons zb xdzb) (setq xds (+ xds 1)(setq n (+ n 1)(defunc:dxtsec () (setqpmh (+ pmh 1) (setqpmh (getstring n 剖面号) (setqpt1 (getpoint n 剖切位置起点:) (setqpt2 (getpoint pt1 n 剖切位置终点:) (setqpt3 (getpoint n 剖面图布置:) (setqp01 pt3) (setqe1 (ssget F (list pt1 pt2);利用AutoCAD的目标选择“F”方式选取与剖切线相交的地形线。(dxtent);获取与剖切线相交地形线的坐标 (setqmxgc -100) (setqmngc 10000) (setqm 0 pmp nil) (setqn xds i 0)(while ( i n)(setq crosp (inters pt1 pt2 (nth 1 (nth ixdzb) (nth 2 (nth i xdzb) 1);求剖切线与地形线的交点(if (/= crosp nil)(progn (setqdxtgcgc (nth 0 (nth i xdzb) (setqmxgc (max mxgc dxtgcgc) (setqmngc (min mngc dxtgcgc) (setqdst (distance pt1 crosp);剖切线起点与交点的距离 (setqdst (* (/ blcz dxthtbl) dst) (setqpmp (cons (list m dst dxtgcgc) pmp) (setqm (+ m 1)(setq i (+ i 1)2.3 沿曲线标注在设计中会遇到沿给定曲线进行标注问题,如平面布置图中的开挖线符号沿开挖轮廓的标注,剖面图中岩石符号沿轮廓线标注、点筋标注、沿任意曲线进行汉字标注等。此类问题主要应用AutoCAD的Measure或divide命令来解决。两个命令的主要差别是前者按指定的长度在曲线上标注,后者按给定的分段数等分曲线并在等分点处进行标注。要标注的轮廓曲线最好用pline线,要标注的符号预先做成图块,图块采用单位块,执行measure或divide命令,选取要标注的曲线,指定标注符号,分段长度或分段数即可完成标注,当发现标注的符号太密或太疏时,可以执行erase命令选择P进行删除,比例不合适或符号方向不正确,可以利用特性编辑器,选中所有标注符号,对标注符号的比例和旋转角度进行调整,直到满意为止。对于更高级的应用,可以编制LSP程序,实现符号和文字沿任意曲线标注。2.4 表格生成AutoCAD本身没有表格处理功能,设计图纸中工程量表、钢筋表等涉及到表格生成的问题可以采用以下方法处理:(1)直接把Word或Excel文件中的表格直接粘贴到CAD图形中,修改时只要双击图中的表格即可进入Word或Excel中进行编辑修改,修改完成后退出即可返回到AutoCAD中继续进行设计,该法优点是方便,快捷,易于掌握,可以充分利用Excel的强大计算功能。缺点是表格在AutoCAD中并不是一个普通图元,无法利用CAD功能对表格的字高、颜色和线宽进行编辑。(2)编制LSP程序,依次输入表格标题、表格行数、表格列数、表格行高和列宽以及表格插入点等参数,可以自动生成表格,表格中已经按仿Excel形式填入了文字,可以用字处理软件对表格中文字进行编辑修改。(defunC:mtab()(setqtb1 nil tb2 nil tb3 nil)(setqrows (getint 表格行数)(setqcols (getint 表格列数)(setqrowh (getreal 行高)(setqcolw (getreal 列宽)(setqp1 (getpoint n表格左上角点位置:)(commandpline p1 w 0.5 0.5(setqp2 (list (+ (car p1) (* cols colw) (cadr p1)(setqp4 (list (car p2) (- (cadr p2) (* rows rowh)(setqp3 (list (car p1) (- (cadr p2) (* rows rowh)C )(setqn 1)(while( n rows);绘水平线表格 (command pline (list (car p1) (- (cadrp1) (* n rowh) w 0 0(list (car p2) (- (cadr p2) (* rowh n) )(setq n (+ n 1)(setqn 1)(while( n cols) ;绘垂直表格线(commandpline (list (+ (car p1) (* n colw) (cadr p1) w0 0 (list (+ (car p1) (* n colw) (cadr p3)(setq n (+ n 1)(commandtext m (list (+ (car p1) (* 0.5 cols colw)(+(cadr p1) 5) 3 0 TITLE )(setq n 0)(while( n rows)(setq m 0)(while ( m cols)(cond(= m 26) (setq bzstr (strcat (chr (+ 64 (/ m 26) (chr (+ 65 (- m (* 26(/ m 26) (command textm (list (+ (car p1) (* 0.5 colw) (* m colw);表格内容标注 (- (cadr p1) (* 0.5 rowh) (* nrowh)(getvarTEXTSIZE) 0 (strcat bzstr (itoa (+ n 1)(setq m (+ m 1) (setqn (+ n 1)(3)生成钢筋表钢筋表和材料表生成是施工图设计中比较繁琐的一项工作,很容易出错,此处介绍利用程序进行钢筋表和材料表自动生成的方法。利用造字程序增加I、II级钢筋的直径标注符号和,以后在其它电脑上只要把EUDC.TTE和E见下表,增加3个命令:生成钢筋表、钢筋表添加和自动生成材料表。生成钢筋表时按指定表格位置生成钢筋表表头,根据提示输入钢筋编号(可以不连续)、钢筋等级和直径如20、16,交互绘制钢筋简图和标注长度(标注长度可以输入多种形式如50200表示长度等差变化;30,40,50表示一个编号多个钢筋长度,),钢筋根数,构件组数,程序自动完成表格其余各项(总长度、重量,对于I级钢筋长度中自动计入弯钩长度)的填写,备注栏中自动填入等差变化钢筋的等差值。采集钢筋表中直径、等级和总长信息,经过自动分类汇总,生成钢筋表的材料表。2.6 高程小数位数处理尺寸标注小数位数很容易调整,但诸如高程、表格中数字要调整则很困难,借助LSP程序的调整很方便,只要选取需要调整的数字,根据提示输入需要保留的小数位数,则程序自动对所有选种数字进行修改。(defunentsgc()(setqn 0)(setqsh (sslength e1)(while(= c 0)(= c 9)(progn(if (or (= c +) (= c -)(setq bgc (substr agc 2)(setq bgc agc)(setq cgc (atof bgc)(setq zh (rtos cgc 2 gcws)(if(or (= c +) (= c -)(setqzh (strcat c zh)(setq x (subst (cons 1 zh) (assoc 1 x) x)(entmod x) )(setq n (+ n1)(defunc:yxws() (setqe1 (ssget)(setvar dimzin 0) (setqgcws (getint 保留小数位数:) (ife1 (entsgc) (print n not found) (setqx nil)2.7 应用软件前、后处理由于软件升级滞后,一些常用软件后处理功能很弱或没有,可以利用LSP程序结合AutoCAD增加或简化前后处理功能。下面结合平面渗流分析程序STSE软件对其前、后处理功能的实现进行介绍:(1)前处理STSE为平面渗流有限元程序,单元划分和单元、节点编号工作量最大,可以借助其它通用有限元软件的前处理功能如Ansis、Algor、SAP84等进行初步处理,生成单元、节点编号和节点坐标,而后按照STSE数据文件的格式要求对数据文件进行编辑。(2)后处理后处理成果主要为:单元网格图,浸润线和等势线。单元网格图中有节点和单元编号,不同渗透系数的单元采用不同的颜色,以便根据网格图直观地判断数据文件中几何参数和材料特性的正误;首先分析STSE的输出结果文件的格式,搜索并筛选其中主要参数如单元总数、节点总数和材料总数,把节点坐标和单元信息分别存储,通过对单元循环生成单元网格图。(defunc:seepmesh() (iffn (setqfn (getfiled 渗流结果文件名fn 2) (setqfn (getfiled 渗流结果文件名 2) (setqf (open fn r) (setqmd (read-line f)(while (/= (substr md 25 8) 单元总数)(setq md (read-line f) );定位单元总数 (setqdyzs (atoi (substr md 58 5);读单元总数 (setqmd (read-line f) (setqjdzs (atoi (substr md 58 5);读节点总数 (setqmd (read-line f) (setqclh (atoi (substr md 58 5);读材料总数 (setqm 0)(repeat clh(setq m (+ 1 m)(setq tcm (strcat zclh (itoa m)(command layer m tcm c (itoa m) tcm) );按材料种类生成图层名称(setqm 0 n 0)(repeatdyzs;对单元循环,dycfb中存放单元信息 (setqm (+ m 1) (setqclh (nth 0 (nth m dycfb) (setqjdh1 (nth 1 (nth m dycfb) (setqjdh2 (nth 2 (nth m dycfb) (setqjdh3 (nth 3 (nth m dycfb) (setqjdh4 (nth 4 (nth m dycfb)(command layer s (strcat zclh (itoa clh)(commandpline;绘制单元网格(nth jdh1 jdzbb)(nth jdh2 jdzbb)(nth jdh3 jdzbb) (nthjdh4 jdzbb) c) (setqbzdzb (mapcar + (nth jdh1 jdzbb) (nth jdh2 jdzbb) (nthjdh3 jdzbb) (nth jdh4 jdzbb) (setqbzdzb (list (/ (car bzdzb) 4.0) (/ (cadr bzdzb) 4.0)(command text m bzdzb 0.5 0(itoa m);标注单元号 (setqm 0)(repeatjdzs(setq m (+ m1)(setq bzdzb (nth m jdzbb) (setq bzdzb (list (+ (car bzdzb) 0.0) (+ (cadr bzdzb) 0.0) (command text m bzdzb 0.5 0(itoam) );标注节点号(closef)限于篇幅,等势线和浸润线生成程序不再赘述。同样,对工程设计中遇到的其它软件如:STAB边坡稳定分析、SAP84的输出文件均可进行类似后处理工作。3结语AutoCAD软件应用已经在设计单位普及,VisualLisp的出现对于提高Lisp语言的编程效率和AutoCAD应用水平具有重要意义。本文涉及的几个实例已经在实际工作中发挥很大作用,充分说明在工程设计当中结合本专业要求开发一些简单实用的Lisp小程序可以有效减轻设计人员的劳动强度,使AutoCAD不仅仅是绘图工具,而真正成为设计人员得心应手的高效设计平台。作者简介耿振云 男 高级工程师 中水北方勘测设计研究有限责任公司 天津 30022231.1.1脚本文件简介脚本文件类似于Dos操作系统中的批处理文件,它可以将不同的AutoCAD命令组合起来,并按确定的顺序自动连续地执行。脚本文件是文本文件,扩展名为“.SCR”,用户可使用任一文本编辑器来创建脚本文件。因为脚本文件可使一些命令序列自动执行,所以常用来产生、编辑或观看图形,如幻灯放映、初始的图形设置等。但脚本文件不能使用对话框或菜单,当从脚本文件中发出打开对话框命令时,AutoCAD运行该命令的命令栏含义而不是打开对话框。如第29章中所述,用户可以通过命令行的开关设置,使AutoCAD在启动时自动调用脚本。此外,用户也可以在AutoCAD中运行脚本,其调用方式为:菜单:【Tools(工具)】【RunScript(运行脚本)】命令行:script(或别名scr)注意AutoCAD的“undo”命令将每个脚本当作一个组,可以用单个“undo”命令放弃一组脚本的操作。说明“script”命令可透明地使用。31.1.2实例1使用脚本文件绘制并显示图形Step1创建脚本文件“exam_draw.scr”(1)使用Windows附件中的“记事本”程序创建一个新文件。(2)在该文件中添加如下内容,如图31-1所示。注意其中调用“exam_vIEw.scr”文件的路径应根据实际情况而定。(3)以“exam_draw.scr”为名保存该文件。Step2创建脚本文件“exam_view.scr”(1)使用Windows附件中的“记事本”程序创建一个新文件。(2)在该文件中添加如下内容(3)以“exam_view.scr”为名保存该文件。Step3运行脚本文件进入AutoCAD系统,调用“script”命令弹出“SelectScriptFile(选择脚本文件)”对话框,定位并打开步骤一中创建的“exam_draw.scr”文件。该文件的运行结果是在屏幕中间绘制一条直线和一个圆,而且直线和圆绕中心不停地转动。实例说明1.从实例中我们可以看到,脚本文件的内容实际上就是在AutoCAD命令提示行中所用的命令的一个有序集合。脚本文件中的每一行对应着AutoCAD命令提示行中的一个命令、一个选项的响应。2.脚本文件中可以包含注释,任何以“;”开始的行都被当作注释而在运行时被忽略。此外,脚本文件中所有包含空格的长文件名都必须被括在双引号中。3.需要提醒读者注意的是,脚本文件中的空格和空行在运行时相当于按Enter键,因此,为了能正确地运行脚本文件,需严格控制文件中空格和空行的使用,避免多余的空格和空行。4.脚本文件在运行时不允许输入新的信息,所有的信息都必须包含在文件内。5.运行中的脚本文件在按Esc键时,或在调用另一个SCRIPT命令时被终止。如果脚本文件被取消,或脚本文件遇到错误,并且造成该文件的执行被悬挂时,可使用RESUME命令继续运行。RESUME命令将跳过导致出错的命令,并继续执行剩余的脚本文件。6.DELAY命令用于设置时间延迟。由于脚本文件是自动运行的命令序列,因此,一些操作发生得非常快。如果用户需要清楚地观看操作过程,则需要使用DELAY进行必要的停顿。DELAY命令的通常格式为:DELAYTime其中,Time为延迟时间,取值范围为032767,以毫秒为单位。7.RSCRIPT命令用于无限制地重复执行脚本文件,直到用户强制取消为止。当用户要连续地执行同一个脚本文件时,该功能非常有用。可以将系列命令写在文本文件中,用运行脚本的方法自动绘制图形,这就相当于编制了一个程序,例如,画出已知坐标点的连线,把坐标数据都放在一个txt文本文件里(记事本格式):文件的开头是画直线的命令_line,随后每行是一对坐标数据,x和y之间是逗号隔开.然后把这个文本文件另存为.scr格式(autocad)脚本文件.在CAD画图界面的命令行里输入script命令,出现一个对话框,然后打开前面保存的那个脚本文件,就开始运行这个画图程序了,运行完那条线就画出来了.就这么简单. 另存为的对话框里,文件名用XXXXX.scr,保存类型用所有文件,编码用ANSI. 运行脚本仅写入命令和参数,其它提示性的语句不写入,每个命令、每组参数都占一行,且其间不能有空格。遇有鼠标选择对象时,仍需鼠标选择。运用脚本,可以快速绘制参数组较大(点坐标较多)的图形,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!