提高桩基设计效率_第1页
提高桩基设计效率_第2页
提高桩基设计效率_第3页
提高桩基设计效率_第4页
提高桩基设计效率_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 提高桩基设计效率的方法提高桩基设计效率的方法-AutoCAD的活学活用 作者:翁 伟 2000.8在工程设计中桩基础的应用是相当广泛和普遍的。桩基设计中工程师必须做到的一点是:上部结构的重心要与桩基础的形心对齐,做到两心合一。在桩位布置时一般两心不能做到完全合一,但必须依建筑类型使两心偏差控制在规范允许的范围内(论述其重要性不是本文的目的)。在布桩过程中求群桩形心、求水平荷载下群桩边缘基桩的最大负荷,是一个即简单又繁琐的过程。如遇两心不合、基桩超负、桩位需调整,则要取得满意的结果少则一天多则二至三天。然而其技术含量也就是加、减、乘、除,连小学生都会,但一不小心极易出错。本人对此深有感触。为了

2、减少脑细胞不必要的损伤,提高工作效率及准确性,本人用AutoCAD自带的Lisp编程语言,编写了一个利用CAD桩位布置图直接绘出群桩形心的小程序,省事方便,大大提高了工作效率。以下作个简单介绍。一) 程序目的:1.利用CAD桩位布置图求算并绘出群桩形心位置。 2.求出相对于群桩形心的SXi2 及 SYi2 ,为求水平荷载下群桩边缘基桩的最大负荷提供参数。二) 适用范围:1.基于AutoCAD R14平台绘制的桩位面布置图。2.基于AutoCAD 2000平台绘制的桩位平面布置图。三) 使用条件:1.CAD桩位布置图中的桩位属性,必须是一个图块(block)。桩位图块可由设计人员任意命名,然后拷

3、贝布置。2.程序直接提取CAD图纸尺寸进行数值计算,因此图纸比例必须是1:1。 3.在AutoCAD程序的Fonds目录下必须要有HZTXT字库。四) 程序功能:1.自动计算群桩形心、SXi2 、SYi2 、桩位总数、最小桩距及所处位置。2.可任意选取桩位,自动区分所选图素,求出所选桩位的群桩形心。并对所选桩位进行标识。3.自动判别重复拷贝的桩位,使桩数计算不会重复。4.自动提示桩距很近的错桩。5.程序应用中还有许多参数记忆功能,无需重复输入,方便使用。五) 使用方法:1.将随盘附带的两个文件目录”Lisp For AutoCAD R14”或” Lisp For ACAD2000”中的两个文件

4、分别拷贝至AutoCAD R14或ACAD2000原程序中Support子目录下,然后启动CAD程序并打开桩位布置图。在CAD中,本程序的调用命令为PX。 2.按程序提示用键盘输入(也可鼠标输入) 各类参数。 3.要求输入工程座标原点时最好选用建筑重心座标,这样得到的群桩形心座标既为桩心与建筑重心的偏心距。Pilex.lsp的源程序如以下(本文之外另附源程序);-; 群桩桩心计算程序(V2.0) ; ; 作者 : 翁伟 2000.8 ; ; BP : 1268846785 ; ;-;发生错误复原程序 (defun px_err (s) (if (/= s "Function canc

5、elled"); If an error (such as CTRL-C) occurs (princ (strcat "nError: " s); while this command is active. ) (setvar "cmdecho" ocmd) (setvar "blipmode" oblp) (setvar "osmode" ovar) (setq *error* px:olderr) (princ) );群桩桩心计算程序 (terpri)(defun c:px (/ oxy0 BN0

6、FN n1 dtxt dx d0 d i j k x y a b ocmd ovar oblp ad bd xd yd); (princ "* 群桩桩心计算程序(V2.0): 作者 - 翁伟 2000.10 *") (setq px:olderr *error* *error* px_err) (setq ovar (getvar "osmode") (setq ocmd (getvar "cmdecho") (setq oblp (getvar "blipmode") (setvar "cmdecho&

7、quot; 0) (terpri) (command "style" "symbol" "symbol" 0 0.9 0 "n" "n" );设置汉字字型 (command "style" "standard" "hztxt" 0 0.9 0 "n" "n" ) ;屏幕选择参数-1:导入工程坐标原点并具反复记忆功能- (if (= oxy nil) (setq oxy (list 0.000 0.

8、000 0.000) (setq oxy0 (getpoint (strcat "n 1. 请输入工程坐标原点(" (rtos (car oxy) 2 3) "," (rtos (cadr oxy) 2 3) "):" ) );getpoint);setq (if (/= oxy0 nil) (progn (setq oxy oxy0)(princ oxy) (terpri);建立捏名块,绘工程坐标原点- (setvar "blipmode" 0) (setvar "osmode" 0) (if

9、 (= (getvar "dimscale") 0) (setq dtxt 1)(setq dtxt (getvar "dimscale") (setq dx (* (getvar "dimtxt") 100000) (setq dtxt 250) (entmake (list '(0 . "BLOCK")'(2 . "*U")'(70 . 1)(cons 10 oxy) (entmake (list '(0 . "CIRCLE") (CONS

10、 10 oxy) (CONS 40 (* 0.15 dtxt) ) ) (entmake (list '(0 . "CIRCLE") (CONS 10 oxy) (CONS 40 (* 0.05 dtxt) ) ) (entmake (list '(0 . "LINE") (CONS 10 (list (+ (car oxy) (* dtxt -0.35) (cadr oxy) 0.0) (CONS 11 (list (+ (car oxy) (* dtxt 0.35) (cadr oxy) 0.0) ) ) (entmake (list

11、 '(0 . "LINE") (CONS 10 (list (car oxy) (+ (cadr oxy) (* dtxt -0.35) 0.0) (CONS 11 (list (car oxy) (+ (cadr oxy) (* dtxt 0.35) 0.0) ) );屏幕选择参数-2:请输入代表桩的块名并具反复记忆功能- (setq n1 1) (while (< n1 2) (progn (if (= BN nil) (setq BN "") (while (or (and (= BN0 "") (= BN &qu

12、ot;") (= BN0 nil)(setq BN0 (getstring (strcat "n 2. 请输入代表桩的块名(" BN "):" );while (if (= BN0 "") (setq BN0 nil)(progn (setq BN BN0) (setq BN0 nil);progn);if;屏幕选择参数-3: 键入所选桩位标识付:- (setq FN (getstring (strcat "n 3. 键入所选桩位标识符( ):" );屏幕选择参数-4:输入桩位并具桩数判断功能- (set

13、q n1 1) (while (and (< n1 3) (> n1 0)(progn (princ"n 4. 请选择桩位:") (while (not (setq s1 (ssget) (princ "n正在清理桩位选择集,请稍等.");清理选择集 n1 s1 / i (计算最小桩距 dx d d0/ i j)(清理重叠桩);清理1 (setq n1 (sslength s1) i 0) (repeat n1 (if (= (STRCASE BN) (cdr (assoc '2 (entget (ssname s1 i) (prog

14、n(setq x (cadr (assoc '10 (entget (ssname s1 i)(setq y (caddr (assoc '10 (entget (ssname s1 i)(entmake (list '(0 . "TEXT") (CONS 1 FN) (CONS 10 (list (+ x (* dtxt 1.2) (+ y (* dtxt 1.2) 0.0) (CONS 40 (* dtxt 0.8) (CONS 62 6) ) )(setq i (+ i 1) (ssdel (ssname s1 i) s1) );if );re

15、peat ;清理2 (princ "n正在清理重叠桩,请稍等.") (setq n1 (sslength s1) i 0 j 1 k nil) (repeat (- n1 1) (repeat (- (- n1 1) i) (setq a (- (- n1 1) i) b (- (- (- n1 1) i) j) (setq d (distance (cdr (assoc '10 (entget (ssname s1 a)(cdr (assoc '10 (entget (ssname s1 b) ;distance ) ;setq (cond(> d

16、(* 2.5 (getvar "dimtxt") ;cond-1计算最小桩距 (progn (princ "n清理1.") (if (< d dx) (progn (setq dx d) (setq ad a) (setq bd b) );progn-2 ) ) ;progn-1 ) ;cond-1(and (<= d (* 3 (getvar "dimtxt") (> d 0) ) cond-2计算过小桩位 (progn (princ "n清理2.") (setq x (/ (+ (cadr (

17、assoc '10 (entget (ssname s1 a) (cadr (assoc '10 (entget (ssname s1 b) 2) );setq (setq y (/ (+ (caddr (assoc '10 (entget (ssname s1 a) (caddr (assoc '10 (entget (ssname s1 b) ) 2) (entmake (list '(0 . "CIRCLE") (CONS 10 (list x y 0.0) (CONS 40 (* dtxt 1.5) ) ) (entmake

18、(list '(0 . "TEXT") (CONS 1 "此处桩位相距过近") (CONS 10 (list (+ x (* dtxt -3.2) (+ y (* dtxt 2) 0.0) (CONS 40 (* dtxt 0.8) ) ) );progn-2 );cond-2(= d 0) ;cond-3清理重叠桩 (progn (princ "n清理3.") (setq k (- (- n1 1) i) ) ) );cond (setq j (+ j 1) ); repeat (if (/= k nil) (progn (

19、command "erase" (ssname s1 k ) "") (ssdel (ssname s1 k) s1) ) (setq k nil) (setq i (+ i 1) j 1) ); repeat (setq n1 (sslength s1) (if (and (< n1 3) (> n1 0) (princ" * 所选桩数不足3根 *") )(terpri) );progn);while (if (= n1 0) (princ"n * 未找到相应块名所对应的桩 *")(terpri) )

20、;progn );while;计算桩心 xa ya / i x y (princ "n正在计算群桩形心,请稍等.") (setq i 0. x 0. y 0. n1 (sslength s1) (repeat n1 (setq x (+ x (cadr (assoc '10 (entget (ssname s1 i) (setq y (+ y (caddr (assoc '10 (entget (ssname s1 i) (setq i (+ i 1) ) (setq xa (/ x n1) (setq ya (/ y n1) ;计算Exi2 , Eyi2

21、(setq n1 (sslength s1) i 0 Exi2 0 Eyi2 0) (repeat n1 (setq xd (- xa (car (cdr (assoc '10 (entget (ssname s1 i) (setq Exi2 (+ Exi2 (expt (/ xd 1000) 2) (setq yd (- ya (cadr (cdr (assoc '10 (entget (ssname s1 i) (setq Eyi2 (+ Eyi2 (expt (/ yd 1000) 2) (setq i (+ i 1) );repeat ;标注最小桩距 (setq x (

22、/ (+ (cadr (assoc '10 (entget (ssname s1 ad)(cadr (assoc '10 (entget (ssname s1 bd) 2);setq (setq y (/ (+ (caddr (assoc '10 (entget (ssname s1 ad)(caddr (assoc '10 (entget (ssname s1 bd) ) 2) (entmake (list '(0 . "CIRCLE") (CONS 10 (list x y 0.0) (CONS 40 (* dtxt 1.5) )

23、 ) (entmake (list '(0 . "TEXT") (CONS 1 "此处为最小桩距") (CONS 10 (list (+ x (* dtxt -3.2) (+ y (* dtxt 2) 0.0) (CONS 40 (* dtxt 0.8) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (rtos dx 2 2) (CONS 10 (list (+ x (* dtxt -1.0) (+ y (* dtxt 0.8) 0.0) (CONS 40 (* dtxt 0.6)

24、) );重心点绘图 ovar (entmake (list '(0 . "LINE") (CONS 10 (list xa ya 0.0) (CONS 11 (list (+ xa (* dtxt 2.5) (+ ya (* dtxt 2.5) 0.0) ) ) (entmake (list '(0 . "LINE") (CONS 10 (list (+ xa (* dtxt 2.5) (+ ya (* dtxt 2.5) 0.0) (CONS 11 (list (+ (+ xa (* dtxt 13) (* dtxt 2.5) (+ y

25、a (* dtxt 2.5) 0.0) ) ) (entmake (list '(0 . "SOLID") (CONS 10 (list (+ xa (* (* dtxt 1.0) 0.5) (+ ya (* (* dtxt 1.0) 0.866) 0.0) (CONS 11 (list (+ xa (* (* dtxt 0.65) 0.707) (+ ya (* (* dtxt 0.65) 0.707) 0.0) (CONS 12 (list xa ya 0.0) (CONS 13 (list (+ xa (* (* dtxt 1.0) 0.866) (+ ya

26、(* (* dtxt 1.0) 0.5) 0.0) ) ) (entmake (list '(0 . "CIRCLE") (CONS 10 (list xa ya 0.0) (CONS 40 (* dtxt 0.5) ) ) (entmake (list '(0 . "CIRCLE") (CONS 10 (list xa ya 0.0) (CONS 40 (* dtxt 0.25) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (strcat "Y : "

27、 (rtos (- ya (cadr oxy) 2 2) " mm") (CONS 10 (list (+ xa (* dtxt 8) (+ ya (* dtxt 2.85) 0.0) (CONS 40 (* dtxt 0.6) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (strcat "X : " (rtos (- xa (car oxy) 2 2) " mm") (CONS 10 (list (+ xa (* dtxt 8) (+ ya (* dtxt 4) 0.

28、0) (CONS 40 (* dtxt 0.6) ) ) (entmake (list '(0 . "TEXT") (CONS 1 "桩 数(根) ") (CONS 10 (list (+ xa (* dtxt 3.0) (+ ya (* dtxt 3.9) 0.0) (CONS 40 (* dtxt 0.75) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (rtos n1 2 0) (CONS 10 (list (+ xa (* dtxt 4.3) (+ ya (* dtxt 2

29、.85) 0.0) (CONS 40 (* dtxt 0.6) ) ) (entmake (list '(0 . "TEXT") (CONS 1 "最小桩距") (CONS 10 (list (+ xa (* dtxt 3.2) (+ ya (* dtxt 1.4) 0.0) (CONS 40 (* dtxt 0.75) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (rtos dx 2 0) (CONS 10 (list (+ xa (* dtxt 3.7) (+ ya (* dt

30、xt 0.35) 0.0) (CONS 40 (* dtxt 0.6) ) ) (entmake (list '(0 . "TEXT") (CONS 1 (chr 83) (CONS 10 (list (+ xa (* dtxt 8) (+ ya (* dtxt 0.35) 0.0) (CONS 40 (* dtxt 0.6) '(7 . "symbol") ) ) (entmake (list '(0 . "TEXT") (CONS 1 (strcat "y =" (rtos Eyi2 2 2) " M*M") (CONS 10 (list (+ xa (* dtxt 8.8) (+ ya (* dtxt 0.35) 0.0) (CONS 40 (* dtxt 0.6) ) ) (entmake (list '(0 . "TEXT") (CONS 1 "2") (CONS 10 (list (+ xa (* dtxt 9.4) (+ ya (* dtxt 0.70) 0.0) (CONS 40 (* dtxt 0.3) ) ) (entmake (lis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论