注册 登录
明经CAD社区 返回首页

ljcgq的个人空间 http://www.mjtd.com/?70998 [收藏] [复制] [分享] [RSS]

日志

旋转楼梯放样程序----lisp在钢结构深化工程中的应用

已有 1854 次阅读2005-11-16 09:43 |系统分类:开发

AUTOLISP编程在深化设计中的应用

                     ————旋转楼梯放样程序

 

摘要本文以工程中旋转楼梯的放样程序的运用为例,阐述了AUTOLISP程序的编写,加载,运行,到结果记录的整个过程,并附带了其他程序源代码。(这里只贴了主程序)

关键词AUTOLISP; 旋转楼梯;重复;程序;放样。

 

前言:伴随着AUTOLISP语言的日臻成熟和完善,许多自行研发的程序已经广泛的应用于施工设计的各个过程中。尤其是近年来钢结构建筑的广泛普及和使用,使得钢结构深化设计正在向一条优化、简洁、高效的方向发展。

在实际的工作中,对于多维结构(如:旋转楼梯、空间桁架等)的深化设计放样往往是耗时耗力,而且还很容易出现错误,这也就间接的导致了施工的质量和效率不是很高,同时也给制作和安装带来了许多麻烦!为此根据实际工作需要运用LISP语言编写了旋转楼梯的放样程序,并希望以能给钢结构深化工程技术人员的深化工作有所启发和帮助。

程序的特点:

     本程序使用于柱体旋转楼梯、锥体旋转楼梯及倒锥体旋转楼梯的实体放样,仅需要在深化设计时输入若干个基本参数,即可快速生成AutoCAD环境下的旋转楼梯的三维模型,

   程序源代码

;====================================================

;  本程序适用于柱体旋转楼梯、锥体旋转楼梯及倒锥体旋转楼梯的实体放样.

;  2000.6.1         LJC

;  2000.5.30   2000.6.1  LJC

;  2004.5.18      LJC

;====================================================

(defun C:xlt(/)

  (command "_vpoint" "_non" "*-1,-1,1")

  (setq b1(getpoint "\n旋转楼梯下端圆心b1:  "))

  (setq ang0(getreal "旋转楼梯总转角ang0"))

  (setq a(getreal "旋转楼梯下端圆半径R="))

  (setq b(getreal "旋转楼梯上端圆半径R="))

  (setq h(getreal"旋转楼梯上、下端高差H=:"))

  (setq tg(getreal"旋转楼梯台阶高tg=:"))

  (setq tk(getreal"旋转楼梯宽度TK=:"))

  (setq n1(/ h tg))

  (setq n2(fix n1))

  (SETQ TG1(/ H N2))

  (setq m 0.000)

  (setq mm 0.000)

  (setq n(fix h))

  (setq delt (/ (*(/ ang0 180) pi) n ))

  (setq j( / h n))

  (setq ang 0)

  (setq jj 0)

  (command "ucsicon" "or" )

  (command "ucs" "o" b1)

  (command "3dpoly" (list a 0 0))

  (setq pt1(list a 0 0))

  (setq pt11 pt1)

  (repeat n

        (setq jj(+ jj 1))

        (setq j1(+ 0 (* j jj)))

        (setq ang (+ delt ang))

        (setq r(- a (/ (* j1 (- a b))h)))

        (setq pt2(list (* r (cos ang))(* r (sin ang))(+ 0 (* j jj))))

        (setq m1(distance pt1 pt2 ))

        (setq pt1 pt2)

        (setq m(+ m m1))

        (princ"正在生成梯内梁,请稍等!! ")

        (command pt2)   

  )

  (setq pa(angle pt11 pt2))

  (command "")

  (setq r(+ tk r))

  (setq pt1(list (* r (cos ang))(* r (sin ang))(+ 0 (* j jj))))

  (command "3dpoly" pt1)

  (repeat n

        (setq jj(- jj 1))

        (setq j1(- 0 (* j jj)))

        (setq ang (- ang delt))

        (setq r(+ a (/ (* j1 (- a b))h)))

        (setq r(+ tk r))

        (setq pt2(list (* r (cos ang))(* r (sin ang))(+ 0 (* j jj))))

        (setq mm1(distance pt1 pt2 ))

        (setq pt1 pt2)

        (setq mm(+ mm mm1))

        (princ"正在生成梯外梁,请稍等!! ")

        (command pt2)

  )

  (command "")

  (repeat n2

        (setq jj(+ jj tg1))

        (setq j1(+ 0 (* j jj)))

        (setq ang (+ ang  (* delt tg1)))

        (setq r(- a (/ (* j1 (- a b))h)))

        (setq pt2(list (* r (cos ang))(* r (sin ang))(+ 0 (* j jj))))

        (setq r(+ r tk))

        (setq pt3(list (* r (cos ang))(* r (sin ang))(+ 0 (* j jj))))

        (command "3dpoly" pt2 pt3 "")

        (princ"正在生成梯踏板,请稍等!! ")

  )

  (SETVAR "SURFTAB1" 60)

  (command "zoom" "e")

  (command "circle" "0,0,0"  a )

  (setq ljc(entlast))

  (command "circle" (list 0 0 h)   b )

  (setq gq(entlast))

  (command "_rulesurf" ljc gq)

  (command "_shademode" "g")

  (SETQ LJ 0.0000)

  (setq wj 0.0000)

  (SETQ LJ (/ m n2))

  (setq wj(/ mm n2))

  (SETQ N3 (- N2 1))

  (textscr)

  (princ"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n------ljc------谢谢惠顾!!------ljc------")

  (princ"\n\n梯内梁长度为: ") 

  (PRINT M)

  (PRINT )

  (princ"\n梯内梁梯踏板间距为: ")

  (PRINT lj)

  (PRINT )

  (princ"\n梯外梁长度为: ")

  (PRINT MM)

  (PRINT )

  (princ"\n梯外梁梯踏板间距为: ")

  (PRINT wj)

  (PRINT )

  (princ"\n梯踏板总数为: ")

  (PRINT N3)

  (PRINT )

  (princ"\n注:本设计数据均为旋转梯梯梁内净尺寸。")

  (princ"\n\n\n------ljc------谢谢惠顾!!------ljc------ ")

  (PRINT )

  (princ"\n******  读取设计数据后,请按F2键退出文本框!!  ******" )

  (PRINT )

  (textscr)

)

(princ "\n***      中国二十二冶金结设计研究所    ***

          *** The program was writen by ljc 2000.6.1 ***

          ****  旋转楼梯放样程序已成功加载!!  谢谢惠顾!! ——ljcgq-2004.5.1  *** "

  )

(princ)

结束语

在详图设计工作中我们经常会遇到一些重复性的绘制工作,或者人为不好操作的事件,这个时候我们可以借用autolisp来实现命令的集成,一次完成多个连续的命令,这样既节省了时间而且还有较高的精确度。

                         

 

ljc

2005.4.13

 

 


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 17:37 , Processed in 0.124100 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部