技术中心
 
 

CAD技术在水利水电工程中的应用(2)

   日期:2006-02-01     来源:中国测控网     作者:管理员    

2 .4 表格生成

AutoCAD本身没有表格处理功能,设计图纸中工程量表、钢筋表等涉及到表格生成的问题可以采用以下方法处理:

(1)直接把Word或Excel文件中的表格直接粘贴到CAD图形中,修改时只要双击图中的表格即可进入Word或Excel中进行编辑修改,修改完成后退出即可返回到AutoCAD中继续进行设计,该法优点是方便,快捷,易于掌握,可以充分利用Excel的强大计算功能。缺点是表格在AutoCAD中并不是一个普通图元,无法利用CAD功能对表格的字高、颜色和线宽进行编辑。

(2)编制LSP程序,依次输入表格标题、表格行数、表格列数、表格行高和列宽以及表格插入点等参数,可以自动生成表格,表格中已经按仿Excel形式填入了文字,可以用字处理软件对表格中文字进行编辑修改。


(defun C:mtab()

(setq tb1 nil tb2 nil tb3 nil)

(setq rows (getint "表格行数"))

(setq cols (getint "表格列数"))

(setq rowh (getreal "行高"))

(setq colw (getreal "列宽"))

(setq p1 (getpoint "n表格左上角点位置:"))

(command "pline" p1 "w" "0.5" "0.5"

(setq p2 (list (+ (car p1) (* cols colw)) (cadr p1)))

(setq p4 (list (car p2) (- (cadr p2) (* rows rowh))))

(setq p3 (list (car p1) (- (cadr p2) (* rows rowh))))

"C" )

(setq n 1)

(while (< n rows);绘水平线表格

(command "pline" (list (car p1) (- (cadr p1) (* n rowh))) "w" "0" "0"

(list (car p2) (- (cadr p2) (* rowh n))) "")

(setq n (+ n 1))

)

(setq n 1)

(while (< n cols) ;绘垂直表格线

(command "pline" (list (+ (car p1) (* n colw)) (cadr p1)) "w" "0" "0" (list (+ (car p1) (* n colw)) (cadr p3))

"")

(setq n (+ n 1))

)

(command "text" "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 (chr (+ 65 m))))

((>= m 26) (setq bzstr (strcat (chr (+ 64 (/ m 26))) (chr (+ 65 (- m (* 26 (/ m 26))))))))

)

(command "text" "m" (list (+ (car p1) (* 0.5 colw) (* m colw));表格内容标注

(- (cadr p1) (* 0.5 rowh) (* n rowh)))

(getvar"TEXTSIZE") "0" (strcat bzstr (itoa (+ n 1))))

(setq m (+ m 1))

)

(setq n (+ n 1))

))


(3)生成钢筋表

钢筋表和材料表生成是施工图设计中比较繁琐的一项工作,很容易出错,此处介绍利用程序进行钢筋表和材料表自动生成的方法。利用造字程序增加I、II级钢筋的直径标注符号和,以后在其它电脑上只要把EUDC.TTE和E

见下表,增加3个命令:生成钢筋表、钢筋表添加和自动生成材料表。

[img]20062116373998011.gif[/img]

生成钢筋表时按指定表格位置生成钢筋表表头,根据提示输入钢筋编号(可以不连续)、钢筋等级和直径如20、16,交互绘制钢筋简图和标注长度(标注长度可以输入多种形式如50~200表示长度等差变化;30,40,50表示一个编号多个钢筋长度,),钢筋根数,构件组数,程序自动完成表格其余各项(总长度、重量,对于I级钢筋长度中自动计入弯钩长度)的填写,备注栏中自动填入等差变化钢筋的等差值。

采集钢筋表中直径、等级和总长信息,经过自动分类汇总,生成钢筋表的材料表。

2 .6 高程小数位数处理

尺寸标注小数位数很容易调整,但诸如高程、表格中数字要调整则很困难,借助LSP程序的调整很方便,只要选取需要调整的数字,根据提示输入需要保留的小数位数,则程序自动对所有选种数字进行修改。


(defun entsgc()

(setq n 0)

(setq sh (sslength e1))

(while (< n sh) (setq x (entget (ssname e1 n)))

(if (= (fld 0 x) "TEXT")

(progn

(setq agc (fld 1 x))

(setq c (substr agc 1 1))

(if (or (= c "+") (= c "-") (and (>= 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 "-"))

(setq zh (strcat c zh)))

(setq x (subst (cons 1 zh) (assoc 1 x) x))

(entmod x)

)

))

))

(setq n (+ n 1)))

)

(defun c:yxws()

(setq e1 (ssget))

(setvar "dimzin" 0)

(setq gcws (getint "保留小数位数:"))

(if e1 (entsgc) (print "n not found"))

(setq x nil)

)


2 .7 应用软件前、后处理

由于软件升级滞后,一些常用软件后处理功能很弱或没有,可以利用LSP程序结合AutoCAD增加或简化前后处理功能。下面结合平面渗流分析程序STSE软件对其前、后处理功能的实现进行介绍:

(1)前处理

STSE为平面渗流有限元程序,单元划分和单元、节点编号工作量最大,可以借助其它通用有限元软件的前处理功能如Ansis、Algor、SAP84等进行初步处理,生成单元、节点编号和节点坐标,而后按照STSE数据文件的格式要求对数据文件进行编辑。

(2)后处理

后处理成果主要为:单元网格图,浸润线和等势线。单元网格图中有节点和单元编号,不同渗透系数的单元采用不同的颜色,以便根据网格图直观地判断数据文件中几何参数和材料特性的正误;

首先分析STSE的输出结果文件的格式,搜索并筛选其中主要参数如单元总数、节点总数和材料总数,把节点坐标和单元信息分别存储,通过对单元循环生成单元网格图。


(defun c:seepmesh()

(if fn

(setq fn (getfiled "渗流结果文件名" fn "" 2))

(setq fn (getfiled "渗流结果文件名" "" "" 2)))

(setq f (open fn "r"))

(setq md (read-line f))

(while (/= (substr md 25 8) "单元总数")

(setq md (read-line f))

);定位单元总数

(setq dyzs (atoi (substr md 58 5)));读单元总数

(setq md (read-line f))

(setq jdzs (atoi (substr md 58 5)));读节点总数

(setq md (read-line f))

(setq clh (atoi (substr md 58 5)));读材料总数

(setq m 0)

(repeat clh

(setq m (+ 1 m))

(setq tcm (strcat "zclh" (itoa m)))

(command "layer" "m" tcm "c" (itoa m) tcm "")

);按材料种类生成图层名称

(setq m 0 n 0)

(repeat dyzs;对单元循环,dycfb中存放单元信息

(setq m (+ m 1))

(setq clh (nth 0 (nth m dycfb)))

(setq jdh1 (nth 1 (nth m dycfb)))

(setq jdh2 (nth 2 (nth m dycfb)))

(setq jdh3 (nth 3 (nth m dycfb)))

(setq jdh4 (nth 4 (nth m dycfb)))

(command "layer" "s" (strcat "zclh" (itoa clh)) "")

(command "pline";绘制单元网格

(nth jdh1 jdzbb)

(nth jdh2 jdzbb)

(nth jdh3 jdzbb)

(nth jdh4 jdzbb) "c")

(setq bzdzb (mapcar '+ (nth jdh1 jdzbb) (nth jdh2 jdzbb)

(nth jdh3 jdzbb) (nth jdh4 jdzbb)))

(setq bzdzb (list (/ (car bzdzb) 4.0) (/ (cadr bzdzb) 4.0)))

(command "text" "m" bzdzb "0.5" "0" (itoa m))

;标注单元号

(setq m 0)

(repeat jdzs

(setq m (+ m 1))

(setq bzdzb (nth m jdzbb))

(setq bzdzb (list (+ (car bzdzb) 0.0) (+ (cadr bzdzb) 0.0)))

(command "text" "m" bzdzb "0.5" "0" (itoa m))

));标注节点号

(close f)

)

限于篇幅,等势线和浸润线生成程序不再赘述。同样,对工程设计中遇到的其它软件如:STAB边坡稳定分析、SAP84的输出文件均可进行类似后处理工作。

3 结语

AutoCAD软件应用已经在设计单位普及,VisualLisp

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢