http://blog.sina.com.cn/gaojian0322[订阅]
博文

 

  如果你依照小时候老师教我们的方法乖乖躲在桌子底下,床铺底下,那么,我必须告诉你,你的伤亡率,高达百分之九十八!!那该怎么办?
  美国国际搜救队长教你正确的躲避位置。道格卡普是美国国际搜救队长,自一九八五年至今,他及他的队员己参与全世界七十九次重大灾难的救灾工作,他曾经爬进近七百栋因为地震、爆炸而严重倒塌的建筑物内搜查受困的生还者以及罹难者的遗体。除了参与两年前日本神户大地震及美国俄克拉荷马市联邦大楼爆炸案救搜工作,十二年来国际新闻中的重大灾难救灾,他都没缺席。他离华前,传授在建筑物倒塌时如何求生。
  国人从小到大,在防震演习中,老师总是叫学生躲在课桌下,道格得知这点后,很焦急地一再呼吁:不要躲在桌子、床铺下,而要以比桌、床高度更低的姿势,躲在桌子床铺的旁边。他以先前和土耳其政府、大学合作拍制的地震逃生录像带,说明不要躲在桌下避震的道理。
  透过土耳其政府协助,制作单位爆破一栋废弃大楼,仿真地震时建筑物倒塌的情形,工作人员先依据“常识”,在桌子床铺等家具下,放置十具模特儿;他和他的搜救队员在桌子床铺等家具旁,同样放置十具模特儿,炸药引爆后大楼变成断垣残壁,他和搜救队员依序找到二十具模特儿,在桌床下的十具模特儿有八具被压成全毁,其中一具甚至头、身、脚断成三截;他放置在家具旁边的的十具模特儿,则全部安好无事。他解释,建筑物天花板因强震倒塌时,会将桌床等家具压毁,人如果躲在其中,后果不堪设想,如果人以低姿势躲在家具旁,家具可以先承受倒塌物品的力量,让一旁的人取得生存空间。道格说,即使开车时遇到地震,也要赶快离开车子,很多地震时在停车场丧命的人,都是在车内被活活压死,在两车之间的人,却毫发未伤。注意:强烈地震发生时,如果你正在停车场,千万不要留在车内,以免垮下来的天花板压扁汽车,造成伤害;应该以卧姿躲在车旁,掉落的天花板压在车上,不致直接撞击人身,可能形成一块“生存空间”,增加存活机会。他很慎重地对在场的一百多位我国搜救队员说:搜救队员一要在地震中先能自己求得生存,只有活下来,才能拯救他人性命。他说,希望大家告诉大家,只要传播这么一点求生讯息,地震发生时,建筑物内的伤亡率,可以由百分之九十,遽降为百分之二。请大家传阅,增加大家在灾难发生时的生存机率,减少伤害。
   你关心你的朋友吗?如果答案是肯定的请把这篇文章转寄给你所关心的人
(转摘)

无题(2008-01-03 00:10)
 初恋 我们不懂
 再恋 没有把握
曾经 我们迷失
 现在 已经淡忘
现实是这样的残酷
回忆是如此的痛苦
修行是如此的艰难
回归是如此的遥远
 
拼图(2007-11-11 22:20)
 

你知道吗?这些图形都是由4个小图拼合而成的,能试着做出来吗?
AutoCAD高级技巧(2007-06-02 00:52)

1.ACAD新手学习时,掌握一定技巧是不是会觉得提升很快啊?
选择技巧:
在选择编辑中,有时不小心多选了某个像素,此时在命令未结束下并不需要取消命令而重来,只须在'选择目标'的提示后输入remove回车,再在提示下逐一选择哪些多选的像素(当然别太多,否则难选啊!)即可搞定.
2.分享我的AutoCAD裁剪技巧
如图所示,要对右图部分圆(可以是其它边框)外的直线进行裁剪,普通办法就是选择裁剪边界后再选择要裁剪的线段即可,实际上AutoCAD还有较为简捷的办法,其做法如下:
1.按常规执行裁剪命令,选择裁剪边界(回车确认);
2.在提示选择要裁剪的线段元素时输入“f”(即fence),回车确认;
3.在提示:First Fence point下绘制与要裁剪线段相交的连续橡皮筋直线,回车确认即可(见图标)。
尚需注意两点:1.橡皮筋直线无需闭合;2.橡皮筋直线与要裁剪线段重复相交时,则剪去以后一次的部分(这点很重要哦)。
3.Remove可用【Shift】+object 代替更方便。
4.如何在WORD表格中引用ACAD的形位公差??(如图红框区所示)

其实也简单,但就怕部分新手不敢一试!
1.将ACAD的背景设为白色,否则在WORD中不能处理背景色;
2.在ACAD中单独直接标注形位公差图框,尽量放大显示至整个绘图区;
3.使用ACAD的copyclip(拷贝至粘贴板)命令,选中形位公差图框;
4.切换至WORD的表格中,粘贴即可,但此时整个表格会被挤得很乱,此时可耐点性子,利用WORD自带的图片编辑功能将形位公差图框多余的边剪去,并直接拖放形位公差图框图片至表格范围内的合适大小.为利于操作,可将文档显示放大。
可以肯定,一般的打字员、文秘是做不好这项工作的,应为她不会ACAD,高兴吗?!

5.善用ACAD的内部函数计算器功能

内部函数计算器功能命令: cal 可以作透明命令使用.
比如偏移像素时,可以在提示输入偏移距离时输入:'cal,即
Command:
Specify offset distance or [Through] <Through>: 'cal
回车后在 Initializing...>> Expression: 提示后输入任意计算距离的等式如:100*sin(30)
系统将自动计算偏移距离,再选择像素即可。
6精选应用5:已知任意斜线及圆圆心于线段端点2上,欲将圆自圆心点2与端点3线段上移动25的距离:

指令: MOVE
选取对象: <- 选取圆1
选取对象: <- [Enter]
指定基准点或位移: <- 选取圆中心点
指定位移的第二点或 <使用第一点作为位移>: 'CAL
>> 表示式: @+vee1*25 <- 输入表示式
>> 选取一个端点给 VEE1: <- 选取端点2
>> 选取另一个端点给 VEE1: <- 选取端点3
(152.103 -11.8027 0.0) <- 求得位移点坐标
 
精选应用6:承上题,如果要将圆移至端点3的25的位置上,如图所示:

指令: MOVE
选取对象: <- 选取圆1
选取对象: <-[Enter]
指定基准点或位移: <- 选取圆中心点
指定位移的第二点或 <使用第一点作为位移>: 'CAL
>> 表示式: pld(end,end,25) <- 输入表示式
>> 选取像素给 END 锁点: <- 选取端点3
>> 选取像素给 END 锁点: <- 选取端点2
(147.624 -80.7839 0.0) <- 求得位移点坐标
 
精选应用7:已知任意斜线欲完成一个正三角形,边长为斜线的3倍,角度方向与斜线相同:

指令: POLYGON
输入边的数目 <5>: 3 <-输入边数
指定多边形的中心点或 [边缘(E)]: E <- 输入选项
指定边缘的第一个端点: <- 选取任意一点为起点
指定边缘的第二个端点: 'CAL
>> 表示式: @+vee*3 <- 输入表示式
>> 选取一个端点给 VEE: <- 选取端点1
>> 选取另一个端点给 VEE: < -选取端点2
(138.543 -168.946 0.0) <- 求得长度方向坐标点
 
精选应用8:已知任意两条相交线段即另一条水平线,请于水平线上完成一弧夹角同P1-P2-P3:

指令: ARC
指定弧的起点或 [中心点(C)]: <- 选取端点1
指定弧的第二点或 [中心点(C)/终点(E)]: C <- 输入选项
指定弧的中心点: <- 选取端点2
指定弧的终点或 [角度(A)/弦长(L)]: A <- 输入选项
指定夹角: 'CAL
>> 表示式: ang(int,end,end) <- 输入表示式
>> 选取像素给 INT 锁点: <- 选取交点P2
>> 选取像素给 END 锁点: <- 选取端点P1
>> 选取像素给 END 锁点: <- 选取端点P3
43.7612 <- 求得弧夹角A
精选应用9:承上一单元精选应用8,请将线段与弧,以端点2为基准点旋转角度同P2至P1:

指令:ROTATE
目前使用者坐标系统中的正向角: ANGDIR=逆时钟方向ANGBASE=0
选取对象: <- 选取右侧弧与线
选取对象: <-[Enter]
指定基准点: <-选取端点2
指定旋转角度或 [参考(R)]: 'CAL
>> 表示式: ang(end,end) <-输入表示式
>> 选取像素给 END 锁点: <-选取端点P2
>> 选取像素给 END 锁点: <- 选取端点P1
72.2417 ? 求得线段角度A
 
精选应用10:已知任意线段,欲于线段3/5位置上完成一圆,半径为线长的1/8:

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: 'CAL
>> 表示式: plt(end,end,3/5) <- 输入表示式
>> 选取像素给 END 锁点: <- 选取端点1
>> 选取像素给 END 锁点: <- 选取端点2
(139.943 -345.825 0.0) <- 求得圆心位置坐标
指定圆的半径或 [直径(D)] <8.5434>: 'CAL
>> 表示式: dee/8 <- 输入表示式
>> 选取一个端点给 DEE: <- 选取端点1
>> 选取另一个端点给 DEE: < - 选取端点2
6.68901 <- 求得圆半径值
 
精选应用11:已知任意线段,请画一个半径20的圆与线段的中点相切:

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: 2P <- 输入选项
指定圆直径的第一个端点: mid <- 选取中点3
指定圆直径的第二个端点: 'CAL
>> 表示式: @+nee*40 <- 输入表示式
>> 选取一个端点给 NEE: <- 选取端点1
>> 选取另一个端点给 NEE: <- 选取端点1
(115.763 -389.846 0.0) <- 求得另一个直径点
 
精选应用12:已知两条任意线段,请于两线段端点间交点处绘制半径10的圆:

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: 'CAL
>> 表示式: ille <- 输入表示式
>> 选取一个端点给 ILLE:第一条线: <- 选取端点1
>> 选取另一个端点给 ILLE:第一条线: <- 选取端点4
>> 选取一个端点给 ILLE:第二条线: <- 选取端点2
>> 选取另一个端点给 ILLE:第二条线: <- 选取端点3
(147.396 -488.861 0.0) <- 求得圆心坐标点
指定圆的半径或 [直径(D)] <20.0000>: 10 <- 输入半径
 
精选应用13:已知矩形条件如下:

指令: RECTANG
指定第一个角点或[倒角(C)/高程(E)/圆角(F)/厚度(T)/线宽(W)]: <- 选取左下角点
指定其它角点: 'CAL
>> 表示式: [@sqr(8.35),sqrt(2)*9.5] <- 输入表示式
(111.524 -558.998 0.0) <- 求得另一角坐标点
精选应用1:已知一个任意圆,画出一个同心圆半径为该圆的5/7

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: CEN
于 <- 选取圆1中心点
指定圆的半径或 [直径(D)] <48.4441>: 'CAL <- 输入’CAL
起始设定...>> 表示式: RAD*5/7 <- 输入表示式
>> 为 RAD 函数选取圆, 弧或聚合线段: <- 选取圆1,完成图形
 
精选应用2:已知二圆,请于两圆连心线中点,画上一个半径为5的小圆:

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: 'CAL
>> 表示式: (CEN+CEN)/2 <- 输入表示式
>> 选取像素给 CEN 锁点: <- 选取圆1中心点
>> 选取像素给 CEN 锁点: <- 选取圆2中心点
(190.229 161.234 0.0) <- 求得中点坐标值
指定圆的半径或 [直径(D)] <8.9804>: 5 <-输入半径5
 
精选应用3:已知矩形与一条线段,请以矩形对角中点为圆心,线段长度为参考半径,完成一圆:

指令: CIRCLE
指定圆的中心点或 [三点(3P)/两点(2P)/相切,相切,半径(T)]: 'CAL
>> 表示式: MEE <- 输入表示式
>> 选取一个端点给 MEE: <- 选取端点1
>> 选取另一个端点给 MEE: <-选取端点2
(70.2147 87.3565 0.0) <- 求得中点坐标值
指定圆的半径或 [直径(D)] <5.0000>: 'CAL
>> 表示式: DEE <-输入表示式
>> 选取一个端点给 DEE: <-选取端点3
>> 选取另一个端点给 DEE: <-选取端点4
17.3398 <- 求得线段长度值
精选应用4:绘制正五边形,边长为456之平方根:

指令: POLYGON
输入边的数目 <4>: 5 <- 输入边数
指定多边形的中心点或 [边缘(E)]: E <- 输入选项
指定边缘的第一个端点: <- 选取任意一点为起点
指定边缘的第二个端点: 'CAL
>> 表示式: [@SQRT(456)<0] <- 输入表示式
(85.7895 9.51962 0.0) <- 求得第二端点坐标

数值表达式:
运操作数 运算方式
() 群组表达式
^ 指数表达式
*与/ 乘法与除法
+与- 加法与减法
向量表达式:
运操作数 运算方式
() 群组表达式
& 计算两向量间的向量乘积 (当做一个向量)
[a,b,c]&[x,y,z]=[(b*z)-(c*y),(c*x)-(a*z),(a*y)-(b*x)]
*与/ 计算两向量间的纯量乘绩 (当做一个实数)
[a,b,c]&[x,y,z]=ax+by+cz
*与/ 向量乘以或除以一个实数 a*[x,y,z]=[a*x,a*y,a*z]
+与- 向量加法与减法 [a,b,c]+[x,y,z]=[a+x,b+y,c+z]
向量表达式:
点的格式 格 式
极坐标 [距离<角度]
圆柱坐标 [距离<角度,Z]
球形坐标 [距离<角度1<角度2]
相对坐标 使用 @ 前置符号 [@x,y,z]
WCS(代替UCS) 使用 * 前置符号[*x,y,z]
 
标准数值函数:
函 数 功能说明
sin (角度) 求角度之正弦值
cos (角度) 求角度之余弦值
tang (角度) 求角度之正切值
asin (实数) 求数值之反正弦值 (数值必须在-1与1之间)
acos (实数) 求数值之反余弦值 (数值必须在-1与1之间)
atang (实数) 求数值之反正切值
ln (实数) 求数值之自然对数
log (实数) 求数值以实为底之对数
exp (实数) 求数值之自然指数
exp10 (实数) 求数值以实为底之指数
sqr (实数) 求数值之平方
sqrt (实数) 求数值之平方根 (数值必须不为负值)
abs (实数) 求数值之绝对值
round (实数) 求最接近数值的整数
trunc (实数) 求数值之整数部分
r2d (角度) 将角度由弪度转为度,例如r2d (pi) 将常数p转为180度
d2r (角度) 将角度由度转为弪度,例如d2r (180) 转换180度为p弪度值
pi 常数p
特殊功能函数:(其中括号内p,p1,p2…等可配合辅助抓点来取得坐标值)
函 数 功能说明
ang (p1,p2) 求X轴与直线(p1,p2)之夹角值
ang (顶点,p1,p2) 二直线(顶点,p1)与(顶点,p2)之夹角
dist (p1,p2) 求p1及p2间的距离
dpl (p,p1,p2) 点p与经过p1、p2之直线最短距离
dpp (p,p1,p2,p3) 计算点p经过三点(p1,p2,p3)的平面之间最短距离
Dee dist (end,end)之便捷功能函数,求两端点之距离
getvar (变量名称) 读取AutoCAD系统变量值,仅限于实数、整数及点坐标
ill (p1,p2,p3,p4) 二直线(p1,p2)与(p3,p4)的交叉点
ilp (p1,p2,p3,p4,p5) 计算线(p1,p2)和经过三点(p3,p4,p5)的平面之相交点
ille ill (end,end,end,end) 的便捷功能函数
mee (end,end)/2 的便捷功能函数,求二端点间的中点坐标
nor (p1,p2) 直线(p1,p2)之单位法向量 (垂直方向)
nee nor (end,end)之便捷功能函数
pld (p1,p2,d) 直线(p1,p2)上距离p1点d长度的点坐标
plt (p1,p2,t) 直线(p1,p2)上以参数t定义的点位
rad 选取一圆或弧求取该半径值
rot (p,basp,a) 点p以basp为基准旋转a角度
rot (p,axp1,axp2,a) 以通过点axp1和axp2的线为旋转轴,旋转p点,经过角度a
vec (p1,p2) 点p1至点p2之向量
vec1 (p1,p2) 点p1至点p2之单位向量
vee vec(end,end)之便捷功能函数
vee1 Vec1(end,end)之便捷功能函数
过滤一个点或向量的X、Y和Z分量:
函 数 功能说明
xyof (p1) 点的X和Y分量,Z分量设为0.0
xzof (p1) 点的X和Z分量,Y分量设为0.0
yzof (p1) 点的Y和Z分量,X分量设为0.0
xof (p1) 点的X分量,Y和Z分量设为0.0
yof (p1) 点的Y分量,X和Z分量设为0.0
zof (p1) 点的Z分量,X和Y分量设为0.0
rxof (p1) 点的X分量
ryof (p1) 点的Y分量
rzof (p1) 点的Z分量

7.<AutoCAD中如何计算二维图形的面积>
AutoCAD中,可以方便、准确地计算二维封闭图形的面积(包括周长),但对于不同类别的图形,其计算方法也不尽相同。
1. 对于简单图形,如矩形、三角形。只须执行命令AREA(可以是命令行输入或点击对应命令图标),在命令提示“Specify first corner point or [Object/Add/Subtract]:”后,打开捕捉依次选取矩形或三角形各交点后回车,AutoCAD将自动计算面积(Area)、周长(Perimeter),并将结果列于命令行。
2. 对于简单图形,如圆或其它多段线(Polyline)、样条线(Spline)组成的二维封闭图形。执行命令AREA,在命令提示“Specify first corner point or [Object/Add/Subtract]:”后,选择Object选项,根据提示选择要计算的图形,AutoCAD将自动计算面积、周长。
3. 对于由简单直线、圆弧组成的复杂封闭图形,不能直接执行AREA命令计算图形面积。必须先使用Boundary命令(其使用方法依照下图对话框选择即刻,它同于剖面线填充的面域创建),以要计算面积的图形创建一个面域(region)或多段线对象,再执行命令AREA,在命令提示“Specify first corner point or [Object/Add/Subtract]:”后,选择Object选项,根据提示选择刚刚建立的面域图形,AutoCAD将自动计算面积、周长。

8.AutoCAD字体替换技巧
AutoCAD文件在交流过程中,往往会因设计者使用和拥有不同的字体(特别是早期版本必须使用的单线字体),而需为其指定替换字体,如下图所示,即是因为笔者的计算机中没有UMHZ.shx字体,而需为其指定笔者计算机中存在的字体hzkt.shx。
这种提示在每次启动AutoCAD后,打开已有文件都会出现。其实,这种字体替换可以在配置中一次指定:
执行config命令,在下图对话框的黑显处(指定替换字体文件)输入字体文件及其完整目录,ok后,下次启动AutoCAD打开已有文件时,字体替换提示将不在出现。

9'CAL虽然好用,但它是采AuyoLISP的叙述语法,多少也须有LISP的底子。
我目前使用《AutoCAD环境下呼叫Windows的计算器》,更为方便且直接,并
有普通和工程用两种计算器可选用。
方法:
1. 指令ALIASEDIT→Shell command→选【ADD】钮→Alias=CALC,
Command=start calc
尔后在AutoCAD command 提示下键入CALC即可叫出计算器。
2. 如果ALIASEDIT不能作用,编辑acad.pgp也一样可达到目地。
AutoCAD表格制作
AutoCAD尽管有强大的图形功能,但表格处理功能相对较弱,而在实际工作中,往往需要在AutoCAD中制作各种表格,如工程数量表等,如何高效制作表格,是一个很实用的问题。在AutoCAD环境下用手工画线方法绘制表格,然后,再在表格中填写文字,不但效率低下,
而且,很难精确控制文字的书写位置,文字排版也很成问题。尽管AutoCAD支持对象链接与嵌入,可以插入Word或Excel表格,但是一方面修改起来不是很方便,一点小小的修改就得进入Word或Excel,修改完成后,又得退回到AutoCAD,另一方面,一些特殊符号如一级
钢筋符号以及二级钢筋符号等,在Word或Excel中很难输入,那?有没有两全其美的方法呢,经过探索,可以这样较好解决:先在Excel中制完表格,复制到剪贴板,然后再在AutoCAD环境下选择edit菜单中的Paste special,选择作?AutoCAD Entities,确定以后,表格
即转化成AutoCAD实体,用explode炸开,即可以编辑其中的线条及方字,非常方便。

 

LISP程序五,LM(41-86).LSP(2007-05-18 21:39)
 

(defun C:LM()
 (setq o(getpoint '\n 输入插入点:'))
 (setq d0(getreal '\n 输入螺母规格:'))
 (SETQ SC(GETREAL '\n 输入比例系数:'))
 (setq ang1(getangle o '\n 输入旋转角度:'))
 (setq ang(- (/ (* ang1 180) pi) 90))
 (setq os(getvar 'osmode'))
 (command 'osmode' 0)
 (cond ((= d0 5) (setq e0 8.63) (setq m0 5.6))
       ((= D0 6) (setq E0 11.0) (setq m0 6.1))
       ((= D0 8) (setq E0 14.4) (setq m0 7.9))
       ((= D0 10) (setq E0 17.8) (setq m0 9.5))
       ((= D0 12) (setq E0 20.0) (setq m0 12.2))
       ((= D0 14) (setq E0 23.4) (setq m0 13.9))
       ((= D0 16) (setq E0 26.8) (setq m0 14.9))
       ((= D0 18) (setq E0 29.6) (setq m0 15.9))
       ((= D0 20) (setq E0 33.0) (setq m0 18.7))
       ((= D0 24) (setq E0 39.6) (setq m0 22.3))
       ((= D0 30) (setq E0 50.9) (setq m0 26.4))
       ((= D0 36) (setq E0 60.8) (setq m0 31.5))
       ((= D0 42) (setq E0 72) (setq m0 34.9))
       ((= D0 48) (setq E0 82.6) (setq m0 38.9))
       ((= D0 56) (setq E0 93.6) (setq m0 45.9))
       ((= D0 64) (setq E0 104.9) (setq m0 52.4))
       ((= d0 4) (setq e0 7.7) (setq m0 3.2))
)
  (SETQ D(* d0 sc))
  (setq e(* e0 sc))
  (setq m(* m0 sc))
  (setq H1(SQRT (- (* 2.25 (* d d)) (/ (* e e) 16))))
  (setq h(- (* 1.5 d) h1))
  (setq r1 (+ (* h h) (/ (* e e) 64)))
  (setq r (/ (/ r1 2) h))
  (setq P1 (list (/ e 2) (- m h)))
  (setq p2 (list (/ e 4) (- m h)))
  (setq c1 (list (* 0.375 E) (- m r)))
  (command 'ucs' 'o' o)
  (command 'ucs' 'z' ang)
  (command 'arc' p1 'c' c1 p2)
  (setq P3 (list (/ e 4) h))
  (setq p4 (list (/ e 2) h))
  (setq C2 (list (* 0.375 e) r))
  (command 'arc' p3 'c' c2 p4)
  (setq p5 (list (- 0 (/ e 4)) (- m h)))
  (setq p6 (list (- 0 (/ e 2)) (- m h)))
  (setq c3 (list (- 0 (* 0.375 e)) (- m r)))
  (command 'arc' p5 'c' c3 p6)
  (setq p7 (list (- 0 (/ e 2)) h))
  (setq p8 (list (- 0 (/ e 4)) h))
  (setq c4 (list (- 0 (* 0.375 e)) r))
  (command 'arc' p7 'c' c4 p8)
  (command 'line' p1 p4 '')
  (command 'line' p2 p3 '')
  (command 'line' p5 p8 '')
  (command 'line' p6 p7 '')
  (setq P9 (list (* 0.375 e) m))
  (setq p10 (list (- 0 (* 0.375 e)) m))
  (command 'line' p9 p10 '')
  (setq p11 (list (* 0.375 e) 0))
  (setq p12 (list (- 0 (* 0.375 e)) 0))
  (command 'line' p11 p12 '')
  (setq c5 (list 0 (- m (* 1.5 d))))
  (command 'arc' p2 'c' c5 p5)
  (setq c6 (list 0 (* 1.5 d)))
  (command 'arc' p8 'c' c6 p3)
  (command 'ucs' 'z' (- 0 ang))
  (command 'ucs' 'w')
  (command 'osmode' os)
  (COMMAND 'REDRAWALL')
  (COMMAND 'REGEN')
  (princ)
)

 

LISP程序四,DD.LSP(2007-05-18 21:34)
 

(defun dtr(a)
  (* a (/ pi 180.0))
)
(defun C:dd()
 (setq o(getpoint '\n 输入插入点:'))
 (setq d0(getreal '\n 输入弹垫规格:'))
 (SETQ SC(GETREAL '\n 输入比例系数:'))
 (setq ang1(getangle o '\n 输入旋转角度:'))
 (setq ang(- (/ (* ang1 180) pi) 90))
 (setq os(getvar 'osmode'))
 (command 'osmode' 0)
 (cond ((= d0 5) (setq d1 5.1) (setq b0 1.3) (setq m0 0.65))
       ((= D0 6) (setq d1 6.1) (setq b0 1.6) (setq m0 0.8))
       ((= D0 8) (setq d1 8.1) (setq b0 2.1) (setq m0 1.05))
       ((= D0 10) (setq d1 10.2) (setq b0 2.6) (setq m0 1.3))
       ((= D0 12) (setq d1 12.2) (setq b0 3.1) (setq m0 1.55))
       ((= D0 16) (setq d1 16.2) (setq b0 4.1) (setq m0 2.05))
       ((= D0 20) (setq d1 20.2) (setq b0 5.0) (setq m0 2.5))
       ((= D0 24) (setq d1 24.5) (setq b0 6.0) (setq m0 3.0))
       ((= D0 30) (setq d1 30.5) (setq b0 7.5) (setq m0 3.75))
       ((= D0 36) (setq d1 36.5) (setq b0 9.0) (setq m0 4.5))
       ((= D0 42) (setq d1 42.5) (setq b0 10.5) (setq m0 5.25))
       ((= D0 48) (setq d1 48.5) (setq b0 12.0) (setq m0 6.0))
)
  (SETQ D(* d1 sc))
  (setq b(* b0 sc))
  (setq m(* m0 sc))
  (setq c(cos (dtr 15)))
  (setq t(/ (sin (dtr 15)) c))
  (setq p1(list (- 0 (/ (+ b d) 2)) 0))
  (setq p2(list (/ (+ b d) 2) 0))
  (command 'ucs' 'o' o)
  (command 'ucs' 'z' ang)
  (command 'line' p1 p2 '')
  (setq p3(list (- 0 (/ (+ b d) 2)) b))
  (setq p4(list (/ (+ b d) 2) b))
  (command 'line' p3 p4 '')
  (command 'line' p4 p2 '')
  (COMMAND 'LINE' P3 P1 '')
  (SETQ P5 (LIST (/ M (* 2 C)) 0))
  (SETQ p6 (LIST (- (/ M (* C 2)) (* T B)) B))
  (command 'line' p5 p6 '')
  (setq p7 (list (- 0 (/ m (* 2 c))) 0))
  (setq p8 (list (- 0 (+ (/ m (* 2 c)) (* b t))) b))
  (command 'line' p7 p8 '')
  (command 'ucs' 'z' (- 0 ang))
  (command 'ucs' 'w')
  (command 'osmode' os)
  (COMMAND 'REDRAWALL')
  (princ)
)

 

LISP程序三,BLS.LSP(2007-05-18 21:32)
 

(defun C:bls()
 (setq o(getpoint '\n 输入插入点:'))
 (setq d0(getreal '\n 输入螺栓规格:'))
 (setq l0(getDIST O '\n 输入螺栓长度:'))
 (SETQ SC(GETREAL '\n 输入比例系数:'))
 (setq ang1(getangle o '\n 输入旋转角度:'))
 (setq zx(getstring '\n 是否要中心线(Yes/<No>):'))
 (setq os(getvar 'osmode'))
 (setq ang (/ (* 180 ang1) Pi))
 (command 'osmode' 0)
 (cond ((= d0 5) (setq e0 8.63) (setq k0 3.5) (setq l1 20.0) (setq l2 16))
       ((= D0 6) (setq E0 11.0) (setq k0 4.0) (setq l1 23.0) (setq l2 18))
       ((= D0 8) (setq E0 14.4) (setq k0 5.3) (setq l1 28.25) (setq l2 22))
       ((= D0 10) (setq E0 17.8) (setq k0 6.4) (setq l1 33.5) (setq l2 26))
       ((= D0 12) (setq E0 20.0) (setq k0 7.5) (setq l1 38.75) (setq l2 30))
       ((= D0 16) (setq E0 26.8) (setq k0 10.0) (setq l1 48.0) (setq l2 38))
       ((= D0 20) (setq E0 33.0) (setq k0 12.5) (setq l1 58.5) (setq l2 46))
       ((= D0 24) (setq E0 39.6) (setq k0 15.0) (setq l1 69.0) (setq l2 54))
       ((= D0 30) (setq E0 50.9) (setq k0 18.7) (setq l1 83.5) (setq l2 66))
       ((= D0 36) (setq E0 60.8) (setq k0 22.5) (setq l1 95.5) (setq l2 78))
       ((= D0 42) (setq E0 72) (setq k0 26) (setq l1 113.5) (setq l2 96))
       ((= D0 48) (setq E0 82.6) (setq k0 30) (setq l1 121.5) (setq l2 108))
       ((= D0 56) (setq E0 93.6) (setq k0 35) (setq l1 137.5) (setq l2 124))
       ((= D0 64) (setq E0 104.9) (setq k0 40) (setq l1 153.5) (setq l2 140))
     
  )
  (SETQ D(* d0 sc))
  (setq e(* e0 sc))
  (setq k(* k0 sc))
  (setq ls(* sc (- l0 l1)))
  (setq lg(* sc (- l0 l2)))
  (setq l(* l0 sc))
  (setq k1(SQRT (- (* 2.25 (* d d)) (/ (* e e) 16))))
  (setq h(- (* 1.5 d) k1))
  (setq r1 (+ (* h h) (/ (* e e) 64)))
  (setq r (/ (/ r1 2) h))
  (setq P1 (list 0 (/ e 2)))
  (setq p2 (list 0 (- 0 (/ e 2))))
  (command 'ucs' 'o' o)
  (command 'ucs' 'z' ang)
  (command 'line' p1 p2 '')
  (setq P3 (list (- (* 1.5 d) (+ k k1)) (/ e 4)))
  (setq p4 (list (- (* 1.5 d) (+ k k1)) (- 0 (/ e 4))))
  (setq C1 (list (- (* 1.5 d) k) 0))
  (command 'arc' p3 'c' c1 p4)
  (setq p5 (list 0 (/ e 4)))
  (setq p6 (list 0 (- 0 (/ e 4))))
  (command 'line' p3 p5 '')
  (command 'line' p4 p6 '')
  (setq p7 (list (- (* 1.5 d) (+ k k1)) (/ e 2)))
  (setq c2 (list (- r k) (* 0.375 e)))
  (command 'arc' p7 'c' c2 p3)
  (setq p8 (list (- (* 1.5 d) (+ k k1)) (- 0 (/ e 2))))
  (setq c3 (list (- r k) (- 0 (* 0.375 e))))
  (command 'arc' p4 'c' c3 p8)
  (command 'line' p7 p1 '')
  (command 'line' P8 p2 '')
  (setq p9 (list (- 0 K) (* 0.375 e)))
  (setq p10 (list (- 0 k) (- 0 (* 0.375 e))))
  (command 'line' p9 p10 '')
  (setq p11 (list 0 (/ d 2)))
  (setq p12 (list (- l (* 0.075 d)) (/ d 2)))
  (command 'line' p11 p12 '')
  (setq p13 (list 0 (- 0 (/ d 2))))
  (setq p14 (list (- l (* 0.075 d)) (- 0 (/ d 2))))
  (command 'line' p13 p14 '')
  (setq P19 (list Lg (/ d 2)))
  (setq p20 (list lg (- 0 (/ d 2))))
  (command 'line' p19 p20 '')
  (SETQ P15 (list lg (* 0.425 d)))
  (setq p16 (list l (*  0.425 d)))
  (setq p17 (list lg (- 0 (* 0.425 D))))
  (setq p18 (list l (- 0 (* 0.425 d))))
  (setq p21 (list ls (/ d 2)))
  (setq p22 (list ls (- 0 (/ d 2))))
  (command 'line' p15 p16 '')
  (command 'line' p17 p18 '')
  (command 'line' p16 p18 '')
  (command 'line' p16 p12 '')
  (command 'line' p14 p18 '')
  (command 'line' p15 p21 '')
  (command 'line' p17 p22 '')
  (command 'line' p12 p14 '')
  (cond ((or (= zx 'y') (= zx 'Y'))
        (setq zx1 (list (- -3 k) 0))
        (setq zx2 (list (+ l 3) 0))
        (command 'line' zx1 zx2 ''))
  )
  (command 'ucs' 'z' (- 0 ang))
  (command 'ucs' 'w')
  (command 'osmode' os)
  (COMMAND 'REDRAWALL')
  (COMMAND 'REGEN')
  (princ)
)

 

LISP程序二,1.lsp(2007-05-18 21:15)
 

 

(defun C:FS(/ cval def opt obj en tpt side count first)
 (setvar 'cmdecho' 0)(setvar 'blipmode' 0)
 (setq obj 'Options' count 0 first T)
 (repcmd)
 (while (/= obj nil)
  (command (cadr obj))
  (cond
   ((= opt 'Through')
    (initget 1)(setq tpt (getpoint '\nThrough point: '))(command tpt))
   (T (initget 1)(setq side (getpoint '\nSide to offset? '))(command side)
   )
  )
  (setq count (1+ count))
  (initget 'Undo Options')
  (setq obj (entsel '\n < Select object to offset > /Undo/Options: '))
  (if (= obj 'Options') (repcmd))
  (while (= obj 'Undo')
   (if (> count 0) (progn (entdel(entlast)) (setq count (1- count))))
   (initget 'Undo Options')
   (setq obj (entsel '\n < Select object to offset > /Undo/Options: '))
  ) ; while close
  (if (= obj 'Options')(repcmd))
 ) ; while close
 (command)(prin1)
 ;(prompt 'Type FS to run')
)


 

LISP程序一,00.lsp(2007-05-18 21:12)
 

(defun c:0()
       (setq clay (getvar 'clayer'))
       (setq pp (entsel '\nPlease select a circle'))
       (setq sp (cadr pp))
       (setq mn (car pp))
       (setq sn (entget mn))
       (setq cp (cdr (assoc 10 sn)))
       (setq cp (trans cp 0 1))
       (setq d1 (cdr (assoc 40 sn)))
       (setq cpx (car cp))
       (setq cpy (cadr cp))      
       (setq spx (car sp))
       (setq spy (cadr sp))
       (setq p1 (polar cp (/ pi 2) d1))
       (setq p2 (polar cp 0 d1))
       (setq p3 (polar cp (/ pi -2) d1))
       (setq p4 (polar cp pi d1))
       (setq p5 (polar p1 0 (- d1 0.5)))
       (setq p6 (polar p2 (/ pi 2) (- d1 0.5)))
       (setq p7 (polar p2 (/ pi -2) (- d1 0.5)))
       (setq p8 (polar p3 0 (- d1 0.5)))
       (setq p9 (polar p3 pi (- d1 0.5)))
       (setq p10 (polar p4 (/ pi -2) (- d1 0.5)))
       (setq p11 (polar p4 (/ pi 2) (- d1 0.5)))
       (setq p12 (polar p1 pi (- d1 0.50)))
       (setq mp1 (polar cp pi (+ 1.5 d1)))
       (setq mp2 (polar cp (/ pi -2) (+ 1.5 d1)))
       (setq scp (* d1 3))
       (command '-osnap' 'int,cen,end,mid,qua,per,tan,nea')
       (command '-layer' 's' 'O' '')
       (command 'zoom' 'c' cp scp)
       (cond ((and (> spx cpx) (> spy cpy))
                (progn (command 'line' p5 p8 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p5 p8 p2 '')
                 ))
             ((and (> spx cpx) (< spy cpy))
                (progn (command 'line' p10 p7 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p7 p10 p3 '')
                 ))
             ((and (< spx cpx) (> spy cpy))
                (progn (command 'line' p11 p6 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p11 p6 p1 '')
                  ))
             ((and (< spx cpx) (< spy cpy))
                (progn (command 'line' p12 p9 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p12 p9 p4 '')
                  ))
         )
        (command 'pedit' ss1 '' 'j' mn '' '')
        (command 'zoom' 'p')
        (command '-layer' 's' clay '')
        (command 'osmode' 3007)
        (princ)
   )


(defun C:DCE(/ )
       (setq clay (getvar 'clayer'))
       (setq pp (entsel '\nPlease select a circle'))
       (setq sp (cadr pp))
       (setq mn (car pp))
       (setq sn (entget mn))
       (setq cp (cdr (assoc 10 sn)))
       (setq cp (trans cp 0 1))
       (setq d1 (cdr (assoc 40 sn)))
       (setq cpx (car cp))
       (setq cpy (cadr cp))      
       (setq spx (car sp))
       (setq spy (cadr sp))
       (setq p1 (polar cp (/ pi 2) d1))
       (setq p2 (polar cp 0 d1))
       (setq p3 (polar cp (/ pi -2) d1))
       (setq p4 (polar cp pi d1))
       (setq p5 (polar p1 0 (- d1 0.5)))
       (setq p6 (polar p2 (/ pi 2) (- d1 0.5)))
       (setq p7 (polar p2 (/ pi -2) (- d1 0.5)))
       (setq p8 (polar p3 0 (- d1 0.5)))
       (setq p9 (polar p3 pi (- d1 0.5)))
       (setq p10 (polar p4 (/ pi -2) (- d1 0.5)))
       (setq p11 (polar p4 (/ pi 2) (- d1 0.5)))
       (setq p12 (polar p1 pi (- d1 0.50)))
       (setq mp1 (polar cp pi (+ 1.5 d1)))
       (setq mp2 (polar cp (/ pi -2) (+ 1.5 d1)))
       (setq scp (* d1 3))
       (command 'OSMODE' 3007)
       (command 'layer' 's' 'O' '')
       (command 'zoom' 'c' cp scp)
       (cond ((and (> spx cpx) (> spy cpy))
                (progn (command 'line' p5 p8 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p5 p8 p2 '')
                 ))
             ((and (> spx cpx) (< spy cpy))
                (progn (command 'line' p10 p7 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p7 p10 p3 '')
                 ))
             ((and (< spx cpx) (> spy cpy))
                (progn (command 'line' p11 p6 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p11 p6 p1 '')
                  ))
             ((and (< spx cpx) (< spy cpy))
                (progn (command 'line' p12 p9 '')
                       (setq ss1 (ssget 'l'))
                       (command 'trim' ss1 mn '' p12 p9 p4 '')
                  ))
         )
        (command 'pedit' ss1 '' 'j' mn '' '')
        (command 'zoom' 'p')
        (command 'layer' 's' clay '')
        (command 'osmode' 3007)
        (princ)
   )