2006年12月30日星期六

参加了第一届全国土木工程结构试验与检测技术暨结构试验课教学研讨会

匆忙一行,参加了第一届全国土木工程结构试验与检测技术暨结构试验课教学研讨会,会上,几位院士(陈肇元院士,范立础院士,周锡元院士)均作了精彩的演讲。
几个发现:
第一:现在大型试验越来越多(因为大项目都很多),各大高校都参与进来了。我们所在的科研团队也参与了广州珠江新城中几个地标建筑中的试验:广东省博物馆大型桁架结构及节点试验研究,广州歌剧院复杂铸钢空间节点研究,广州西塔斜柱节点试验。同时也参与了部分工程的现场监控。可惜这次时间太紧,没有来得及上去作下报告。
第二:现在大型结构试验机越来越先进,从原来的单纯长柱压力机,发展到压力机+空间节点试验机的体系,清华大学,北京工业大学,同济大学都完成了1000-2000吨的这种大型试验机。振动台研究技术的进步,从原来的单向,双向,发展到现在的多子台阵,多点输入,甚至是国外的足尺小高层的振动台试验。
第三:试验研究正在得到重视,从国家,甲方到学校,都有了更统一的认识。真的,结构、材料都是这么复杂,试验是检验真理的唯一标准。数值模拟要作,试验更要做。
………………

非常全的武侠小说集

http://bbs.pdafans.com/thread-122272-5-1.html

有时候用PDA看看书,现在发现没有时间自己去鉴别了,要是有人推荐多的书就偶尔翻翻看,PDAFANS倒是个不错的地方,这个帖子给出了非常非常多的武侠作家的小说,虽然许多作家的作品真是够烂,但也发现了一些以前想看的书,无聊的时候可以解下闷,比如出差等机什么的。

2006年12月26日星期二

尺规作图

初中的时候尺规作图水平比现在要高的多,觉得那个时候头脑比较有灵性,而现在更多的是没有创意的工作。

所以,当highflybird兄提醒了mjtd的计算几何算法版之后,到mjtd解了几个题目,觉得算是动了一下脑筋

http://www.mjtd.com/BBS/dispbbs.asp?boardID=37&ID=52163&star=2&page=

http://www.mjtd.com/BBS/dispbbs.asp?boardID=37&ID=52733&star=2&page=

http://www.mjtd.com/BBS/dispbbs.asp?boardID=37&ID=52643&star=2&page=

http://www.mjtd.com/BBS/dispbbs.asp?boardID=37&ID=56694&page=1

其实尺规作图在现阶段更多的是头脑放松,笛卡儿的解析几何以及现在的各种约束方程解法可以使得绘图更加规范化,但同时也失去了一些乐趣。

2006年12月20日星期三

这个r14版的显示和隐藏lisp做的挺好的


;;;---------------------------------------------------------------------------;
;;;
;;; BLANK.LSP Version 1.0
;;;
;;; Copyright (C) 1995 by Autodesk, Inc.
;;;
;;; Permission to use, copy, modify, and distribute this software and its
;;; documentation for any purpose and without fee is hereby granted.
;;;
;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
;;; ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
;;; MERCHANTABILITY ARE HEREBY DISCLAIMED.
;;;
;;;---------------------------------------------------------------------------;
;;; BLANK, UNBLANK, and UNBLANKALL
;;;
;;; This module provides functions to manipulate the visibility field of
;;; AutoCAD objects. BLANK will make a selection set of objects invisible.
;;; UNBLANK will make a specified object (given its handle) visible.
;;; UNBLANKALL will make all blanked entities visible.
;;;
;;;---------------------------------------------------------------------------;


;;;---------------------------------------------------------------------------;
;;; Internal error handling.
;;;---------------------------------------------------------------------------;
(defun blank_error(s)
;; The strings in the following statements can be translated.
(if (/= s ;|MSG1|;"Function cancelled")
(princ (strcat ;|MSG2|;"\nBLANK Error: " s))
)
(setq *error* olderr)
(princ)
)

(defun unblank_error(s)
;; The strings in the following statements can be translated.
(if (/= s ;|MSG3|;"Function cancelled")
(princ (strcat ;|MSG3|;"\nUNBLANK Error: " s))
)
(setq *error* olderr)
(princ)
)

(defun blank60 (e / e2)
(if (not (null (assoc '60 e)))
(setq e2 (subst '(60 . 1) '(60 . 0) e))
(setq e2 (append e '((60 . 1))))
)
)

(defun show60 (e / e2)
(if (not (null (assoc '60 e)))
(setq e2 (subst '(60 . 0) '(60 . 1) e))
(setq e2 (append e '((60 . 0))))
)
)

(defun setvis ( vis ename / e)
(setq e (entget ename))
(if (eq vis 0)
(entmod (show60 e))
(entmod (blank60 e))
)
(entupd ename)
;; Blank vertices of polyline, if necessary
(if (eq (cdr (nth 1 e)) "POLYLINE")
(progn
(setq ename (entnext ename))
(setq e (entget ename))
(while (eq (cdr (nth 1 e)) "VERTEX")
(if (eq vis 0)
(entmod (show60 e))
(entmod (blank60 e))
)
(entupd ename)
(setq ename (entnext ename))
(setq e (entget ename))
) ; while
) ; progn
) ; if polyline
(if (and (eq (cdr (nth 1 e)) "INSERT")
(assoc '66 e))
(progn
(setq ename (entnext ename))
(setq e (entget ename))
(while (eq (cdr (nth 1 e)) "ATTRIB")
(if (eq vis 0)
(entmod (show60 e))
(entmod (blank60 e))
)
(entupd ename)
(setq ename (entnext ename))
(setq e (entget ename))
) ; while
) ; progn
)
)

(defun c:bv ( ) ;;; / olderr echo ss i ename )
(setq olderr *error* ; Redefine error handler.
echo (getvar ;|MSG0|;"cmdecho")
*error* blank_error)
(setvar ;|MSG0|;"cmdecho" 0) ; Turn off cmdecho sysvar
(command ;|MSG0|;"_.undo" ;|MSG0|;"_group")

(setq ss (ssget))
(setq i 0)
(while (< i (sslength ss)) (progn
(setq ename (ssname ss i))
(setvis 1 ename)
(setq i (1+ i))
))

(setq *error* old_error) ; restore error function
(command ;|MSG0|;"_.undo" ;|MSG0|;"_end")
(setvar ;|MSG0|;"cmdecho" echo) ; restore cmdecho sysvar
(princ) ; Quiet exit.
)

(defun c:bvv ( ) ;;; / olderr echo ss i ename )
(setq olderr *error* ; Redefine error handler.
echo (getvar ;|MSG0|;"cmdecho")
*error* unblank_error)
(setvar ;|MSG0|;"cmdecho" 0) ; Turn off cmdecho sysvar
(command ;|MSG0|;"_.undo" ;|MSG0|;"_group")

;; Select all blanked entities
(setq ss (ssget ;|MSG0|;"_x" '((60 . 1))))
(if (not (null ss))
(progn
(setq i 0)
(princ (sslength ss))
(princ " blanked entities found.\n");
;; Unblank each entity in the set
(while (< i (sslength ss)) (progn
(setq ename (ssname ss i))
(setvis 0 ename)
(setq i (1+ i))
))
)
(princ "\n0 blanked entities found.\n");
)

(setq *error* old_error) ; restore error function
(command ;|MSG0|;"_.undo" ;|MSG0|;"_end")
(setvar ;|MSG0|;"cmdecho" echo) ; restore cmdecho sysvar
(princ) ; Quiet exit.
)

(defun c:unblank ( ) ;;; / olderr echo ss i ename hand )
(setq olderr *error* ; Redefine error handler.
echo (getvar ;|MSG0|;"cmdecho")
*error* unblank_error)
(setvar ;|MSG0|;"cmdecho" 0) ; Turn off cmdecho sysvar
(command ;|MSG0|;"_.undo" ;|MSG0|;"_group")

(setq hand (getstring ;|MSG5|;"\nEnter handle of entity to be unblanked: "))
;; Unblank the entity if handle is not an empty string
(if (> (strlen hand) 0)
(progn
(setq ename (handent hand))
(if (/= nil ename)
(setvis 0 ename)
(princ ;|MSG6|;"Invalid handle.")
)
)
)

(setq *error* old_error) ; restore error function
(command ;|MSG0|;"_.undo" ;|MSG0|;"_end")
(setvar ;|MSG0|;"cmdecho" echo) ; restore cmdecho sysvar
(princ) ; Quiet exit.
)
(princ)

带翼钢筋最小配筋率试验

近日完成了15块 采用冷轧带翼钢筋的混凝土板的最小配筋率试验
其中,采用φ8的0.15%的配筋率的板具有一定的延性。

2006年12月15日星期五

excel多个文件合并的宏程序

用东华DH 3815N进行数据测试的时候,会导出许多的excel文件来,下面是一个将所有文件合并在一起的简单宏程序, 注意,限制条件:1)文件名依次按照1~114命名;2)合并的时候只选择了所有文件的第二行进行合并,如不同于这个限制条件,请自己修改。

Sub 宏1()
'
' 宏1 宏表
' Fantasy记录的宏2006-6-12
'
'ChDir "E:\1"
'Workbooks.Open FileName:="E:\1\1.xls"

For i = 2 To 114
abc = "e:\1\"
def = ".xls"
file1 = Format(i)
FileName = abc + file1 + def

Workbooks.Open FileName:=FileName
Rows("2:2").Select
Selection.Copy
Windows("1.xls").Activate

row1 = Format(i +1)
rowname = row1 + ":" + row1

Rows(rowname).Select
ActiveSheet.Paste
Next i

有限元网格划分软件truegrid的textpad语法高亮文件

; truegrid是一个很有趣的有限元网格划分程序,里面应用了映射等有趣的概念
;下面是我做的一个关于truegrid的textpad语法高亮文件
; keyword syntax file for Turegrid
; Copyright (C) 2005, qjchen, http://autolisper.googlepages.com

C=1

[Syntax]
Namespace1 = 6
IgnoreCase = Yes
InitKeyWordChars = A-Za-z_`
KeyWordChars = A-Za-z0-9_
PreprocStart =
SyntaxStart =
SyntaxEnd =
CommentStart =
CommentEnd =
CommentStartAlt =
CommentEndAlt =
SingleComment = #
SingleCommentCol =
SingleCommentAlt =
SingleCommentColAlt =
StringStart = "
StringEnd = "
StringAlt =
StringEsc = \
CharStart =
CharEnd =
CharEsc =

[Preprocessor keywords]

[Keywords 1]
caption
display
draw
grid
postscri
rindex
sdint
set
slice
triad
tvv
ad
pad
dad
dads
daad
aad
raad
rad
l
r
u
d
rx
ry
rz
trans
fix
unfix
scale
xscl
yscl
zscl
zb
zf
angle
reso
restore
center

[Keywords 2]
de
dei
hierarc
insprt
mseq
orpt
update
mb
mbi
pb
pbs
coore
tr
tri
ilin
ilini
ma
pa
q
mb
mbi
pb
pbs
cooref
tr
tri
ilin
ilini
ma
pa
q
cur
curf
cure
curs
edge
esm
esmp
hyr
lin
lini
relax
relaxi
splint
tf
tfi
tme
tmei
unifm
sf
sfi
spp
tmplt
patch
ms
sf
sfi
spp
tmplt
patch
ms
res
drs
as
das
nds
dom
x=
y=
z=
t1=
t2=
t3=
history
actcmd
decmd
undo
arg
argi
darg
darged
rg
rgi
rrg
rrgi
strghl
strghli
clrghl
labels
fd
fdi
fdc
fdci
fds
fdsi
frb
frbi
fv
fvi
fvc
fvci
fvs
fvsi
bv
bvi
acc
acci
accc
accci
accs
accsi
fvv
fvvi
fvvc
fvvci
fvvs
fvvsi
vacc
vacci
vaccc
vaccci
vaccs
vaccsi
rotation
velocity
ve
vei
arri
dist
csf
fa
fai
fc
fci
fcc
fcci
fcs
fcsi
ll
mdep
mom
momi
ndl
ndli
pr
pri
pramp
b
bi
cfc
cfci
fbc
fbci
jt
il
ili
lb
lbi
mpc
namreg
namregi
nr
nri
ol
oli
reg
regi
sfb
sfbi
sw
swi
syf
syfi
trp
bf
bfi
cv
cvi
vcv
vcvi
cvt
cvti
fl
fli
vfl
vfli
ft
fti
vft
vfti
hfl
hfli
inizone
inizonei
setsor
setsori
rb
rbi
vrb
vrbi
re
rei
te
tei
temp
tepro
tm
tmi
vtm
vtmi
vhg
vhgi
vvhg
efl
efli
mp
mpi
v
vi
npm
pm
spdp
spring
bb
bbinfo
dbb
rbb
abb
dbbs
rbbs
abbs
dabb
rabb
bbint
flowint
flowinti
iss
issi
si
sii
trbb
mate
mt
mti
mtv
por
pori
sc
ibm
ibmi
jbm
jbmi
kbm
kbmi
n
or
ssf
ssfi
th
thi
thic
elm
elmoff
mea
meai
endpart
savepart
lrep
grep
fn
fni
epb
npb
supblk
rt

[Keywords 3]

ld
apld
lcc
ckl
gset
mazt
lcd
lcinfo
ld3d2d
ldinfo
ldprnt
lrl
lrot
lsca
lscx
lscz
lt
flcd
edgefile
rln
rlns
lp2
lq
lpil
lpta
ltas
lep
lod
lnof
lfil
lap
lar
ltp
lpt
lat
lad
lvc
lstl
ltbc
ltbo
lint
csp2
fws2
ctbc
ctbo
ftbc
ftbo
rseg
lcv
lv
lvi
lvs
curd
igc
sdedge
lp3
contour
csp3
bsp3
nrb3
ld2d3d
intcur
lp3pt
3dfunc
projcur
pscur
arc3
cpcd
cpcds
twsurf
dcd
dcds
dacd
acd
acds
rcd
rcds
racd
lacd
cdinfo
rmseg
delcd
delcds
accuracy
getol
npll
project
sd
trsd
sdinfo
vd
plan
iplan
pl3
pl3o
xyplan
yzplan
zxplan
cy
xcy
ycy
zcy
sp
er
cone
cn2p
pr
ts
cr
crx
cry
crz
r3dc
cp
swept
rule2d
rule3d
crule3d
function
mesh
nurbs
igess
igesp
face
faceset
intp
sds
pipe
blend3
blend4
csps
bsps
nrbs
stl
bstl
asd
asds
ansd
dasd
dsd
dsds
lasd
rasd
rsd
iges
igesfile
igescd
igeslbls
igespd
igessd
nurbsd
saveiges
trimming
ltrim
useiges
vpsd
wrsd
alv
dlv
dlvs
rlv
agrp
dgrp
dgrps
rgrp


[Keywords 4]

mnl
pn
ajnp
cenref
centroid
elm
elmoff
info
mass
measure
pmass
reference
size
tmass
backplane
dpic
noplot
plot
rpic
condition
labels
av
avc
shv
sv
exp
expoff
iniexp
mexp
pexp
sclexp
tmm
buoy
delmats
am
ams
dam
dms
dm
ram
rm
rms
iss
si
npm
pm
pminfo
spring
delspd
delspds
bm
delem
etd
linear
quadratic
partmode
acc
bv
fd
fv
frb
fvv
vacc
ve
fa
fc
ffc
fmom
mom
pr
b
cfc
fbc
il
infol
mpc
nr
ol
rigid
rml
rsl
spotweld
spw
spwd
spwf
sw
syf
trp
bf
cv
cvt
fl
ft
rb
re
te
tepro
tm
vvhg
efl
mp
v
adnset
crvnset
delset
eset
fset
infol
mvnset
nset
nsetc
fsetc
esetc
nsetinfo
onset
rml
rsl
rvnset


[Keywords 5]
shso
block
cylinder
readmesh
blude
beam
cbeam
ap
aps
dap
dp
dps
pinfo
rap
rp
rps
rotation
velocity
detp
jd
jtinfo
lsys
lsysinfo
plane
plinfo
temp
bfd
spd
spinfo
getbb
sid
bsd
bsinfo
bind
lsbsd
offset
sind
lct
gct
lev
pslv
pplv
csca
xsca
ysca
zsca
xoff
yoff
zoff
gexch
exch
gmi
lmi
gsii
lsii
becho
c
crprod
curtyp
dc
distance
echo
end
errmod
expressions
include
inprod
interrupt
intyp
painfo
para
resume
title
tpara
tricent
caption
mxp
if
elseif
else
endif
merge
mns
st
stp
t
tp
ztol
bptol
ptol
rigbm


[Keywords 6]
epb
npb
ndigits
save
verbatim
abaqus
ale3d
ansys
autodyn
cf3d
cfd-ace
cfx
dyna3d
es3d
exodusii
fidap
fluent
gemini
gridgen3d
iri
lsdyna
lsnike3d
marc
nastran
nike3d
nekton2d
nekton3d
neutral
refleqs
starcd
plot3d
poly3d
tascflow
topaz3d
viewpoint
abaqstep
ansyopts
dynaopts
lsdyopts
marcopts
nekopts
nikeopts
lsnkopts
tz3dopts
abaqmats
ansymats
ansynl
dynaeos
dynamats
nastmats
lsdymats
lsdyeos
nikemats
lsnkmats
marcmats

2006年12月13日星期三

扫雷游戏之中国高手

以前一直关注的是
http://metanoodle.com/minesweeper/
的外国高手情况,现在世界记录已经是38秒多了。
昨天才发现一个国内高手的帖子:
【走向中国扫雷第一之路】
http://post-js.baidu.com/f?kz=141128520
还是很佩服他的。
我有同学也是61秒左右,看来也很有潜力突破了。:)

对广东科学中心施工监测之仿真建模,ansys,sap2000

去年研究团队对广东科学中心进行了施工监测,包括现场及仿真分析。
建模部分采用了autocad建模,通过自编转接程序一次性将截面特性,材料特性,单元定位等特征导入到ansys里,再通过自编APDL语言将ANSYS中所有构件的荷载、截面、约束等导入到sap2000里面进行分析,实现双控。下面图片是导到sap2000中的结构。
本次仿真分析涉及14万平方米的空间结构。






sat2etabs在超高层结构设计中的应用初探



sat2etabs在超高层结构设计中的应用初探
不久前用sat2etabs作了一个60多层的结构方案设计的PKPM到ETABS的转换,涉及到7种结构形式。
总体感觉,sat2etabs作的还挺细的,成功率也颇高。
不过加上荷载之后的导入速度非常慢,有时候需要20分钟。
计算得到的周期不是很接近,etabs的更小些。
风载和地震载需要自己添加,其中地震载不要用LOAD CASE里面的EARTHQUAKE LOAD,要用反应谱。

2006年12月10日星期日

一个梁柱交接位置的直线修剪lisp程序

今天,在这里灌了一篇水
http://www.xdcad.net/forum/showthread.php?s=&threadid=562316&pagenumber=2

以前编过一个14版的圆,多边形内的直线批量修剪程序。
由于代码编写比较乱,一直想用vlisp重新写一下。
期间学习
aeo版主的“自动扩展修剪”(利用xdapi)
eachy兄的”利用ET中的FS写的一个简单的修剪内部线 “(利用et的fastsel)
snsj兄的“图形切割程序”(利用et的extrim)
...............................................................
受益颇多。
也想锻炼一下能否用vlisp,不用extrim编写相关程序。顺带问一下,为什么extrim在运行的时候会屏幕闪一下,有点像zoom的情况呢。
近日仔细阅读了John Uhden(John Uhden:写了不少用@开头的通用函数,http://www.cadlantic.com/)的trimlineinside函数之后,在其代码的基础上(原代码占80%以上比重)写下了如下的一段代码,用于修剪圆,文字,lwpolyline多边形。其原函数可以在其网站上下到,主要是考虑一个boundary和一个Line进行剪切处理,没有考虑线直接穿过boundary的情况,本代码主要加了这个部分,添加了文字的处理和多边形内部的erase清理的内容。在此多谢John Uhden。
其实我主要利用后两者来进行我们结构专业的梁柱交接处的修剪问题。命令为test.
刚刚发现这个程序的作用和eachy兄的这个程序有点类似,于是跟帖在这里了,eachy版主别怪:)
程序缺陷:对于凹多边形,直线的两段在凹多边形内部等几种情况会出现问题

代码这里不能缩进,可以看原文

图象:

2006年12月7日星期四

建筑结构方面比较好的字典、翻译软件

用了不少字典、翻译程序,觉得对建筑结构专业都不是特别好,许多的词都没有, 只能查厚厚的纸质字典比较实在。
其中,雅信是比较好的翻译软件,用它翻了不少结构方面文献的全文,结构词库比较让人满意。
金山词霸几乎没有结构方面的字典,星际译王和灵格斯用的是开源字典,也没有结构字典。
而像华建词典和科技词典也都不强,只能希望什么时候土木行业的字典也能被人整理和开源了:)

一个把面积为0的3DFACE转换成为点的程序




;昨天遇到的问题是从3dsmax里面导出图形到cad中,由于打碎之后存在着许多的3dface,四个
;点坐标都一样的情况,3dface比较奇怪,无法捕捉,于是花2分钟编了下面这个程序来将
;这类3dface相应的位置绘制上一个点,超级简单的程序:)
(defun c:test (/ a b i ent dxf10 dxf11 dxf12 i)
(setq a (ssget '((0 . "3DFACE"))))
(setq b (sslength a)
i 0
)
(repeat b
(setq ent (entget (ssname a i)))
(setq dxf10 (cdr (assoc 10 ent)))
(setq dxf11 (cdr (assoc 11 ent)))
(setq dxf12 (cdr (assoc 12 ent)))
(setq dxf13 (cdr (assoc 13 ent)))
(cond
((and
(equal dxf10 dxf11)
(equal dxf11 dxf12)
(equal dxf12 dxf13)
)
(make_point dxf10 1)
)
)
(setq i (1+ i))
)
)
(defun make_point (l10 color)
(ENTMAKE (LIST (CONS 0 "POINT") (cons 62 color) (cons 10 l10)))
)

2006年12月6日星期三

一个不很成熟的变参数批量分析的ANSYS程序

!为了批量研究变化参数得到的结果变化,进行批量分析(采用的是不断新建模型的方法)
!里面有不少参数还没有变为DO和ENDDO的方法
!还需继续改进
!华南理工大学 建筑学院 qjchen
!http://chenqj.blogspot.com
D=400
!b=100
!h=100
num1=10
num11=num1+1
num21=num11+num1
num31=num21+num1
num3=num1*3
num2=num1*2
cnum=4


*CFopen,myout,out
*DO,I,1,cnum,1
*DO,J,1,cnum,1
dh=I/2*D
db=J/2*D
/PREP7
ET,1,SHELL63
R,1,0.5
MP,EX,1,2E11
MP,NUXY,1,0.2
*DO,ROW,0,num1,1
*DO,COL,0,num3,1
*IF,COL,LT,num11,THEN
N,ROW*num31+COL+1,db*COL/num1-D*0.5-db,ROW*dh/num1,0
*ELSEIF,COL,LT,num21
N,ROW*num31+COL+1,-D*0.5+D*(COL-num1)/num1,ROW*dh/num1,0
*ELSE
N,ROW*num31+COL+1,db*(COL-num2)/num1+D*0.5,ROW*dh/num1,0
*ENDIF
*ENDDO
*ENDDO
*DO,ROW,0,9,1
*DO,NNUM,31*ROW+1,31*ROW+30,1
E,NNUM,NNUM+1,32+NNUM,31+NNUM
*ENDDO
*ENDDO
NAME=STRCAT(STRCAT('H',CHRVAL(I/10)),STRCAT('B',CHRVAL(J/10)))
!SAVE,NAME,DB
FINISH
/SOLU
D,11,,,,,,UX
D,11,,,,,,UY
D,21,,,,,,UY
D,12,,,,,,UY
D,13,,,,,,UY
D,14,,,,,,UY
D,15,,,,,,UY
D,16,,,,,,UY
D,17,,,,,,UY
D,18,,,,,,UY
D,19,,,,,,UY
D,20,,,,,,UY
F,321,FY,-100
F,322,FY,-100
F,323,FY,-100
F,324,FY,-100
F,325,FY,-100
F,326,FY,-100
F,327,FY,-100
F,328,FY,-100
F,329,FY,-100
F,330,FY,-100
F,331,FY,-100
NAME1=STRCAT(NAME,'_FORCE')
!SAVE,NAME1,DB
!/output,dd,myout,,
SOLVE
/post1
set,first
*do,jjj,156,186,1
nodenow=jjj
*GET,sz,NODE,jjj,S,Z
*GET,sx,NODE,jjj,S,X
*GET,sy,NODE,jjj,S,Y
*vwrite,('b:'),db,(' h:'),dh,(' i:'),jjj,(' sx:'),sx,(' sy:'),sy,(' sz:'),sz
(A3,F6.0,A3,F6.0,A3,F6.0,A4,F10.2,A4,F10.2,A4,F10.2)
*enddo
NAME1=STRCAT(NAME,'_RESULT')
!SAVE,NAME1,DB

FINISH
/PREP7
EDELE,ALL
NDELE,ALL
FINISH
*ENDDO
*ENDDO
*cfclos

2006年12月5日星期二

一段绘制空间扭网壳的ANSYS代码(APDL)



!下面一段话是在ANSYS中绘制空间扭网壳的APDL代码
!华南理工大学 建筑学院 qjchen
!http://chenqj.blogspot.com
!虽然到现在杂乱地学了10来种语言,也考过什么程序员的,但发现许多时候的计算机编程应用经
!常集中在文本格式转换,简单的循环,数列通项公式的查找方面,都是最简单的东西。
!不过也不算白学,好歹大部分语言现在硬着头皮都能看懂,也不错
/prep7
Rad=30000
num=11
pi=atan(1)*4

!draw the control point
k,1,0,-Rad,0.2*Rad
k,num,Rad*sin(30*pi/180),-Rad*cos(30*pi/180),-0.1*Rad
k,num*num-num+1,-Rad*sin(30*pi/180),-Rad*cos(30*pi/180),-0.1*Rad
k,num*num,0,0,0.1*Rad


!draw the four edge point
kfill,1,num,,,1
kfill,num*num-num+1,num*num,,,1
kfill,1,num*num-num+1,num-2,,num
kfill,num,num*num,num-2,,num

!draw the other point
*do,j,2,num-1,1
kfill,(j-1)*num+1,(j-1)*num+num,,,1
*enddo

!draw the 45 deg line
lnumbef=lsinqr(0,14)+1
*do,j,1,num,1
*do,i,1,num-1,1
lstr,(j-1)*num+i,(j-1)*num+i+1
*enddo
*enddo
lnumaft=lsinqr(0,14)
lsel,r,,,lnumbef,lnumaft,1
cm,lineup45,line


!draw the 135 deg line
lnumbef=lsinqr(0,14)+1
*do,i,1,num,1
*do,j,1,num-1,1
lstr,(j-1)*num+i,(j-1)*num+i+num
*enddo
*enddo
lnumaft=lsinqr(0,14)
lsel,r,,,lnumbef,lnumaft,1
cm,lineup135,line


!draw the 90 deg line
lnumbef=lsinqr(0,14)+1
*do,j,1,num-1,1
*do,i,1,num-1,1
lstr,(j-1)*num+i,j*num+i+1
*enddo
*enddo

!copy up to down keypoint
kplot
allsel
kgen,2,1,num*num,1,,,-0.2*Rad,10000

!copy up to down line
lplot
allsel
dd=lsinqr(0,14)
lgen,2,1,dd,1,,,-0.2*Rad,10000

KSEL,ALL
kplot

!draw all the ver member
*do,j,1,num,1
*do,i,1,num,1
lstr,(j-1)*num+i,(j-1)*num+i+10000
*enddo
*enddo

/vup,1,z
!draw the 45 deg lean member
*do,j,1,num,1
*do,i,1,0.5*(num-1),1
lstr,(j-1)*num+i,(j-1)*num+i+1+10000
*enddo
*enddo

*do,j,1,num,1
*do,i,0.5*(num+1),num-1,1
lstr,(j-1)*num+i+10000,(j-1)*num+i+1
*enddo
*enddo

!draw the 135 deg lean member
*do,i,1,num,1
*do,j,1,0.5*(num-1),1
lstr,(j-1)*num+i,(j-1)*num+i+num+10000
*enddo
*enddo

*do,i,1,num,1
*do,j,0.5*(num+1),num-1,1
lstr,(j-1)*num+i+10000,(j-1)*num+i+num
*enddo
*enddo

!draw the 90 deg lean member
*do,i,1,num-1,1
*do,h,1,num-i,1
*if,h,LE,0.5*(num-i),Then
lstr,i+(h-1)*(num+1),i+h*(num+1)+10000
*else
lstr,i+(h-1)*(num+1)+10000,i+h*(num+1)
*endif
*enddo
*enddo

*do,i,2,num-1,1
*do,h,1,num-i,1
*if,h,LE,0.5*(num-i),Then
lstr,i+(h-1)*(num+1)+(num-1)*(i-1),i+h*(num+1)+10000+(num-1)*(i-1)
*else
lstr,i+(h-1)*(num+1)+10000+(num-1)*(i-1),i+h*(num+1)+(num-1)*(i-1)
*endif
*enddo
*enddo


!draw the area
*do,i,1,num-1,1
*do,j,1,num-1,1
a,(j-1)*num+i,(j-1)*num+i+1,(j-1)*num+i+num+1
a,(j-1)*num+i,(j-1)*num+i+num,(j-1)*num+i+num+1
*enddo
*enddo

2006年12月4日星期一

DIESEL也有意想不到的强大功能

一直以来没有怎么用过DIESEL编程,觉得其功能不怎么样
最近在这里看到几篇关于DIESEL的文章,觉得还挺有用的。
比如,要找出用“,”隔开的字符串,它有些作用。
(defun 3rd (string)
(menucmd (strcat "m=$(index,2,\"" string "\")"))
)

这个函数是拿来找字符串中对应第三个
“,”的单词

这个地址是http://www.crlf.de/Dokumente/Diesel/Diesel.html


windows下的lisp编程环境newlisp

一直学的是autocad下的lisp,它还有许多的局限性,也想向普通的lisp学习一下。
现在发现一个很小的软件-newlisp,具有一定的普通LISP功能,其中还包括矩阵求逆一类的函数,不妨来试试,也下载了WIN下的Corman lisp和gci,希望有空看看它们的异同。
http://newlisp.org/

2006年12月3日星期日

Autocad 外挂程序 热键程序 Autohook 的使用

Autohook是一个著名的autocad外挂程序,用于定义热键

autohook的用法,
很简单,安装之后就会在右下角出现一个程序图标,注意不同版本cad有不同版本的autohook
它的作用其实就是用键盘的键来定义命令,有点象图标工具的作用。

如何用:
比如,我们想把tab键定义为正交,也就是原来F8的功能,那么,打开autohook,按下tab键,然后在new后面的文本框里面键入:《'^o 》不包括书名号,然后点save,那么,以后在画图中就可以用tab来代替F8键了

比如,我们想定义'这个在1旁边的键为特性匹配,那么,那么,打开autohook,按下'这个键,
然后在new后面的文本框里面键入:《_matchprop 》不包括书名号,然后点save,那么,以后在画图中就可以用'来代替F8键了

怎么样,又有点速度提升了吧:)

2006年12月1日星期五

关于SAP2000和ABAQUS的文件转换问题

关于SAP2000和ABAQUS的文件转换问题
总是有一些时候必须在不同的软件中进行格式转换。最近遇到的问题是准备利用abaqus强大的弹塑性分析功能和SAP2000的快速建模功能来实现某些弹塑性动力时程分析。
由于SAP2000有比较明确的文件格式.S2K,那么可以通过一定的方式转换为ABAQUS的.DAT格式。
最简单的方法莫过于采用ABAQUS内置的PYTHON语言进行开发转换了,就可以省去中间软件的过程。
大概用一小段(2、30句)就可以实现几何方面的连接了。
下面是一段梁单元的转换过程。版本是sap2000 7.44,abaqus 6.5.1

这个文件保存为.py格式,第一第二句的文件名和目录改一下,可以实现sap2000中梁的就可以把7.44的sap2000的s2k文件转换成abaqus的dat文件了.(里面有一句梁单元赋予的话没有写,在导入abaqus之前,可以修改一下dat文件,:p,偷懒了

其实只是一种思路而已,程序本身并没有什么。
py文件的内容大致如下(由于blogspot会自动删除空格,下面的代码不能直接使用,还是下载那个py文件的好
f=open('e:/work/new/mys2k.s2k', 'r')
fw=open('e:/work/new/mys2k.inp', 'w')
print f
f.seek(0)
alllines=f.readlines()
i=0
for x in alllines:
i=i+1
j=0
for x in alllines:
if (x.find("JOINT\n")<>-1):
indexjoint=j
if (x=="RESTRAINT\n"):
indexres=j
if (x=="FRAME\n"):
indexframe=j
if (x=="LOAD\n"):
indexload=j
j=j+1
temp=indexjoint+1
temp1=indexres-1
fw.write("*node\n")
for x in alllines[temp:temp1]:
y=x.split(" ")
nodenum=y[2]
nodex=y[4]
nodexw=nodex[2:]
nodey=y[6]
nodeyw=nodey[2:]
nodez=y[8]
nodezw=nodez[2:]
all=nodenum+","+nodexw+","+nodeyw+","+nodezw
print all
fw.write(all)
temp2=indexframe+1
temp3=indexload-1
fw.write("*element\n")
for x in alllines[temp2:temp3]:
y=x.split(" ")
elenum=y[2]
eleij=y[4]
eleijw=eleij[2:]
all1=elenum+","+eleijw+"\n"
print all1
fw.write(all1)
f.close()
fw.close()

2006年11月30日星期四

Totalcmd (Total Commander 7)的令人愉悦的新功能

Totalcmd (Total Commander 7)的令人愉悦的新功能
(华南理工大学 qjchen)

用Totalcmd也有8年的,是很早时候OLDFAT兄介绍的3.5开始,最近总算看到版本翻倍的时候了。许多软件我都懒得去更新,比如office一直用的是97的,还觉得只用到极少的功能,autocad还用14的等等,但是基本上Totalcmd我是跟着升级的,还不断到www.totalcmd.net更新插件。

7.0虽然还是beta版,但毕竟是个大号版本的更新,还是有不少新功能的,DRL有朋友已经全部翻译了更新,这里就不重复,贴几张TC的更新图片吧。

1)图标变得漂亮(用了大图标,为了显示而已),感觉颇是淡雅的感觉。

2)给同时喜欢资源管理器的朋友增加了侧边栏(一个或者两个)

3)命令行的自动补全,向win+r和typeandrun靠齐了


4)单双行颜色不同的选项,记得以前有一个非常类似TC的程序有这样的功能,竖列还有虚线可以选,比现在的TC还要好些,不过相信TC会越做越好。

5)可以用简单的按键,比如F1,或者一个名称,如nn,来调用TC内部函数和其他外部函数了,这个就是它的HOTKEY或者ALIAS功能了。以前在config-misc里面,只能用到内部程序,而在start里面,调用的基本是ctrl+alt+F1之类比较难按的按键。


2006年11月29日星期三

ADOBE CAPTIVATE2真不错

原来的ROBODEMO,后来的MACROMEDIA CAPTIVATE 1,现在的ADOBE CAPTIVATE2挺好用的,看到有用它做的flash,挺简单易用的。
会自动添加许多的提示。

2006年11月28日星期二

snagit8让人开心的地方

2006.9.12 snagit8让人开心的地方

之前一直用hypersnapspx instant screen capture来抓图,snagit是6的时候用了一下,最近用snagit,发现也有不错的地方。

1. 抓窗口中的文字,它不是OCR,是把一些截面或者菜单里面的文字抓出来。以前装过一个desktop experience,可以完成这个,好像比snagit的来的更简单,可惜不是很稳定。现在snagit可以做的不错。不知道为什么,抓图软件好像抓自己总是有点麻烦,只能动用hypersnap来抓这个图了。


2. 增加了边缘效果,比spx还要多一些。
3. snagit网页的输出,比较怪异,可以把网页变成图片(自动滚动捕捉),然后保持其链接。可以存为pdf或者swf或者mht格式(这种可以点到连接)。
4. 有些挺优雅的图形处理效果



5.对象抓取,以前用hypersnap或者spx都没有抓到这个rocketdock的图,现在终于抓到了,不知道它抓屏幕保护的图怎么样?


5. 延时菜单的捕捉,等待几秒钟后出现的菜单
比如这种结构



6. 定时捕捉定时存盘。

7.网页中的图片,这个功能不知道和先存为html,然后去目录里面拷贝有没有太大的差别,否则也没什么。

一些我还不会用或者它本身没有的功能。
1. 怎么进行横向纵向同时滚动的功能?有些页面就是这么不可理喻。
2. 怎么抓自己界面。

OPENSEE软件的简单介绍

OPENSEE软件的简单介绍
(华南理工大学 建筑学院 陈庆军)

前两年曾经下过opensee,并把所有的例子做了一遍,勉勉强强知道怎么回事,记下来权当是学习日记吧:)

What is OpenSees?
(Open System for Earthquake Engineering Simulation)
An object-oriented software framework for simulation applications in earthquake engineering using finite element methods. OpenSees is not a code.
(面向对象的软件框架,采用有限元方法对地震工程进行仿真)

Opensee 的特点:
+ The library of materials, elements and analysis commands makes OPENSEES a powerful tool for numerical simulation of nonlinear structural and geotechnical systems (可用于非线性结构、岩土分析的丰富的材料,单元库及分析手段)
+ The OpenSees library of components is ever-growing and at the leading edge of numerical-simulation models
(一个领先且不断进步的数值模型库)
+ The opensees interface is based on a command-driven scropting language which enables the user to create more-versatile input files (基于脚本语言可以创建非常灵活的输入文件)
+ OpenSees is not a black box, making it a useful educational tool for numerical modeling (非黑箱操作,适用于科学研究)
+ You can create your own material, element or analysis tools and incorporate them into OpenSees (可以自定义材料和单元库,并整合到opensees里面)
+ NEES is supporting integration of OpenSees as the simulation componenet of laboratory testing (NEES(network of earthquake engineering system)支持OPENSEES作为试验室试验的仿真组件)


Opensee 的单元库:
 Truss Element(桁架单元)
 Corotational Truss Element (同步旋转桁架单元?)
 Elastic Beam Column Element (弹性梁柱单元)
 Nonlinear Beam Column Element (非线性梁柱单元)
 Beam With Hinges Element (带塑性铰梁单元)
 Displacement-Based Beam-Column Element (分布塑性,基于位移梁柱单元)
 Zero-Length Element(0长度单元)
 Zero-Length ND Element(0长度ND材料单元)
 Zero-Length Section Element (0长度截面单元)
 Quad Element(4节点单元)
 Shell Element(考虑剪切的壳单元)
 Bbar Plane Strain Quadrilateral Element (一种用于平面应变的单元)
Enhanced Strain Quadrilateral Element(增强型应变单元)
 Standard Brick Element(标准8节点实体单元)
 Bbar Brick Element(8节点Bbar实体单元)
 Eight Node Brick Element (有不同体力方向的8节点实体单元)
 Twenty Node Brick Element(20节点实体单元)
 u-p-U element(可建立8节点或者20节点实体单元)
 FourNodeQuadUP Element (用于流固完全耦合的平面应变单元)
 BeamColumnJoint Element(梁柱节点单元)


Opensee 的材料库:
Elastic Material (弹性材料)
Elastic-Perfectly Plastic Material (理想弹塑性材料)
Elastic-Perfectly Plastic Gap Material (理想弹塑性间隙材料)
Elastic-No Tension Material (弹性不能受拉材料)
Parallel Material(并联材料)
Series Material (串联材料)
Hardening Material(硬化材料)
Concrete01 Material -- Zero Tensile Strength (基于Kent-Scott-Park的无抗拉段混凝土材料)
Concrete02 Material -- Linear Tension Softening (线性受拉软化的混凝土材料)
Concrete03 Material -- Nonlinear Tension Softening (非线性受拉软化的混凝土材料)
Steel01 Material (双折线钢材)
Steel02 Material (Giuffré-Menegotto-Pinto等向硬化钢材)
Hysteretic Material (滞回材料)
Viscous Material(黏性材料)
BARSLIP Material (钢筋滑移材料)
Bond_SP01 (应变渗透型模型用于模拟钢筋锚固段)
Concrete04 Material (Popovics混凝土材料,可以考虑静水压力)
Fatigue Material(疲劳材料)
Limit State Material(极限状态材料)
PINCHING4 Material (pinchin4捏缩材料)
PyTzQz Uniaxial Materials(模拟土——结构共同工作的材料模型)
Reinforcing Steel Material(钢筋材料)


Opensee 使用:
1)安装过程:
1. 到网站上下载opensee
现在版本是1.73,可以直接下载exe或者下载源码回来编译,源码是c++语言编写的,采用CVS(concurrent version system),方便大家共同修改。还有一个写程序的约定,方便后来人认识你的代码。
2. 到网站上下载TCL/TK
一个现在比较流行的脚本语言,也可用于某些界面设计,比如现在有些ANSYS的开发也用到它。
安装过程:
TCL/TK官方网站建议安装目录:
C:\program files\tcl,而非C:\tcl
注意:TCL/TK是个平台,和OPENSEE不是一家公司

安装完了之后是一个ActiveTCL(TCL的平台之一,就如Borland C,Turbo C有多家公司一样),可以参考activeTCLHelp.chm了解一下它的使用。
接下来安装一个Opensee TCL editor
将其释放到c:\tcleditor这个目录下
把opensees拷贝到这个目录吧
打开其目录下的tcleditor.conf,可以看到
exe C:\tcleditor\bin\openSees.exe
editor C:\tcleditor\bin\tcleditor.exe
bin C:\tcleditor\bin\
help C:\tcleditor\help\
所以要把opensees.exe拷贝到这个bin目录下

Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路 CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使 Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了 Tcl (Tool Command Language) 语言的产生。Tcl 最初的构想的是希望把编程按照基于组件的方法 (component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的 Java 不谋而合。终于在 1988 年的春天, 这种强大灵活的胶水 - Tcl 语言被发明出来了。


一些要点:
1)暂时没有界面
2)有高亮显示
3)基本分为:前处理所需几何数据段,荷载约束段,求解控制段,数据输出控制段等几个方面

求解过程:
1)出现了一个叫做tcl84.dll的组件没有找到的情况。
查找,知道它在tcl的目录下,
按win+pause键,找到系统变量,发现这个目录已经添加,所以做法是:重启一遍就可以了
不然,把文件拷贝过来也是一种方法。

1)查看刚才的目录,可以看到存在了几个文件
有element1.out和node3.out
这个是文件里面的record控制的。把数据打开,进入到图表绘制系统里面,可以看到一些结果

(还有不少的图片和后续东西,一时发不上来,有时间再来添加了)





钢筋混凝土非线性有限元软件diana的textpad语法高亮文件

学习非线性有限元软件diana好一段时间了,在去年的时候,为了编写他的fgc文件,编写了一个基于文本编辑器textpad的语法高亮程序,方便查错,做的效果还比较一般,如下,勉强够用。
以前还做过truegrid,ansys,abaqus等的语法高亮,觉得挺有趣的。

这个附件文件且等我放到其他地方,才方便下载,或者把以下这段文字保存为diana.syn,再到textpad中设置


; SYNTAX FILE FOR DIANA [QJCHEN, qjchen@gmail.com]

C=1

[SYNTAX]
NAMESPACE1 = 6
IGNORECASE = NO
INITKEYWORDCHARS = A-ZA-Z_
KEYWORDCHARS = A-ZA-Z0-9@*-'`
BRACKETCHARS = {}[]
PREPROCSTART =
SYNTAXSTART =
SYNTAXEND =
COMMENTSTART =
COMMENTEND =
SINGLECOMMENT = !
SINGLECOMMENTCOL =
SINGLECOMMENTALT =
SINGLECOMMENTCOLALT =
SINGLECOMMENTESC = \
STRINGSSPANLINES = YES
STRINGSTART = "
STRINGEND = "
STRINGESC = \
CHARSTART = '
CHAREND = '
CHARESC = \

[KEYWORDS 1]
$#
ECHO=NO
RESULT
ANALYSE
ASSEMBLE
AUXILIARY
CONSTRUCT
DRAWING
EYE
FEMGEN
FEMVIEW
FILE
GEOMETRY
INDEX
LABEL
MESHING
MONTAGE
PRESENT
PROPERTY
REINFORCE
RESULTS
SAVE
STOP
UTILITY
VIEW

[KEYWORDS 2]
MODEL
COORDSYS
LINE
LMASK
MERGE
NAME
PARAMETER
SCURVE
SET
SHAPE
SPACE
TCURVE
TRANSFRM
ANIMATE
CONTENTS
DISPLAY
RECOVER
SAVE
VIEWPORT
ANGLE
DIRECTION
FRAME
PERSPECT
ROTATE
SHIFT
WALK
ZOOM
NORMAL
LOCATE
POINT
LINE
LCMB
SURFACE
BODY
MOVE
COPY
SWEEP
SPLIT
FLIP
FILLET
UNSPLIT
OPTIONS
COPY
DELETE
GRAPH
LOG
MEASURE
NAME
OPTIONS
READ
SETUP
TABULATE
UNDO
UPDATE
UNLOCK
WRITE
MESH
SHAPE
PMODIFIER
OPTIONS
CANCEL
DIVISION
ELEMENT
GENERATE
MERGE
NODE
OPTIONS
SHAPE
SMOOTH
RENUMBER
TYPES
OVERLAY
CLOSE
SAVE
RECOVER
STATUS
CONTOUR
DIAGRAM
DISC
GRAPH
NUMERIC
OPTIONS
PEAKS
SHAPE
SYMBOL
VECTORS
ATTACH
BOUNDARY
FE-PROG
INITIAL
LOADS
MATERIAL
PHYSICAL
BAR
GRID
ATTACH
MOVE
COPY
SET
LOADCASE
NODAL
ELEMENT
GAUSSIAN
INVARIANT
RANGE
STACK
CALCULATE
TRANSFORM
OFF
CURRENT
BACKUP
HIDDEN
ELEMENT
OPTION

[KEYWORDS 3]
CYLINDER
PLANE
TO
CLEAR
ADD
SHADE
SHELL
CONSTRNT
PLOTFILES
LOADCASES
MODESHAPE
COMPLEX
DTX....G
DTX
DTY
DTZ
TDTX...G
TDTX
TDTY
FRX....G
FRX
RESDTX
EL.NXX.L
NXX
NYY
NXY
QXZ
QYZ
QXY
DEFORM
EDGES
EL.MXX.L
MXX
MYY
MXY
EL.SXX.L
SXX
SXY
MONITOR
POSITION
EL.SXX.G
RE.SXX.G
ELEMENTS
LIST
USE
COPY
SETUP
2SURFS
4SURFS
5SURFS
6SURFS
GENERAL
PRISM
SETS
CONSISTENT
FOCAL
ANGLE
ARC
BETWEEN
CIRCLE
CURVE
INTERSECT
NODES
PARALLEL
PERPENDIC
SPLINE
STRAIGHT
ONTO
X
Y
Z
REPAIR
AT-NODE
COORD
INTERSECT
ONLINE
TRANSFORM
3POINTS
3SIDES
4POINTS
4SIDES
AUTOMATIC
INTERSECT
ONSHAPE
REGION
SIDE-PNT
AUTOMATIC
BODY
DEFAULT
ELSIZE
FACTOR
LINE
PROPAGATE
RELATIVE
SURFACE
ALGORITHM
CHECK
LOCK
MIDNODES
NODE
UNLOCK
3SIDES
4SIDES
4SURFS
5SURFS
6SURFS
ARC
GBODY
POINTS
PRISM
REGION
SPLINE
STRAIGHT
BEAM
LINE
NODE
PROMPT
SCAN-OUTPUT
SECTION
APPEND
CLOSE
OPEN
REMOVE
AVERAGE
AV-DIFF
COMBINE
DIFFERENT
EXPRESSN
EXTRAPOLATE
INTEGRATE
P-ESTRAIN
P-SHEAR
P-STRESS
P-YIELD
PERDIFF
PRESSURE
SAFETY
SCAN
SCAN
VONMISES
EL-RESULT
GLOBAL
LOCAL
MATERIAL
SET
SURFACE
VALUES
GLOBAL
LOCAL
RELATIVE
ANGLE
DISTANCE
LENGTH
BATCH
DXF
IGES
PATRAN
STL
VIEWDATA
ANIMATE
BINSET
COLOURS
CONFIRM
DIRECTORY
FEEDBACK
PLOTTER
QUALITY
ROTATIONS
SYNONYMS
UNDO
UNITS
ALL
LINES
CONSTRAINT
SHRINK
COLOUR
PRESTRES
DIANA
GRAVITY
DISPLACE
SURFACES
RY
RX
RZ
CYLINDRIC


[KEYWORDS 4]
MATERIALS
STEEL
MASS
DENSITY
ELASTIC
ISOTROP
CONCRETE
STATNONL
METALS
VMISES
WHARDIA
REINFORC
BOND
WHARDEN
MASONR
PLANSTRS
THREGULR
CRACK
MATCRK
INTER
THERCONC
TIME
TEMP
L2TRU
L4TRU
L6TRU
CL6TR
CL8TR
CL10T
CL9TR
CL12T
CL15T
L6BEN
L12BE
L7BEN
L13BE
CL9BE
CL12B
CL15B
CL18B
CL24B
CL30B
T6MEM
Q8MEM
CT12M
CQ16M
CQ18M
T9MEM
Q12ME
T6OME
Q8OEM
CT12O
CQ16O
T9WME
T6EPS
Q8EPS
CT12E
CQ16E
CT30E
CQ20E
CQ22E
CT18GE
CQ24GE
CT27GE
CQ36GE
T6AXI
Q8AXI
CT12A
CQ16A
CT30A
CQ20A
CQ22A
CL9AX
Q12PL
CT18P
CQ24P
T15SF
Q20SF
CT30F
CQ40F
T18SF
Q24SF
CT36F
CQ48F
Q48SPL
Q56SPL
T15SH
Q20SH
CT30S
CQ40S
CT45S
CQ60S
CT30L
CQ40L
TE12L
TP18L
HX24L
CTE30
CTP45
CHX60
CTE48
CTP72
CHX96
HX25L
CHX64
T3CMP
CT6CM
CT9CM
Q4CMP
CQ8CM
CQ12C
N4IF
N6IF
L8IF
CL12I
CL20I
L16IF
L20IF
CL24I
CL32I
T18IF
Q24IF
CT36I
CQ48I
L4CT
CL6CT
T9CT
Q12CT
CT18C
CQ24C
BCL6S3
BCL6S2
BQ24S8
BQ24S4
SP1TR
SP2TR
SP1RO
SP2RO
SP6BA
SP12BA
L4TB
CL6TB
T9TB
Q12TB
CT18T
CQ24T
CT27T
CQ36T
PT3T
PT3RO
PT1CR
CL3CR
T3HT
Q4HT
CT6HT
CQ8HT
B2HT
BC3HT
T3AHT
Q4AHT
CT6AHT
CQ8AHT
B2AHT
BC3AHT
TE4HT
CTE10H
TP6HT
HX8HT
CTP15H
CHX20H
BT3HT
BQ4HT
BCT6HT
BCQ8HT
L2HT
L4HT
T3GW
Q4GW
CT6GW
CQ8GW
B2GW
BC3GW
T3AGW
Q4AGW
CT6AG
CQ8AG
B2AGW
BC3AG
TE4GW
CTE10G
TP6GW
HX8GW
CTP15G
CHX20G
BT3GW
BQ4GW
BCT6GW
BCQ8GW
T3KD
Q4KD
CT6KD
CQ8KD
T3RE
Q4RE
CT6RE
CQ8RE
IPT2H
IL4HT
ICL6H
IT6HT
IQ8HT
ICT12H
ICQ16H
T3TO
Q4TO
CT6TO
CQ8TO
INTERFAC
EXTERNAL
EXTERNAL







[KEYWORDS 5]
QU8
CQ16M
LC1
LC2
LC3
LC4
LC5
LC6

[PREPROCESSOR KEYWORDS]

2006年11月24日星期五

两个轻量级的小软件

关键词Visual subst; Winsnap

两个轻量级的小软件

虚拟光驱,虚拟PC,还有不少,虚拟硬盘以前用subst的,现在有一个win界面的小软件
visual subst,用起来还不错。
下载地址
http://www.ntwind.com/download/VSubst_1.0.3.exe
使用方法:点搜索图标,找到目录,添加,赋予盘符。就可以了。


免费抓图软件winsnap
免费,多种抓图法,还是portable,何乐而不为:)
http://www.ntwind.com/download/WinSnap_1.1.8-portable.zip




网站翻译及俄罗斯AutoLisp论坛

网站翻译及俄罗斯AutoLisp论坛

关键词网站翻译 俄罗斯 Autolisp

昨天,Evgeniy给我推荐了一个俄罗斯的Autolisp网站,不过不懂俄文,于是他又帮忙找了这么两个翻译的地方,发现俄文和英文居然可以翻译的这么不错,起码意思差不多看懂了。
好像google也可以翻译网站,但似乎没有这么好。

http://www.online-translator.com/url/tran_url.asp?lang=en&url=http%3A%2F%2Fwww.autocad.ru%2Fcgi-bin%2Ff1%2Fboard.cgi%3Fp%3D44%26sort%3D5&direction=re&template=General&cp1=NO&cp2=NO&autotranslate=on&psubmit2.x=95&psubmit2.y=3

http://babelfish.altavista.com/

一个台湾Autolisp论坛

一个台湾Autolisp论坛

关键词Autolisp 论坛

一个台湾Autolisp论坛
http://www.autocad.com.tw/asp/ShowRecord.asp?WebName=AutoCAD&ID=11502

是在这个页面xyz518mm说的
http://www.xdcad.net/forum/showthread.php?s=&threadid=605292

更多的autolisp论坛可以参见本人的这个帖子

晓东xdcad AutoLISP论坛 推荐网址 集中

http://chenqj.blogspot.com/2006/09/lisp.html

以及本人的各种Lisp文章

http://chenqj.blogspot.com/search/label/autolisp

学习体会(05.7.20)

学习体会(05.7.20)

关键词maxivista multiplicity Aqua Deskperience

翻到去年的一点东西,作下记录。上网及学习的一些收获

现在软件已经比较少引起冲动了,下的软件越来越少,资料越来越多

1.有趣的新软件--Aqua Deskperience,用于屏幕抓文字,不是ocr,是直接抓,挺怪的,不过挺有意思。不过现在snagit也有这个功能了。

2.全屏工具--full screen,这个用处不大,就是将各种软件尽可能的全屏显示,可能对各位没什么用,但是用acad14的时候,用它来唬唬人是挺好的。

看书收获

1.局域网内共享显示器:maxivista

2.局域网内共享键盘和鼠标:multiplicity

3. 用adobe acrobat批量下载网文:主要对付网络小说,先到网页目录页,存盘,作为pdf,可以在链接处点append,可以下载一页,也可以到书签项,,在目 录的书签点右键,选view web links,连续选择,download,就可以了,其实也没有什么好处。

上网收获

1.在verycd查找“小游戏”,得到下面一些,《Reflexive公司小游戏合集》,《Popcap_Gamehouse_Reflexive小游戏精品集》,大多个头不大,图面精美。

2.学习了abaqus,truegrid和hypermesh和opensee,用textpad做了不少文件的语法高亮,突然间觉得好像又到了一个软件学习的高峰期,挺高兴的。

4.做了一个totalcmd的自认为漂亮的盘符图标,弄了一套icl。

5. 碰到了一个病毒,比较吓人的,就是把u盘的doc文件都变成exe的,McAfee给这个病毒起名叫W32/Hilin.worm,Kaspersky和 Symantec则分别管它叫Trojan-Spy.Win32.VB.dz(Kaspersky)W32/SillyFDC (Symantec),现在已经见到两例了,没有找到比较好的专杀软件.

小巧漂亮的文本编辑器——NOTEPAD2

小巧漂亮的文本编辑器——NOTEPAD2

关键词notepad2

小巧漂亮的文本编辑器——NOTEPAD2

文本编辑器有好多,功能强大的如Ultraedit,Editplus,Emeditor。也有如国人用汇编语言编写的NoteXpad,此处介绍一个小巧漂亮的文本编辑器——NotePad2。
软件版本:1.0.11
软件授权:免费软件+附送原码
下载地址:http://www.flos-freeware.ch/zip/notepad2.zip
这是一个非MDI界面的文本编辑软件,普通的编辑功能和查找、替换等功能自然不缺。与功能较强的文本编辑软件一样具有行编辑,段编辑,垂直选择,加行号等功能。
这里介绍它的几个特点:
1.它是一个附送原码的免费程序
软件小巧玲珑,界面清爽,不但免费,还附送原码:http://www.flos-freeware.ch

2.放大缩小功能
这 个功能在其他文本编辑软件中没见过,用户可以在不修改当前界面字体的情况下,用"ctrl"+"+"和"ctrl"+"-"对当前编辑的文本文件进行缩 放,这个功能和MYIE2类似。我现在采用17寸的LCD默认的1280×1024的分辨率,经常觉得字体太小,这个功能就非常实用。
3.具有细致的页面配置功能
NotePad2 可以对许多方面的细节进行配置,比如当前页面前、背景色,当前编辑行前、背景色,控制光标颜色,选择文本的颜色等等。这给予用户很大的配置空间,用户可以 找出自己最喜爱的方案。而且,NotePad2本身自带了许多默认的方案,针对不同的文件,如Html、VBscript、CSS、C++、ini、 reg等,按照不同的语法,都有比较合适的配置方案。如打开一个.ini文件,其界面如图1所示。可以看出,其针对不同的字段,采取了不同的前背景色,可 让人很好理解其文件结构。
假如你整天面对文本工作的话,相信NotePad2是一个不错的选择。
(华南理工大学 qjchen)

超强工程览图工具——Autovue

超强工程览图工具——Autovue

关键词工程 图形 Autovue

超强工程览图工具——Autovue
超级强大的文件查看软件——AutoVue SolidModel Professional,不过个头比较大,60多M。
1. 支持的文件格式
其支持的文件超过200多种,此处列出较为熟悉的一些:
2d的包括
-AutoCAD (DWG, DXF, DWF);
--MicroStation (DGN);
--Mechanical Desktop
- CGM;--HPGL, HPGL/2, HP RTL;;- IGES;- ME10;- Postscript, EPS
;- Solid Edge 2D;- SolidWorks 2D;- CALS Group IV;- TIFF
- Visio;- PDF;- Word;- Excel;- Powerpoint;- Microsoft Project
- and many more...
3d的包括
-----------------------------------
- CATIA (3D & 2D)
- Pro/Engineer (3D & 2D)
- Unigraphics (3D & 2D)
- SolidWorks (3D & 2D)
- Solid Edge (3D & 2D)
- Autodesk Inventor (3D & 2D)
- DirectModel JT
- SolidDesigner
- SPATIAL ACIS
- Parasolids
- Mechanical Desktop (3D & 2D)
- IGES (3D & 2D)
- STL, STEP, VRML
- and many more...
-----------------
eda的包括
- Cadence Allegro
- Cadence Allegro IPF
- Mentor Board Station
- Mentor Neutral
- Orcad Capture
- Orcad Layout
- P-CAD Schematic
- P-CAD Layout
- Gerber
- EDIF
- IDF
- PDIF
- ODB++
- GenCAM
View complete list...
它同个公司的产品还有
CIMMETRY_AUTOVUE_SOLIDMODEL
CIMMETRY_AUTOVUE__PROFESSIONAL
CIMMETRY_panoramic-_V17.0
自上而下功能递减

扫雷世界记录网站

扫雷世界记录网站

关键词扫雷 世界纪录

有时候扫扫雷,速度不算快,高级(75)中级(21)和低级(3)三个记录的时间加起来99秒,不过比起高手还差的比较多。在98年我曾经在碧海银沙放过一个“扫雷与数学原理”及“扫雷中的一些定式”,不过后来网站关闭了,硬盘中就只剩下零零散散的一些内容,以后看看能否找回。当时记得问了这么一些问题:“扫雷高级版中,可能出现的所有数字总和的最大值和最小值是多少”等问题。

-------扫雷世界记录网站,高手云集

http://www.metanoodle.com/minesweeper

现在扫雷记录网站采用了一个叫minesweeperclone的顶替软件,可以计算到小数点后两位,同时可以自动记录每盘扫雷局的过程到MVF的视频,很不错。

现在的世界记录是高级38.589秒了。非常厉害。

下面是我录制的这段世界记录视频,注意,假如在线看有点停顿的话,可以下载了再看。可以看出高手的点击效率是非常高的。



minesweeper clone的下载地址如下:
http://www.geocities.com/minesweeperclone/

由于有时候有点难下载,我在这里放两个版本,方便自己下载
97版本:Minesweeper clone 97
2006版本:Minesweeper clone 2006

有两个版本, 97颁布的比较容易安装,但是不能播放06版录制的一些录象
2006版的有不少更新,但是有时候比较难下载,过几天我把它放到这里吧。

同时,在minesweeper clone里面,有不少的名词,比如3BV(最小左键点击数),IOE等名词,都是为了客观衡量扫雷速度的指标,过几天我会把它们的概念翻译写在这里。

先把未整理好的名词解释放在这里,会不断增加
(翻译minesweeper clone的帮助,转载请注明,华南理工大学qjchen)

一些扫雷名词
Minesweeper Clone是一个扫雷的高级版本,有许多有趣的高级新功能。它的特点包括:帮助“雷友”提高成绩,回顾进步的历史(比如扫雷录像及回放),记录扫雷历史,重建某些布局加强记忆等。

虽然比较吓人,但对于雷初友倒是没有任何难度,上手即可用。

一些名词:FLAGGING(标雷)NON-FLAGGING (NF-不标雷,或者现在人称破空)

第一次玩扫雷游戏的时候,经常会不自觉的在雷盘上右击标雷。在初级阶段的时候,标雷是很有用的,它帮助你知道哪里有雷,同时也让你不会误操作(有雷的地方是打不开的,你必须把它取消才能打开)

过了一段时间,雷友标雷会变得更有效率了,他们会不标一些特别明显的雷了。但是,有时候他们会利用双击来开雷(左右键的双击有时候比单击更有率)

但是,有部分的雷友会觉得不标雷(NF,破空)更加的有趣,这种情况雷初友可能会觉得很惊奇,他们会怀疑这些雷友是否真的记得雷的位置还是在乱点。

对于标一个雷以上的做法,我们成为标雷型,对于一个都不标的,我们成为不标雷型(破空型NF)。

有些雷友的扫雷风格很是特别,让人记忆深刻,一些是标雷高手,一些是破空高手NF。但是,一般来说,顶尖雷友是混合型的,就是说,在一些雷盘中,一部分用标雷法,一部分用破空法。一般来说,大雷区用标雷法,小雷区用破空法。

名词:3BV (BECHTEL BOARD BENCHMARK VALUE )
说真的,扫雷很需要运气的,一般来说,记录总是产生在一些比较容易的雷盘里。但怎么才能定义雷盘的难易程度呢?3BV就是一个这样的数值。虽然它不是绝对的(因为相同的3BV雷盘可以有不同的难度的),但是起码它给出了一个不错的思路。

3BV 代表了BECHTEL BOARD BENCHMARK VALUE 3BV ——BECHTEL雷盘基准值,是一个叫Stephan Bechtel的雷友在2002年第一次提出的,他定义了一个为完成一个给定雷盘所需要的最小左键点击数。之后另一个雷友Benny Benjamin建议把这个数字称为3BV。

如上所述,3BV仅仅依赖于雷盘中雷的分布,它和玩的过程无关。所以,一个雷盘,只有在完成之后才能计算出其3BV值,而在此之前我们认为雷的位置是未知的,只有完成后全部雷位定下后才能计算。
计算倒是很简单,这里先提一个名词,空位(openings-holes)——雷盘上那些非雷非数字的位置(雷盘上的数字位在其周边8格中至少有一个雷,只有在那些离所有的雷都至少有两格以上位置的地方才可能是空位)。空位将耗费一个3BV值,开启空位的同时会将围住洞口的所有数字位也打开。

剩下的远离空洞的数字位就没有法由空位来点开了,因此,这些距离空位1格以上位置的数字位必须一个一个点开,因此每个数字为耗费一个3BV值。

如果刚才计算的每个3BV的位置都被打开的话,雷盘其实就完成了。下图是一个范例,它有三个“空位”,用黄色高亮表示,其余有13个绿色高亮显示的数字位,它们离空位都是一格以上,必须一个个单击点开,因此,此雷盘的3BV值是3+13=16.

理想3BV的定义也引申出“实际左键点击数”的定义,它就是实际雷盘中左键所点击的次数。

还有一个3BV/s->3BV每秒的名词,它给出了完成雷盘的等效速度。它的计算是:把3BV/完成时间。这里需特别指出的是,扫雷游戏的时间总是从1秒而非0秒开始计算的,因此计算的时候,公式是3BV/(时间 - 1)的。

名词:RQP:RAPPORT QUALITé PRIX (RQP)

这个名词来源于法语, 意思是 ”性价比“-它的计算是这样的,把时间除以3BV/S,值越小越好。许多的雷友认为这个数字对于衡量雷盘完成的质量更有意义,它考虑到了雷盘完成时间与点击数的关系,越小的时间和越高的数字,那么RQP就会越好。

名词: IOE:效率指标(INDEX OF EFFICIENCY)

由于3BV代表了完成一个雷盘所需的最小左键单击数,那么,对于非标族(破空族-从不标雷,不用右键的雷友),他们会经常把3BV和实际左键点击数进行对比。一般而言,实际3BV要大于理想3BV,因为很难用最优的方法来完成的,所以,“实际左键点击数”越接近3BV,就越好。

IOE的计算是这样的:计算3BV和实际总点击数(这个数通常都在0和1之间的),如果IOE=1,那么这个雷盘算是完美效率了,所有的点击都用在3BV位置了。

对于标雷族,IOE失去了部分意义,因为它的比值中,点击数包括了各种类型的点击(左键单击,右键单击,双击),而3BV只是指左键点击总数。而正确的标雷和双击可以用更少的按键数解决几个3BV方格。所以,对于标雷族而言,一些IOE可能比1大,比如某些雷盘可以通过比3BV更小的点击数来完成。

名词: IOS—速度指标
在雷盘的3BV、完成时间和速度(3BV/s)之间有着一种紧密的联系。一般而言,更高的3BV值意味着有更多需要点击的格子,与此同时更高的3BV经常来说有更好的雷位分布,也会使得更高的开雷速度。但是,这个并不能完全补偿,一般而言总体时间会增加。

当雷盘3BV值较低的时候,需要点击的格子小了,但是其雷分布往往更加集中,形成几个雷团,这个使得你必须不断的在几个雷团空隙间大范围移动,同时,雷团的出现也增加了判断难度而降低速度。但是,即使是低速,完成时间却经常更少。

所以,一个单一的指标是不足以完全判别一个雷友的水平的,比如一个平均完成时间比较快而速度不是很快的选手,在某些方面看来,他确实是个高手,但从某些其他方面而言,一个评价完成时间比较长而速度比较快的选手不见得就比他差,是吧。

Roman Gammel,一个俄罗斯雷友, 在2005年建议, 一个评判选手更加平衡合理的综合指标——速度指标IOS。
一个返回值更加平稳的指标,它独立于完成时间和3BV/S,因此,在计算几个雷盘的时候,IOS提供了更可靠的数值,也可以更好的给出一个雷友的级别。公式如下:
IOS = log(时间 - 1) / log(3BV)


所以个人看法:Minesweeper是职业扫雷选手的战斗工具,假如只是普通玩玩,也不必要这么专业了。

-----------------------------------------------------------------------------------------------
此下是对本次锦标的一些相关翻译
翻译综合www.minesweeper.info/MinesweeperCompetition.php
http://www.minesweeper.info/MicrosoftAnnouncement.html

也希望张砷镓兄弟可以顺利得到赞助,获取荣耀。
其他有兴趣的朋友,如条件许可的话,也可以去参加看看啊。

关于扫雷的一些其他信息,比如38秒世界记录录像,扫雷的破空法,3BV,ioe等名词的解释,可参考
http://chenqj.blogspot.com/2006/11/blog-post_8647.html

(qjchen)

微软匈牙利和国际扫雷协会 合办

扫雷世界冠军赛

展示你的才华,与世界上最好的雷友一争高下【争夺雷王的称号——这句是我说的:)】

2007年4月27日

匈牙利,布达佩斯

地址: 布达佩斯Corvinus大学,信息系统系

Corvinus University of Budapest - Department of Information Systems
36, Veres Pálné street.

免费注册,截至2007年4月10日。【可惜不是机票免费】
带上你的鼠标!

注册请联系 Gergely Nagy aknakereso@yahoo.com!

比赛在13:30开始,时间3个小时。

微软将对最小时间总和的6个参赛选手进行嘉奖(哇,想想MS$把一块沉甸甸的“雷王”奖牌挂在你头上,多么光荣啊),选手的排名将

按照他们5个最好的“高级”和5个最好的“中级”成绩叠加。如果选手无法完成规定数目的比赛,有一定的惩罚(具体如下)。。

有意向参赛的选手

选手
Damien Moore (世界前10),苏格兰, (人称“苏格兰雷尊”,不好意思,我起的,但想到比赛那一天,肯定人人加称号的,嘿嘿


Manuel Heider(世界前10)
Steven Gvozdenovic(世界前10)
Roman Gammel(世界前10)
Elmar Zimmermann(世界前10)
Thomas Kolar(世界前25)
Jonian Grazhdani(世界前100)
Gergely Nagy(世界前100)
Robert Farnik(世界前100)
Jan Farnik(世界前500)

如果选手无法完成规定数目的比赛,扣分如下:

高级
第五个比赛没有完成: 最差一次的时间+35秒
第四个比赛没有完成: 最差一次的时间+80秒
第四个比赛没有完成: 当场剥夺资格(来人,抓去喂狗,嘿嘿)

中级:
第五个比赛没有完成: 最差一次的时间+40秒
第四个比赛没有完成: 当场剥夺资格

关于本次比赛的Minesweeper X的介绍,将后续进行,据说是Minesweeper clone的开发是受其激发灵感的。

利用紫光输入法,快速输入希腊字母

利用紫光输入法,快速输入希腊字母

关键词紫光输入法 希腊字母

小伎俩:快速输入希腊字母
根据紫光输入法的特点,可以自定义
一般来说,紫光里面的i字符没有什么用,我是按照字母读音的第一个发音
或者形状来定义这些希腊字母的,不过这些希腊字读音经常搞错,可能大家读法不一样,大家可以自己修改一下,希望对大家有用,雕虫小技啊:p
在紫光输入法的----特殊字符和短语里,加入这些

ia=α
ib=β
ic=θ
id=δ
id=Δ
ie=ε
if=φ
iff=ψ
ig=γ
i=
ii=
iii=
ij=ζ
ik=κ
il=λ
ilo=ρ
im=μ
in=η
io=ο
ip=ξ
ipi=π
is=σ
is=∑
it=τ
iu=υ
iv=ν
iw=ω
ix=χ
ix=≤
ix=≥
iz=ι
iy

我喜欢的建筑结构网站汇编

我喜欢的建筑结构网站汇编

关键词建筑 结构
这个是我们的专业
虽然高层建筑没有什么好的,不过看看也挺过瘾

http://www.skyscraperpage.com/
世界高楼排行版,有现在的,有将来的
http://www.skyscraperpage.com/diagrams/?1241105
有illustrator的图片,很漂亮

http://www.skyscrapers.cn/
国内的类似站点(繁体的)

http://www.skyscrapercity.com/
高层建筑及各种其他土木建筑的论坛,可以看出中国现在在建筑方面
挺喜欢乱花钱
比如里面有讨论,最漂亮的港口:悉尼港或者是维多利亚湾,图片很漂亮

建筑最摩登的城市:东京,日本,上海,香港,迪拜图片都很多
未来的高度
http://www.skyscraperpage.com/diagrams/?2063133
看了这张,你会发现迪拜的发展是多么的吓人
http://www.skyscrapercity.com/showthread.php?t=269274
还有许多漂亮的图片

http://www.greatbuildings.com/models/Hongkong_and_Shangha_mod.html
提供不少建筑的3d模型,比如这页就是香港汇丰银行的。
http://www.hb2.tuwien.ac.at/dbase/ddb/ddb_architect_project_list.php?id=115&mid=247
有汇丰银行的一些平面和立面图

不断更新中

局域网共享的好软件--Http file server

局域网共享的好软件--Http file server

以前老是用serve-U,但是有时候用起来好像太专业,最近经常向别人推荐的一个程序是
HttpFileServer 2.0
它的使用很方便,安装完了之后,会在右键菜单加上一个add to HFS的选项,选你需要共享的文件,点击一下add to HFS,就能共享。在IE里面打上地址,就可以下载文件了。
界面淡雅清新,很是好用。

一个alt+tab的代替软件

关键词alt+tab

有时候按alt+tab的时候,程序太多的时候,比较难找到需要的程序切换,假如可以用鼠标以及可以预览页面,情况会好很多
taskswitchxp是一个这样的程序。
它的下载地址
http://sourceforge.net/projects/taskswitchxp/

预览autocad的dwg文件的绝好工具

预览autocad的dwg文件的绝好工具

关键词autocad dwg 预览 totalcmd 插件

由于一直以来都用total commander作为文件管理工具,因此希望它能多做些事情,它的插件确实使它功能更加强大。

下载一个cadview.wlx(一般插件可以去www.totalcmd.net下载得到)
安装之后,就可以按ctrl+Q来预览图形了。

缺点:没有注册时,不久得重启tc一次,否则提示注册。

其他代替工具:viewdwg或者seedwg都不错。

autocad 2006 中shift的新功能和temp keyboard override

autocad 2006 中shift的新功能和temp keyboard override

关键词autocad, shift, temp keyboard override,autohook

以前想把F8的功能定义到其他按键,如F1有些困难,必须利用autohook等类似arx工具,
但 是,到了autocad06之后,可以在tools-customize-interface里面的keyboard shortcut里面很方便的就进行修改,而shift按键更是具有了临时正交的功能,更可以在temporary keyboard override里面进行更有趣的设置,不妨试试

一个把autocad图变成有些手绘效果的软件SQUIGGLE

一个把autocad图变成有些手绘效果的软件SQUIGGLE

关键词SQUIGGLE autocad 手绘
http://www.signaturecad.com/gallery/
的一个软件SQUIGGLE,可以将cad绘制的图形转变为类似手绘效果的图形。
现在autocad2007也有一些类似的功能,sketch也有类似的功能。

2006年11月23日星期四

一些CAD和AUTOLISP网站

blogspot好久没有登陆上了。
今天总算重开,记录一点东西吧

一个cad的blog网站
http://www.dailyautocad.com/
介绍了一些知识
同时,从中知道了cad2007的漂亮渲染效果原来是采用了
http://www.penguin3d.com/
的技术

另一个Lisp的网站
http://www.tktn.com/utilities/tkutil.htm

2006年10月23日星期一

利用Lisp绘制Spirograph曲线

还记得小时候玩过的一种玩具么?一个塑料板上有带内齿轮大圆形,一系列上面带有孔的小齿轮,把铅笔套在小齿轮的孔上,让小齿轮沿着大内齿轮滚动,于是,笔画出了一道漂亮的曲线。不大记得这种玩具叫什么名字了,好像叫“万花筒”?,今天才知道这种玩具的英文名叫“spirograph”,于是找了一下资料,发现外国的品种要多一些。如下图所示。

由于小时候挺喜欢这种玩具也很喜欢几何,而在学习Lisp之初,就用Lisp编了如下一段简单的小程序,最近整理东西的时候才发现,贴贴让大家娱乐一下:)

这种曲线应该和机械的有点关系,假如一个圆沿着一条直线走的话,那么圆内(不一定是圆周)某一点形成的轨迹应该叫滚轮线,似乎和悬链线及最速降线有点关系,而圆沿着一个圆周走,照查询的资料应该叫spirograph-螺旋型星云线,而若其沿着一个封闭的曲线走,应该更复杂一下,反正是按照一种等距离量测的方法在走动。

本程序简单利用参数方程的方法构建,纯属娱乐,毫无作用,见笑了:)

原理




;;; ========================================================================
;;; The following code are writen by qjchen ;
;;; 华南理工大学 建筑学院 ;
;;; Http://qjchen.googlepages.com ;
;;; ========================================================================
(defun c:test (/ lst r1 r2 r3 r4 color alpha beta orign orignx orignyp1 p2)


(setq lst (getpattern)
r1 (nth 0 lst)
r2 (nth 1 lst)
r3 (nth 2 lst)
r4 (- r1 r2)
color (nth 3 lst)
alpha 0
beta 0
orign (getpoint "\n the original point:")
orignx (car orign)
origny (cadr orign)
)
(command "color" color "")
(while (< beta 314)
(setq alpha (* -1 (* beta (/ r2 (+ r4 r2)))))
(setq p1 (list (+ orignx (* r4 (cos alpha)) (* r3 (cos beta)))
(+ origny (* r4 (sin alpha)) (* r3 (sin beta)))
0
)
)
(setq beta (+ beta 0.05))
(setq alpha (* -1 (* beta (/ r2 (+ r4 r2)))))
(setq p2 (list (+ orignx (* r4 (cos alpha)) (* r3 (cos beta)))
(+ origny (* r4 (sin alpha)) (* r3 (sin beta)))
0
)
)
(command "line" p1 p2 "")
)
)
(defun getpattern (/ kword pattern pattern1)
(initget "1 2 3 4 5 6 7 8 9 10")
(setq kword (getkword "\n please select the type: 1/2/3/4/5/6/7/8/9/10:"))
(cond
((= kword "1")
(setq res (list 20.0 14.3 7 1))
)
((= kword "2")
(setq res (list 20.0 14.3 15 2))
)
((= kword "3")
(setq res (list 20.0 10.3 5 3))
)
((= kword "4")
(setq res (list 20.0 12 8 4))
)
((= kword "5")
(setq res (list 20.0 9 1 5))
)
((= kword "6")
(setq res (list 20.0 9 5 131))
)
((= kword "7")
(setq res (list 20.0 9 7 30))
)
((= kword "8")
(setq res (list 20.0 8 5 220))
)
((= kword "9")
(setq res (list 20.0 5.2 4.2 170))
)
((= kword "10")
(setq res (list 20.0 5.2 2.2 140))
)
)
res
)



效果 [img]http://qjchen.googlepages.com/HELISCOPE.png[/img]


修改一下,改成变颜色和画圆,得到如下的结果和图形


;;; ========================================================================
;;; The following code are writen by qjchen ;
;;; 华南理工大学 建筑学院 ;
;;; Http://qjchen.googlepages.com ;
;;; ========================================================================

(defun c:test1 (/ lst r1 r2 r3 rad color alpha beta orign orignx orignyp1
p2 rep add)
(setq lst (getpattern1)
r1 (nth 0 lst)
r2 (nth 1 lst)
r3 (nth 2 lst)
rad (nth 3 lst)
rep (nth 4 lst)
add (nth 5 lst)
alpha 0
beta 0
orign (getpoint "\n the original point:")
orignx (car orign)
origny (cadr orign)
)
(entmake (list (cons 0 "CIRCLE")
(cons 6 "BYLAYER")
(cons 8 "0")
(cons 10 orign)
(cons 40 r1)
(cons 62 8)
)
)
(setq i 1)
(setq color 10)
(command "color" color "")
(while (< beta rep)
(if (> beta (* add i))
(progn
(setq i (+ i 1))
(setq color (+ color 10))
(command "color" color "")
)
)
(setq alpha (* -1 (* beta (/ r2 (+ r1 r2)))))
(setq x1 (+ orignx (* r1 (cos alpha)) (* r3 (cos beta))))
(setq y1 (+ origny (* r1 (sin alpha)) (* r3 (sin beta))))
(setq p1 (list x1 y1 0.0))
(setq beta (+ beta 0.05))
(entmake (list (cons 0 "CIRCLE")
(cons 6 "BYLAYER")
(cons 8 "0")
(cons 10 p1)
(cons 40 rad)
(cons 62 color)
)
)

)
)
(defun getpattern1 (/ kword pattern pattern1)
(initget "1 2")
(setq kword (getkword "\n please select the type: 1/2:"))
(cond
((= kword "1")
(setq res (list 20.0 14.3 7 0.2 75.2 3.14))
)
((= kword "2")
(setq res (list 20.0 15 15 1 44 2.14))
)
)
res
)


效果:

[img]http://qjchen.googlepages.com/HELISCOPE3.png[/img]

2006年10月22日星期日

DCL&Lisp Generator Lite 2.1试用记录

曾经在这个帖子中写过试用日记
http://www.xdcad.net/forum/showthread.php?s=&threadid=581242

之前在它网站老是没有看到下载的地方,还以为它在吊人胃口呢
刚才试用了一下,感受它的一些思路,感触如下
1。程序思路还是很好的
采用可视化的dcl界面(对话框编辑器),还有dcl编辑器和lisp编辑器的功能,拖动控件到对话框编辑器中,按generate code可以产生相应的dcl代码。程序用了upx加壳。
2. code generator中有不少直接输入getpoint, draw arc,ssget的函数,这个倒也挺方便输入的。还具有函数自动补齐功能(不过好像和我的拼音输入法冲突,没有试验成功)
3.dwg2lsp的功能可以把图形转换成dwg,其实这个应该不难实现的,但确实思想很有趣,感觉有点象写出dxf的感觉

lite版的限制很多,
1.比如无法生成group column, column, image list 和radiobutton group等的dcl代码,似乎其他控件的宽度调节也有问题
2. dcl 编辑器和lisp编辑器的功能除了高亮和函数自动补齐之外,似乎功能不强,当然可能和程序的本意有关
3.太多的诸如生成文本,生成圆,选择实体等实用语句不能在Lite版使用

总体而言,是个挺有创意的程序,要是用好,说不定能提高效率,也说不定某些功能值得我们自己去试试看能否自己做出来。

Diana的学习和应用

Diana的学习和应用

公司官方介绍:
Displacement analyser (Diana)
DIANA是由荷兰的TNO DIANA公司开发的通用有限元结构分析软件包。
  该软件以土木建筑工程为主,在世界各地拥有很高的声誉。 特别是在混凝土的裂缝开展分析,钢结构的局部稳定分析, 复合结构的极限承载力分析,地基的分段施工分析等非线性分析方面,得到了广大用户的高度评价。
2003年1月,建筑研究所负责开发DIANA软件的部门从荷兰应用科学研究所独立出来, 与英国的FEMSYS公司合并,成立了TNO DIANA公司. 该公司是荷兰应用科学研究所下属的百分之百的子公司。
分析类型:
线弹性静力分析(Linear Static Analysis)
特征值分析(Eigenvalue Analysis)
稳定分析(Euler Buckling Analysis)
非线性分析(Nonlinear Analysis)
静力问题 动力问题
材料非线性 几何非线性
动力分析(Dynamic Analysis)
频谱响应分析 时程响应分析
分段施工分析(Phased Analysis)
热传导分析、渗透分析:【线性、非线性问题、稳态分析、瞬态分析、与应力分析的连动】
流体-应力分析:[热应力分析、压密分析]
Lattice分析
管道线分析(Pipeline Analysis)
逆向分析(Parameter Estimation Analysis)
地基基础的液化分析(3种本 模型) (Liquefaction Analysis)
混凝土弹塑性断裂模型(Maekawa Model)


单元类型:
杆单元
梁单元
平面应力单元
平面应变单元
轴对称单元
弯曲板单元
平面壳单元
曲面壳单元
固体单元
界面单元
弹簧单元
结点质量单元
埋入式钢筋单元
流体单元
边界单元
埋入式钢筋单元

材料特性:
各向同性/各向异性材料
非线性弹性分析
弹塑性分析
粘塑性分析
粘弹性徐变分析
干燥收缩分析
裂缝分析(分散型裂缝模型,
离散型裂缝模型)
超弾性問題
界面单元的非线性材料特性
用户定义子程序功能
混凝土弹塑性断裂模型
钢材的移动硬化准则

载荷:
载荷
集中载荷
分布载荷
重力
离心力
位移载荷
钢筋单元的预应力
风载荷
水载荷
加速度
各种单元的初始应力

初始条件:
变形
自重应力(K0状态)
初始应力
初始速度
失稳后的変形

我的学习心得:
零零散散地学了一段时间的Diana,也不知道入门了没有
下面是我对Diana的一些肤浅的认识
优点:
1.对于钢筋的处理有其独到之处,可以比较简单的加入分离式的钢筋,并施加预应力。
2.对于混凝土的本构模型,有比较多的选择,从受压软化到受拉软化,模型较多,但也还是不够全面,比如W-W五参数模型就没有。
3.有lattice分析,不过它的建模比较麻烦。
4.有施工阶段分析,这点sap2000也有,但是对于复杂的实体非线性,sap2000还差一些。
5.命令流也挺过瘾,而且似乎还挺简洁的。
6.基本都是键盘操作,有时候可以很快,和早期的algor有点象。
7.分析的filo文件可以保存,挺不错的。
7.有些后处理操作做的不错。


不足
1.虽然键盘操作不错,但是鼠标功能还是差了些,整个界面用的是femsys的界面,太dos了一些。
2.命令流里面没有办法设置复杂一些的操作,比如循环,高级的参数变化,比起其他用python,lisp,apdl的要逊色一些。
3.混凝土有再多一些本构就好了。
4.帮助太过含糊,有许多不明之处,希望能象abaqus。

下面是我学习的第一个例子,按照学习光盘的录像来的,是前处理部分,计算之后可以得到如图的显示效果
不过和他们演示光盘中的结果略微不同。

有限元软件Diana入门例子:
[code]
!analysis of prestressed T beam
FEMGEN D9S
PROPERTY FE-PROG DIANA STRUCT_3D
yes
UTILITY SETUP UNITS LENGTH MILLIMETER
UTILITY SETUP UNITS MASS KILOGRAM
UTILITY SETUP UNITS TIME SECOND
GEOMETRY POINT 0
GEOMETRY SWEEP P1 TRANSLATE 0 100
EYE FRAME
GEOMETRY SWEEP L1 TRANSLATE 0 0 300
DRAWING DISPLAY
EYE FRAME
DRAWING DISPLAY
EYE FRAME
EYE LOCATE
GEOMETRY SWEEP L2 TRANSLATE 0 0 100
GEOMETRY SWEEP L6 TRANSLATE 0 0 -100
UTILITY UNDO
GEOMETRY SWEEP L6 TRANSLATE 0 -100
GEOMETRY SWEEP L7 TRANSLATE 0 100
MESHING DIVISION ELSIZE ALL 50
MESHING DIVISION ELSIZE ALL 50
LABEL GEOMETRY SURFACES S3
MESHING DIVISION ELSIZE ALL 50
EYE FRAME
LABEL GEOMETRY DIVISIONS
MESHING DIVISION LINE L1
MESHING DIVISION LINE L2
MESHING DIVISION LINE L5
EYE FRAME
CONSTRUCT SET OPEN
CONSTRUCT SET OPEN FACE1
CONSTRUCT SET APPEND ALL
CONSTRUCT SET CLOSE
MESHING TYPES ALL QU8 CQ40S
MESHING GENERATE
VIEW MESH CURRENT
VIEW GEOMETRY CURRENT

GEOMETRY SWEEP FACE1 FACE2 40 TRANSLATE 4000
EYE FRAME
GEOMETRY SWEEP FACE2 FACE3 12 TRANSLATE 1200
EYE FRAME
CONSTRUCT SET OPEN BEAM
CONSTRUCT SET APPEND ALL
CONSTRUCT SET CLOSE
!EYE ZOOM .778 .384 .7819999 .378
EYE ZOOM .828 .385 .957 .167
LABEL GEOMETRY LINES ALL
GEOMETRY MOVE L37 TRANSLATE 0 0 80
yes



EYE DIRECTION 0 -1 0
EYE FRAME
CONSTRUCT SET OPEN TMP
CONSTRUCT SET APPEND CURSOR POLYGON .899 .555 .9 .499 .969 .504 .965 .562 .887 .544
CONSTRUCT SET CLOSE
GEOMETRY MOVE TMP TRANSLATE 0 0 -40
yes

EYE FRAME
MESHING TYPES ALL NONE
MESHING TYPES ALL HE20 CHX60
MESHING GENERATE
VIEW MESH CURRENT
VIEW HIDDEN SHADE
VIEW HIDDEN SHADE
VIEW GEOMETRY CURRENT
VIEW HIDDEN FILL
VIEW HIDDEN OFF
EYE FRAME

EYE FRAME
CONSTRUCT SET OPEN
CONSTRUCT SET OPEN TOP
CONSTRUCT SET APPEND CURSOR POLYGON .576E-1 .5470001 .588E-1 .523 .714 .524 .9359999 .517 .938 .542 .711 .554 .42E-1 .542
CONSTRUCT SET CLOSE
VIEW GEOMETRY +TOP RED
EYE FRAME
EYE ZOOM .113 .692 .241 .538
PROPERTY BOUNDARY CONSTRAINT P3 PINNED
PROPERTY BOUNDARY CONSTRAINT P4 PINNED
EYE FRAME
EYE ZOOM .6580001 .531 .786 .315
LABEL GEOMETRY LINES L14
PROPERTY BOUNDARY CONSTRAINT L14 Y Z
LABEL MESH CONSTRNT

EYE FRAME
GEOMETRY POINT 0 50 350
GEOMETRY POINT 2000 50 100
GEOMETRY POINT 4000 50 350
GEOMETRY POINT 5200 50 200
REINFORCE BAR SECTION P31 P32 P33
REINFORCE BAR SECTION P33 P34
REINFORCE BAR BAR1 RE1 RE2

PROPERTY MATERIAL BE1 ELASTIC ISOTROP 35000 0.2
PROPERTY MATERIAL BE1 MASS DENSITY 2400E-9 0
PROPERTY MATERIAL BE1 STATNONL CONCBRIT CRACK CONSTA TENSIO1 ULTIMATE TAUCRI1 NONE 2.5 0.0003 0.2

PROPERTY MATERIAL RP1 ELASTIC REINFORC NOBOND 2.1E5 ""
PROPERTY MATERIAL RP1 STATNONL REINFORC VMISES NONE 500
PROPERTY PHYSICAL PH1 GEOMETRY REINFORC BAR 1000

PROPERTY ATTACH BEAM BE1
PROPERTY ATTACH BAR1 RP1
PROPERTY ATTACH BAR1 PH1
LABEL GEOMETRY MATERIALS


PROPERTY LOADS PRESTRESS BAR1 100
PROPERTY LOADS GRAVITY ALL -9.8 Z
PROPERTY LOADS PRESSURE LO3 2 TOP -0.05 Z

save
yes

UTILITY WRITE DIANA D9S.DAT
yes
ANALYSE D9S
[/code]

前段时间曾经把所有的混凝土本构都学习了一遍,也做了些学习笔记,有空再整理一下。

图1是我自己做的textpad的高亮文件,查错还是挺不错的:)

图2是例子的结果抓图

2006年10月14日星期六

一些岩土工程相关软件

很久很久以前,在写国外结构工程一览的时候同时写的文章,一些岩土工程软件,由于岩土工程不是特别本行,因此没有发过这个,现在就当是记录吧。

一些岩土工程相关软件
(华南理工大学 建筑学院 陈庆军)

_____________________________________________________________________

GEO-SLOPE.OFFICE.V5.0

网址:http://www.geo-slope.com/

GEO-SLOPE Office 是state-of-the-art软件公司的一个软件集合,它用于计算2D的岩土工程和岩土环境的建模。同时这个公司也开发一种SEE3D,一种可以分析三维饱和/不饱和的地下水模型

它包括如下产品:

slope/w 是边坡稳定分析

seep/w是地下水渗透分析

sigma/w是应力和变形分析

quake/w是有限元动力地震分析

ctran/w是污水传输分析(contaminant transport)

GeoStudio.SEEP 3D : 三维饱和/不饱和的地下水渗透分析

GEO-VADOSE/W :二维气流分析(2D evaporative flux analysis)

——————————————————————————————————
Plaxis.7.2.Professional

Web:http://www.plaxis.nl/ie.html

是一个分析岩土工程的有限元程序,它分析岩土变形和稳定性。这个程序可以用复杂的本构关系模型来模拟土壤的非线性和时随效应。同时,由于土壤是一种多相物质,需要特殊的程序来处理土壤中的静水压力和非静水孔压力尽管土壤本身的模型是一个很重要的部分,但是很多岩土工程需要涉及结构的建模以及结构与土壤间的相互作用,pLAXIS就具备有这样的功能来解决岩土工程结构中的各种复杂问题。

_____________________________________________________________________

FLAC 2D & 3D

Web:

flac:快速拉格朗日差分大变形分析计算程序,可计算软土、滑坡等大变形问题,以解决有限单元法不能解决的问题,网格离散与计算分析集成一体,图形界面,计算快速方便。DOS程序。没有找到他的网站。不过可以在这里下载一个
http://www.geosouth.net/geo/software/flac.zip

——————————————————————————————————

Foundation3d.v3.2

Web:http://www.chempute.com/foundation3d.htm

Realese:2001-04-14 Foundation3d.v3.2.WinALL.Cracked-RTP 8.8 Mb

这是一个扩展基础和联合基础的分析/设计软件,它用最少的输入来完成计算各种工业设备(水平传输装置、水平器皿,竖向器皿及塔、管架和其他各类工厂设备)的工作。

单位系统包括:英制,米制和国标

可以使用ACI318和BSI8110建筑规范.可以按照ASCE的推荐值来自动生成交换器、容器、水塔一类的风荷载.只需要输入设备的几何尺寸便可完成设备基础的基本荷载组合,可以根据座块(saddle)之间的距离和土/桩准则来优化设计基础(包括扩展和联合).

在计算容许承载力、稳定性比、基础/承台设计中的桩承载力的时候考虑了浮力的作用。

对非设备基础的荷载类型和数目、荷载组合没有限制可以分析设计方形、矩形、圆形和不规则形状的承台。可以设计方形,矩形,八角形和圆形的墩。在基础/承台的设计中考虑宽梁的剪力和冲切力提供多种形式的基础配筋方案可以在施工图上提供墩中的锚栓布置/生成材料数量.生成基础平、立、剖面施工图和大样图显示钢筋的墩切面

同autocad,microstation,smartsketch等软件配合出施工图

对输入和输出作一个总结(生成文件)

_____________________________________________________________________

MAT3D.v3.3.2.v3.2

Web:http://www.chempute.com/mat3d.htm

这是一个计算多桩情况下的筏板基础的软件,与上个软件同属公司,仔细看看这个公司,产品之多
http://www.chempute.com/main.htm,准备后面作文阐述一番

——————————————————————————————————

CivilTech.Shoring.Suite.Plus.v6.5b

CivilTech.LiquefyPro.v2.3

CIVILTECH.ALL-PILE.v3.1B

CivilTech.SuperLog.v2.8

Web: http://www.civiltech.com/software.html

all-pile:桩的垂直,横断面,群桩,沉降、负摩擦分析

SuperLog Boring,:对钻探资料进行绘图和报告

Shoring:支护墙的设计和分析

Liquefy Pro:地震引起的液化和沉降分析

Epres:土压力分析(主动与被动)

Lpres:超载下的侧压力分析

Upres:地下管道分析

Visual Lab:岩土测试(压实、粒径、固结)

Spectra:对地震谱的图形说明

Heave:对垂直切割的稳定性分析(vertical cut)

_____________________________________________________________________

Surpac

Web: www.infomine.com/index/suppliers/Surpac_Software_International.
html

Surpac.Xplorpac.v4.OL

Surpac.Surplan.v4.0L

这个软件提供了如下功能:地质模型的建立,测量,工程设计,行程安排等工具。


作为现代矿业软件行业内研究和发展的龙头,本软件全球超过85个国家,3000个用
户。

surpac便于应用,具有网络技术,同业界内其他顶尖软件兼容

可分各个模块,便于大小规模厂家应用。

可极大方便矿业工作流程,便于测量人员,矿业工程师与地质学者之间的交流

模块如下:即将推出:NetVision 和 DataVision:这个将在各个不同用户之间建立交流(只

要他们已经连接网络和拥有浏览器,同时datavison会在不同的软件之间传递数据,使得用起来就如在suppac中工作一样)

SURPAC Vision:超强的地质(包括地下部分和深坑)建模软件和设计包,可连接数据库,有很强的建模和cad工具,有三维可视化功能,可输出,多用户授权共享

MineSched:vision的一个部分,可以与ms project excel 及其他3d矿业软件结合,产生3维动画图片,甘特图,网络图和excel表。

XPLORpac:从数据库,3维可视图,图形核心日记,等高线,地图,截面与实体模型中提取数据,输出详细的说明

Quarry:一个适合岩石和矿物的软件,可以预估算,表面建模,体积计算,梯度控制及cad工程设计。

DrillKing:对数据输入及日志管理的一个全过程控制的数据库管理软件

Surplan :在surpac和UK based companies IMCL软件间交换数据的软件。
_____________________________________________________________________

Wasy Ltd. FEFLOW v4.9 SP1

Web: http://www.unine.ch/sig/p67315.gif

对地下水流、污水传输、热传输、及与重力相关水流(如盐水工业)等进行分析的
先进有限元软件

_____________________________________________________________________

WHI.AquiferTest.v3.01

WHI.UnSat.Suite.v2.2.0.1

WHI.Visual.Groundwater.v2.30

Web: http://www.scisoftware.com/html/products.html

aquifertest:管道测试分析

unsat:对大部分不饱和区域的模型编辑

visual.groundwater:对三维模型分析结果的可视分析

这个公司产品太多了,有100多个,看不过来,大家自己去他们的主页那里看吧
_____________________________________________________________________

妙用TC小技巧 文件夹的大小随便看

每年总会向《电脑商情报》投几篇文章,来年的几份报纸(《电脑商情报》、《中国国家地理》、羊城晚报》)订购就有着落了。
下面是一篇小文章:妙用TC小技巧,文件夹的大小随便看
[2006-06-19 13:33:24] [作者:qjchen] [责任编辑:黄莹]
由于有版权问题,因此只提供链接就是了
http://family.chinaok.com/2006-06/20110.htm

2006年10月13日星期五

一篇关于stdlib函数的翻译文章http://qjchen.googlepages.com/STDLIBSHUOMING7.htm

一篇关于stdlib函数的翻译文章,帖子原来发在
http://www.xdcad.net/forum/showthread.php?s=&threadid=477301

表格彩色版的可见这里
http://qjchen.googlepages.com/STDLIBSHUOMING7.htm
上次为了寻找一个找封闭线多义线形心的程序,找到了stdlib:一个由Reini Urban编写的程序库,stdlib是一个标准函数库,包含了许多的内容,包括表,几何体,字符串,文件操作,数学计算,时间,实体等许多方面的内容.它的网站在
http://xarch.tu-graz.ac.at/autocad/stdlib/archive/
这个网站好像最近出了一些问题,暂时不能访问
reini urban的lisp faq还出现在
http://www.faqs.org/faqs/CAD/autolisp-faq/
这个eachy版主转贴过
这个标准库应该是主要是由他一个人完成的,非常佩服他能有这么多精力来完成这项工作,还写了一个非常完整的chm说明书.当然他也疑惑哪些程序应该提供源码的问题.这个程序库应该是在vlisp之前开始撰写的,大部分可以用在r14上
对于比较喜欢r14的人挺有用的.stdlib的应用挺简单的,我一般是把stdlib.lsp加到自动加载,那么以后就可以直接用了.
似乎有有些高手对stdlib不屑一顾,说其会使得速度变慢.说其文件操作引用了doslib等等.
但我觉得作为一个提供了源码,可以了解作者思路,提供学习机会的程序库,已经是特别幸运了,何况里面内置的这么多有用的函数,我们自己编起来也要颇费一番心思,在你需要很快编制出一个程序而不考虑版权的情况下,不妨用用.
下面是自己学习stdlib的一些小体会
首先是对函数的简单翻译,水平有限,错漏不少,有些函数也不知道作者可以拿来作什么用,乱翻了,仅当学习体会以后有时间再写些学习心得,由于其分很多类,只能一类类慢慢的贴了。


文字版本的如下:


函数名称 函数意义 例子
判别类
(consp x) 是否空表
(std-dotted-pair-p x) 是否点对
(std-not-proper-list-p x) 判别最后一个元素是否点对
(std-string-list-p x) 是否字符串表
(std-number-list-p x) 是否数值表
附件搜索类
(first lst) cadr 表的第一个元素,如同cadr
(second lst) 表的第二个元素,如同 caddr
(third lst) 表的第三个元素,如同 cadddr
(fourth lst) 表的第四个元素,如同 (car (cddddr))
(fifth lst) 表的第五个元素,如同 (cadr (cddddr))
(sixth lst) 表的第六个元素,如同 (caddr (cddddr))
(seventh lst) 表的第七个元素,如同 (cadddr (cddddr))
(eighth lst) 表的第八个元素,如同 (car (cddddr (cddddr)))
(ninth lst) 表的第九个元素
(tenth lst) 表的第十个元素
(rest lst) 表中除第一个外的其他元素,如同 cdr
(std-list-length lst) 表中元素长度,接受点对元素accepting dotted pairs
(std-elt lst i) 表中第i个元素的值
(std-position x lst) 元素x在表中的位置
(std-position-if pred lst) 返回第一个满足pred(预定的类型,如字符串,数字,或者是由lambda函数定义的)表达的元素位置,以下称pred为约束条件 "(std-position-if 'numberp '(0 1 2 3))=> 0 (std-position-if 'stringp '(0 ""1"" 2 ""3"")) => 1"
(std-position-if-not pred lst) 返回第一个不满足由pred表达的元素位置
(std-rposition x lst) 返回x在表中最后一次出现的位置
(std-r assoc x alst) 与assoc对应的函数,返回某个指定点对名称所对应的点对 "(std-rassoc ""line"" '((0 . ""line"")(8 . ""0"")(10 0.0 0.0 0.0)) => (0 . ""line"")"
(std-member-if pred lst) 查找表中满足约束条件的第一个元素,并与后面的元素组成一个表,如同visual lisp中的vl-member-if-not "(std-member-if 'numberp '(0 1 2 3)) => (0 1 2 3) (std-member-if 'stringp '(0 ""1"" 2 ""3"")) => (""1"" 2 ""3"")"
(std-member-if-not pred lst) 查找表中不满足约束条件的第一个元素,并与后面的元素组成一个表 "(std-member-if-not 'numberp '(0 1 2 3)) => nil (std-member-if-not 'stringp '(""0"" ""1"" 2 ""3"")) => (2 ""3"")"
(std-count x lst) 返回元素x在表lst中的个数
(std-count-if pred lst) 返回表中满足约束条件pred的元素个数 "(std-count-if 'stringp '(0 ""1"" 2 ""3"")) => 2"
(std-count-if-not pred lst) 与上一个函数相反
子表
(std-firstn n lst) ; 返回表中前n个元素组成的子表,对(std-nthcdr n lst)的补充
(std-nthcdr n lst) ; 返回表中第n个元素之后所有元素组成的子表 (std-firstn 2 '(0 1 2 3)) => (0 1) (std-nthcdr 2 '(0 1 2 3)) => (2 3)
(std-subseq lst start end) 返回表中从start到end-1的一个表 (std-subseq '(0 1 2 3) 1 3) => (1 2) (std-subseq '(0 1 2 3) 0 3) => (0 1 2) (std-subseq '(0 1 2 3) 0 0) => nil (std-subseq '(0 1 2 3) 0 -1) => error (std-subseq '(0 1 2 3) 3 4) => (3)
(std-butlast lst) 返回除了表中最后一个元素的一个表
(std-select ) 根据i选出表中第i个元素,或者根据几个i组成的找出表中的几个元素组成的表。 (std-select '(a b c d) 0) => a (std-select '(a b c d) '(1 0) => (b a) (std-select '(a b c d) '(1 0 4) => error
修改
(std-adjoin x lst) 把一些x假如到list中,假如是重复元素,则不加入,用于构建没有重复元素的表 (std-adjoin 0 '(1 2))=> (0 1 2) (std-adjoin 1 '(1 2)) => (1 2) (std-adjoin 1 nil) => (1) (std-adjoin nil nil) => (nil)
非破坏性的操作
(std-setnth new i lst) 用于修改第i个元素为新值new (std-setnth 'new 2 '(0 1 2)) => (0 1 new)
(std-delpos i lst) 删除表中第i个元素,返回精简的表 (std-delpos 1 '(1 2)) => (1)
(std-remove x lst) 删除表中元素值为x的所有元素,返回精简的表 (std-remove 0 '(0 1 2))=> (1 2) (std-remove -1 '(0 1 2)) => (0 1 2) (std-remove 0 '(0 1 0 2))=> (1 2)
(std-remove-if pred lst) 除表中满足某种约束条件pred的元素,返回表 (std-remove-if 'numberp '(0 1 2)) => nil
(std-remove-if-not pred lst) 与上一个函数相反,保留
(std-remove-duplicateslst) 删除重复元素,排序不破坏。
(std-split-list n lst) 按照个数n将表分成许多子表 (std-split-list 3 '(0 1 2 3 4 5 6 8 9)) => ((0 1 2)(3 4 5)(6 7 8)(9))
(std-flatten lst) tree将表变为一维表,没有子表形式 (std-flatten '((0 1 2)(3 4 (5))(6 7 8)(9)) => (0 1 2 3 4 5 6 8 9)
(std-rotate-left lst) 把表的第一个元素移到最后一个 (std-rotate-left '(0 1 2 3 4)) => (1 2 3 4 0)
(std-rotate-right lst) 把表的最后一个元素移到第一个
破坏性的建表形式,push(推)或者pop(取)
(std-push x 'lst) 将一个元素推到表(堆栈)中,有破坏性 (std-push 0 '(1 2 3)) => (0 1 2 3) (setq stack '(1 2 3)) (std-push 0 'stack) => (0 1 2 3)
(std-pop 'lst) 将一个元素从表(堆栈)中取出,有破坏性 (std-pop '(1 2 3)) => 1 (setq stack '(1 2 3)) (std-pop 'stack) => 1
(std-pushnew x 'lst) 将新值推到表(堆栈)中,有点类似std-adjoin,有破坏性 (std-pushnew 0 '(0 1 2 3)) => (0 1 2 3) (setq stack '(1 2 3)) (std-push 0 'stack)=> (0 1 2 3)
(std-pushmax x 'lst nmax) 将新值推到表(堆栈)中,但保持表的最大长度为nmax,有破坏性 (std-pushmax 0 '(1 2 3 4) 4) => (0 1 2 3) (setq stack '(1 2 3)) (std-push 0 'stack 4) => (0 1 2 3) !stack=> (0 1 2 3) (std-push 1 'stack 4) => (1 0 1 2)
"mapping, iteration 映射,反复"
(std-mapatom func tree) 将表中所有的元素按照func定义的函数进行变化,表中所有元素的树状结构不会改变 (std-mapatom '1+ '(0 1 (2 (3))))=> (1 2 (3 (4))) (std-mapatom (function (lambda (x) (cons 0 x))) '(0 1 (2 (3))))=> ((0 . 0)(0 . 1) ((0 . 2) ((0 . 3))))
(std-every pred lst) 对表中元素进行约束条件(pred)的测试,都对了返回t,否则nil (std-every 'std-pointp points)
(std-every-n pred lists) 相比every-n,有更多参量
(std-some pred lst) 对表中某些元素进行约束条件(pred)的测试,只要有对了就返回t,否则nil
(std-some-n pred lists) (std-some pred lst) 的多参量判别
集合操作(无序的多集合)
(std-union set1 set2) 集合的并操作,合并两个集合,把第二个集合中的元素加到第一个,不是很稳定的函数,比(std-ordered-union set1 set2)稍快
(std-ordered-union set1 set2) 比较稳定的版本,集合并操作,保持第一个集合的顺序,第二个集合中的不同元素加入到集合一的最后 (std-ordered-union '(1 5 3 4) '(1 2 3 3)) => (1 5 3 4 2)
(std-intersection set1 set2) 集合的交操作 (std-intersection '(2 1 5 3 3 4 2) '(2 1 2 3 3))=> (2 1 3 3 2)
(std-set-difference set subset) 集合1中不在集合2中的元素 (std-set-difference '(0 1 2 3 4 5) '(2 0 6 7)) => (1 3 4 5)
(std-set-exclusive-or set1 set2) 集合的余操作,不同时属于集合1或集合2的元素 (std-set-exclusive-or '(0 1 2) '(2 3 4)) => (0 1 3 4)
(std-subsetp subset set) 集合1是否集合2的子集 (std-subsetp '(1 2) '(0 2 1 2)) => t; (std-subsetp '(3 1 2) '(0 2 1 2)) => nil
(std-set-equal-p lst1 lst2) 集合1、2是否完全相等 (std-set-equal-p '(0 1 2) '(1 2 0)) => t (std-set-equal-p '(0 1 2) '(1 1 2 0))=> nil
表的创建
(std-make-listn def) 建立一个包含n个def的表 (std-make-list 3 nil)=> (nil nil nil); (std-make-list 3 0.0)=> (0.0 0.0 0.0)
(std-int-list n) 创建一个从0~n-1整数序列的表 (std-int-list 3)=> (0 1 2)
(std-iseq start end) 创建一个从start到end的整数表 (std-iseq 1 5)=> (1 2 3 4 5); (std-iseq 5 5)=> (5)
(std-rseq start end n) real sequence of n nums
(std-nxtcyc i n incr-func) 找出第i个元素在整数n循环(就是0,1,2,3 n-1)中,下一个应该出现的数,一个比较奇怪的概念,据作者说用在多义线的子实体方面比较有用, (std-nxtcyc 0 3 '1+)=> 1 (std-nxtcyc 1 3 '1+)=> 2 (std-nxtcyc 2 3 '1+)=> 0 (std-nxtcyc 3 3 '1+)=> 1
(std-copy-treelst) 把一个表拷贝到一个备份中,比较奇怪,作者说这个几乎在autolisp中不用,除了说想对表排序又不想破坏其结构。
排序和整合
(std-sortlst less-pred) 排序函数 "(std-stable-sort '(2 0 1 2 3 4 0) '<) => (0 0 1 2 2 3 4) (std-fast-sort '(""2"" ""1"" ""3"" ""4"" ""0"") '<) => (""0"" ""1"" ""2"" ""3"" ""4"") (std-sort pointlist '(lambda (x y) (< (car x) (car y))))"
(std-stable-sortlst less-pred) " 类似,不删除多余元素,保留次序"
(std-fast-sortlst less-pred) 删除多余元素
(std-mergelst1 lst2 less-pred) 对两个表按某种排序法进行合并 (std-merge '(0 2 3) '(1 4 5) '<)=> (0 1 2 3 4 5)
随机数
(std-randomize lst) 对原表进行随机打乱 (std-randomize '(0 1 2 3 4))
(std-random-elt lst) 随机取出表中的某个元素


字符串
函数名称 函数意义 例子
谓词,判断Predicates
(STRINGP expr) 表达式是否字符
(STD-STRING-NOT-EMPTY-P expr) 是否非空字符串
(STD-ISCHAR char) 是否由[a~z]或[A~Z]组成的字符串
(STD-ISDIGIT char) 是否由属于[0~9]的数字组成的字符串
(STD-ISCONTROL char) 是否属于ascii码小于32的键组成的字符串
(STD-ISUPPER char) 是否大写字母
(STD-ISLOWER char) 是否小写字母
比较Comparison
(STD-STRING= s1 s2) 两个字符串是否相等
(STD-STRING/= s1 s2) 两个字符串是否不相等
(STD-STRING< s1 s2) s1字符串是否小于s2字符串,按asc码逐个比较,下同
(STD-STRING<= s1 s2) s1字符串是否小于等于s2字符串,按asc码逐个比较,下同
(STD-STRING> s1 s2) s1字符串是否大于s2字符串,按asc码逐个比较,下同
(STD-STRING>= s1 s2) s1字符串是否大于等于s2字符串,按asc码逐个比较,下同
(STD-STRING-EQUAL s1 s2) 两个字符串是否相等,equal和=的区别在于是否大小写敏感
(STD-STRING-NOT-EQUAL s1 s2) 两个字符串是否不相等
(STD-STRING-LESSP s1 s2) s1字符串是否小于s2字符串,按asc码逐个比较,下同
(STD-STRING-NOT-LESSP s1 s2) s1字符串是否小于等于s2字符串,按asc码逐个比较,下同
(STD-STRING-GREATERP s1 s2) s1字符串是否大于s2字符串,按asc码逐个比较,下同
(STD-STRING-NOT-GREATERP s1 s2) s1字符串是否大于等于s2字符串,按asc码逐个比较,下同
附件,搜索,匹配
(STD-STRING-ELT str i) 返回第几个字符,以0为起点 "(std-string-elt ""12"" 0) => 64"
(STD-FIRSTCHAR str) 第一个字符
(STD-LASTCHAR str) 最后一个字符
(STD-LASTCHARS n str) 最后n个字符
(STD-STR-1 str) 去掉最后一个字符的字符串
(STD-STR-N n str) 去掉最后n个字符的字符串
(STD-STRPOS substr str) 子串str在母字符串substr中的起点位置,以1为基准点 "(std-strpos ""0123"" ""12"") => 2"
(STD-STRIPOS substr str ) 与上同,但大小写不敏感 "(std-stripos ""Test"" ""t"") => 1"
(STD-STRING-POSITION ichar str ) 这个没有说明
(STD-STRCMP substr str ) 检查子串str是否母串的开头几个字符组成的
(STD-STRICMP substr str ) 与上同,但大小写不敏感 "(std-stricmp ""Test"" ""TEST"") => T"
(STD-STRING-MISMATCH str1 str2) "类似vl中的vl-string-mismatch,返回两个字符串中从指定位置开始,最长的共同前缀的长度 " "(std-string-mismatch ""STD-FUN"" ""STD-VAR"") => 3"
(STD-WCIMATCH str match) 和Wcmatch类似,不过大小写不敏感 "(std-wcimatch ""testname"" ""Test*"") => T"
(STD-STRCOUNT substr str ) 子串在某字符串中出现的个数 "(std-strcount ""1Test1"" ""1"") => 2"
(STD-STRMEMBER match strlst) 和member类似,不过可以使用适配符#,*之类,大小写敏感 "(std-strmember ""Test*"" '(""0"" ""Testname"" ""Testlayer""))=>(""Testname"" ""Testlayer"")"
(STD-STRIMEMBER match strlst) 见上一个函数,大小写不敏感 "(std-strmember ""Test*"" '(""0"" ""Testname"" ""Testlayer""))=> (""Testname"" ""Testlayer"")"
(std-strlist-match ) 返回所有符合要求的字符串,使用WCMATCH适配符模式 "(std-strlist-match '(""Testname"" ""0"" ""Testlayer"") ""Test*"")=> (""Testname"" ""Testlayer"")"
转换类型
(STD-STRCASE str) 类似strcase,转大写或小写,不过更高级的是可以转换其他8位的非英语字母
(STD-STRING-UPCASE 'str) 类似上一函数,专门转大写
(STD-STRING-DOWNCASE 'str) 类似上一函数,专门转小写
(STD-STRING-CAPITALIZE 'str) 类似上一函数,所有单词第一字母变大写,其他字母变小写
(STD-CPTRANS str from-cp to-cp) 代码页的转换,这个函数不是很懂
(STD-SYMBOL-NAME sym) 返回包含某符号名的字符串,类似vlisp中的vl-symbol-name "(std-symbol-name 'my-var) => ""MY-VAR"""
(STD-TOSTR sym) 将多种表达式转化为字符串 "(std-tostr '(0 1 2)) => ""(0 1 2)"""
替换
(STD-STRING-SUBST new old str) 代替字符串str中的old字母为new字母,只代替第一个找到的 "(std-string-subst ""new"" ""old"" ""old-test-old"")=> ""new-test-old"""
(STD-STRCHG str old new) 类似上一函数,代替所有找到的 "(std-strchg ""test"" ""s"" ""S"") => ""teSt"""
(STD-STRING-TRANSLATE old new str) 类似VL函数中的vl-string-translate,在字符串中替换字符 "(std-string-translate ""abcdefgh"" ""ABCDEFGH"" ""my house is yellow"")=> ""my HousE is yEllow"
(STD-STRING-WC-REPLACE str pattern new options) wildcard代替 "(std-string-wc-replace ""my House is yellow"" ""[aeiou]""'(std-strcase $&) ""c4"")=> ""my HOUsE Is yellow""
"
(STD-ENTAB str n) 把一堆空格改为tab表示 "(std-entab "" test"" 8) => ""\ttest"""
(STD-ENTAB8 str) 类似上一个函数,tab的定义为第八个字符 "(std-entab "" test"" 8) => ""\ttest"""
(STD-DETAB str n) 把tab返回空格 "(std-detab ""\ttest"" 8) => "" test"""
(STD-DETAB8 str) 类似上一个函数,tab的定义为第八个字符 "(std-detab ""\ttest"" 8) => "" test"""
处理特殊记号
(STD-STRTOK str delims) 把字符串str按照某些特殊符号组合delims分割成表,delim可以是空格,逗号等的组合,不分先后,不留空元素 "(std-strtok "" ,1, 2"" "", "") => (""1"" ""2"")"
(STD-STRSPLIT str delim) 类似上个函数,保留空元素 "(std-strsplit "",1"" "","") => ("""" ""1"")"
补充
(STD-STRJOIN strlst delim) 将strlst字符串表用连接符delim连成一个字符串 "(std-strjoin (std-int-list 4) "","") => ""0,1,2,3"""
有用的函数
(STD-STRING->LIST str) 把一字符串转为ascii码组成的表,vl-string->list "(std-string->list ""012"") => (48 49 50)"
(STD-LIST->STRING intlst) 与上相反,是vl中的vl-list->string "(std-list->string '(49 50)) => ""12"""
(STD-LIST->WSTRING intlst) 与上类似,不过可以处理比256大的ascii码 "(std-list->wstring '(49 50 9600)) => ""12€"""
缩写
(STD-STRING->STRLIST str delims) 把字符串str按照某些特殊符号组合delims分割成表,delim可以是空格,逗号等的组合,不分先后 "(std-string->strlist "" , 1, 2"" "", "")=> (""1"" ""2"")"
(STD-STRLIST->STRING strlst delim) 同上相反,把一个由字符串组成的表逐一加上delims符号组成新的字符串 "(std-strlist->string '("""" ""1"" ""2"") "","")"
(STD-CSSTRING->STRLIST str) STD-STRING->STRLIST函数的特例,专门拿来处理逗号和空格 "(std-csstring->strlist "" , 1, 2"")) => (""1"" ""2"")"
(STD-STRLIST->CSSTRING strlst) STD-STRLIST->STRING的特例,专门拿来加上逗号 "(std-strlist->csstring '("""" ""1"" ""2"")) => "",1,2"""
(STD-DCLSTRING->STRLIST str) STD-STRING->STRLIST函数的特例,专门拿来处理空格 "std-dclstring->strlist (get_tile ""mlist""))(mapcar 'atoi (std-dclstring->strlist ""1 2 3"")) => (1 2 3)"
(STD-STRLIST->DCLSTRING strlst) STD-STRLIST->STRING的特例,专门拿来加上空格 "(std-strlist->dclstring (mapcar 'itoa '(1 2))) ; => ""1 2"""
格式化
(STD-TRIM str) 去掉字符串前后的空格,以及\t\n之类的特殊符号 "(std-trim ""\n\t test "") => ""test"""
(STD-STRING-TRIM charbag str) 类似上一个函数,专门去掉\t\n之类的符号 "(std-string-trim ""\n"" ""\n\t test\t "") => ""\t test\t """
(STD-STRING-RIGHT-TRIM charbag str) 类似上一个函数,专门去掉字符串后部\t\n之类的符号 "(std-string-right-trim ""\t "" ""\n\t test\t "") => ""\n\t test"""
(STD-STRING-LEFT-TRIM charbag str) 类似上一个函数,专门去掉字符串前部\t\n之类的符号 "(std-string-left-trim ""\n"" ""\n\t test\t "") => ""\t test\t """
(STD-STRING-REMOVE-COMMENTS 'str) 去掉字符串中由;开始引导的注释部分
(STD-STRING-LEFT-PAD-CHAR str len fill-char) 将字符串进行左取齐,切掉或者补齐其他部分 "(std-string-left-pad-char ""0001"" 3 "" "") => ""000"""
(STD-STRING-RIGHT-PAD-CHAR str len fill-char) 将字符串进行右取齐,切掉或者补齐其他部分 "(std-string-right-pad-char (rtos 1.0) 6 ""-"") => ""---1.0"""
(STD-LPAD s len) 将字符串补齐到规定的长度,左对齐 "(std-lpad (rtos 1.0) 6) => ""1.0 """
(STD-RPAD s len) 将字符串补齐到规定的长度,右对齐 "(std-rpad (rtos 1.0) 6) => "" 1.0"""
(STD-STRCENTER str len) 将字符str填充为长度len的字符,补充前后空格,字符串置中, "(std-strcenter ""test"" 10)=>"" test "" (std-strcenter ""test"" 10) => "" test """
杂类
(STD-RTOS num) 按最大精度转换为字符串 "(std-rtos 2.01) => ""2.01"""
(STD-MAKE-STRING n def) 创建n个def组成的字符串 "(std-make-string 5 ""x"") => ""xxxxx"""


点,线和几何关系
函数名称 函数意义 例子
(X-OF pt) (x y [z])的x值
(Y-OF pt) (x y [z])的y值
(Z-OF pt) (x y [z])的z值
(XY-OF pt) (x y [z])的(x y)值
"(STD-X-MIN,STD-Y-MIN,STD-Z-MIN pts) " " 点集中的x,y,z下限值"
"(STD-X-MAX,STD-Y-MAX,STD-Z-MAX pts) " " 点集中的x,y,z上限值"
"(STD-XY-MIN, STD-XY-MAX pts) " 包住点集的矩形边界中的左下角点,右上角点
"(STD-XYZ-MIN, STD-XYZ-MAX pts) " 包住三维点集长方体边界中的最小和最大点
(STD-PT+ p1 p2) 矢量相加
(STD-PT- p1 p2) 矢量相减
(STD-MIDPT pt1 pt2) 两点的中点
(STD-HALFPT pt) 返回点和原点的中点
(STD-NEW-Z pt num) 把点pt的z坐标改到数num
(STD-ADD-Z pt num) 把点pt的z坐标增大数num
(STD-RANDOM-PT) " [0,0,0] [1,1,1]范围的的随机点"
点的谓词Point Predicates:
(STD-POINTP pt) 是否2d或3d点
(STD-2DPOINTP pt) 是否2d点
(STD-3DPOINTP pt) 是否3d点
(STD-SEG-P obj) 是否多义线(复线)中的一段
Geometry:普通几何体
(STD-DISTANCE-2D p1 p2) 在p1和p2在当前wcs上的投影距离
(STD-TRANS01 pt) 把点pt转换到UCS中
(STD-TRANS10 pt) 把点pt转换到wCS中
(STD-MAPTRANS01 pts) 把点集pts转换到UCS中
(STD-MAPTRANS10 pts) 把点集pts转换到WCS中
(STD-FIXANG angle) 将一个由弧度表示的角度等效到0~2pi的范围内
Advanced Geometry:高级几何体
(STD-CENTROID-2D pts) 2维封闭多义线组成的图形的形心,要求输入顶点集坐标
(STD-VECTOR-MEAN-3D pts) 3维点与原点形成的矢量集的平均矢量
(STD-VECTOR-MEAN pts) n维点与原点形成的矢量集的平均矢量
(STD-CCW p0 p1 p2) p0 p1 p2的方向是否顺时钟?
(STD-PTONSEG-P p1 p2 testpt) testpt是否位于p1和P2形成的线段上,包括在端点
(STD-INSIDE-POLY-P pt pts) 点pt是否位于pts形成的多义线区内,UCS
"多义线的段,及凸度Segments, Bulges:"
(STD-MAKE-SEG p1 p2 bulge) " 由p1,p2创建pline中的一段线,bulge可以是空的"
(STD-SEG-P1 seg) 段(指的是多义线中的一段,下同)的起点
(STD-SEG-P2 seg) 段的第二点
(STD-SEG-BULGE seg) 段的凸度bulge
(STD-SEG-BULGE-NUM seg) 段的凸度bulge,保证是一个数值,用0代替nil
(STD-SEG-ANGLE seg) 等同于对段的端点p1-p2进行angle操作得到的结果
(STD-SEG-LENGTH seg) 返回带有凸段弧线的长度
(STD-SEG-PTS-DIST seg) 段两个端点p1-p2的直线距离
(STD-SEG-STRAIGHT-P seg) bulge是否为nil
(STD-SEG-P1-UC seg) 当前UCS中的段的起点p1坐标
(STD-SEG-P2-UC seg) 当前UCS中的段的端点p2坐标
(STD-SEG-ANGLE-UC seg) 当前UCS中的段的p1和p2形成的角度
(STD-SEG->CIR seg) 对一个凸段返回一个相关的圆,结果是一个列表(中点,半径)
(STD-ARC->SEG cir ang1 ang2) 把由圆及两个起始角确定的弧转为段seg
(STD-ARC->BUL p1 p2 cir ccw) " 根据端点,圆,和ccw(符号,决定顺逆时针)来确定凸度"
(STD-BUL->ANG seg) 根据段的起点终点和凸度求弧段圆心角
(STD-ARC->ANG chord rad) 给定弦长和半径求弧长
(STD-ARCLEN seg) 计算段的弧长
(STD-PTS->SEGS pts) 点集到段集,全是直线,(p1 p2 p3) ((p1 p2)(p2 p3))
(STD-SEGS->PTS segs) 段集变为点集,忽略凸度,((p1 p2 0.5)(p2 p3)) (p1 p2 p3)
(STD-POLYEDGE i poly len) 多义线的第i段
(STD-SEGS-CLOSED-P segs) 是否闭合的多义线


数学函数
函数名称 函数意义 例子
内置定义
*INFINITY* 1.7e308
*NUM-TOL* "1e-6, 比较的精度"
*EPSILON* "1e-12, 用户自定义的一个极小值"
*MACHINE-EPSILON* "0.000000000000000222, 足够小的数"
*MAX-INT* 最大的整数
*MAX-LONGINT* "2147483647,带正负号的最大长整数(32位)"
*MAX-SHORTINT* "32767, 带正负号的最大短整数(16位)"
*MAX-REAL* "1.7e308 , 双精度最大浮点数"
*PI2* " (* PI 2), PI doubled, 360°"
*PI/2* " (/ PI 2), 90°"
*PI/4* " (/ PI 4), 45°"
逻辑关系
AutoLISP内置函数
(LOGAND int int...) 返回一个整数表中的各数按位逻辑与 (AND) 的结果
(LOGIOR int int...) 返回一个整数表中的各数按位逻辑或 (OR) 的结果
(BOOLE func int int...) 用作一个通用的按位逻辑运算函数
(LSH int num-bits) 返回某整数作指定次逻辑移位后的结果
StdLib函数:
(STD-LOGXOR int int) 同(boole 6 int1 int2)相同,对两个数逐位取or
(STD-LOGNOT int) 对一个数逐位取1的补数
(STD-BITSETP val flag) (std-bitsetp 128 1) => nil
(STD-SETBIT val flag) (std-setbit 128 1) => 129
(STD-BITDEL val flag) (std-bitdel 128 129) => 1
(STD-BITLIST int) list of bitvalues
(STD-BITTOGGLE val flag) toggles bits in flag
基数转换
(STD-NUM->HEX int) 十进制到十六进制 "(std-num->hex 10) => ""A"""
(STD-HEX->NUM str) 十六进制到十进制 "(std-num->hex ""2a"") => 42"
(STD-NUM->BINint) 十进制到二进制 "(std-num->bin ""2"") => (1 0)"
(STD-BIN->NUM intlst) 二进制到十进制 (std-bin->bin '(0 1 1)) => 3
(STD-NUM->OCTint) 十进制到八进制 "(std-num->oct 151) => ""227"""
(STD-OCT->NUM str) 八进制到十进制 "(std-oct->num ""227"") => 151"
函数
AutoLISP内置函数
(EXP num) e的num次方
(EXPT num x) num的x次方
(LOG num) 自然对数
(SQRT num) 平方根
StdLib函数:
(STD-SQR num) 平方
(STD-SQRT num) 平方根,据说比系统的sqrt好的地方是整数平方根就是整数
(STD-EXPT num x) 数num的x次方
(STD-ROUND num) 四舍五入到最接近的整数
(STD-FRACTION num) 只取出分数部分 (std-fraction -12.03) => 0.03
(STD-FLOOR num) 向下取整 (std-floor 1.1) => 1 (std-floor -1.1) => -2
(STD-CEILING num) 向上取整 (std-ceiling 1.1) => 2 (std-ceiling -1.1) => -1
(STD-LOG2 int) " log2, log 的基数是2"
(STD-LOG10 num) " log10, log 的基数是10"
(STD-ISQRT num) 返回数值平方根的整数部分 (std-isqrt 3) => 1 (std-isqrt 4) => 2
(STD-GCD intlst) 返回数值表的最大公约数 (std-gcd '(2 4 8)) => 2
(STD-LCM intlst) 返回数值表的最小公倍数 (std-lcm '(2 3 4))=> 6 (* 2 3)
统计相关
(STD-MEAN numlst) 数值表的平均值 (std-mean '(0 0 2 4 12)) => 3.6
(STD-MEDIAN numlst) 比数值表中一半数大,比另一半数小的一个数 (std-median '(0 0 4 12) => 2.0
(STD-STANDARD-DEVIATION numlst) 说明不清楚的一个函数,返回一个你想要的数
质数,只存在质数模块
(STD-PRIMEP n) n是否质数 (std-primep 10000005) => nil
(STD-PRIME-FACTORIZATION n) n的质数分解 (std-prime-factorization 1118) => (43 13 2)
(STD-PRIMES n) 小于n的所有质数的列表 (std-primes 21)=> (19 17 13 11 7 5 3 2)
随机数
(STD-RANDOM num) 一个小于num的随机数
只存在随机数模块中
(STD-MAKE-RANDOM-STATE num) 关于随机状态的一个函数
(STD-RANDOM-STATE-P num) 关于随机状态的一个函数
三角函数
AutoLISP内置函数和常数
PI PI 具有最大的精度
(SIN radians) 正弦
(COS radians) 余弦cosine
(ATAN radians) 余切
StdLib函数:
(STD-DTR degree) 角度转弧度
(STD-RTD radians) 弧度转角度
(STD-TAN radians) tan x = sin x/cos x正切
(STD-ACOS radians) arc cosine反余弦
(STD-ASIN radians) arc sine反正弦
(STD-SEC radians) secant正割
(STD-CSC radians) cosecant余割
(STD-ASEC real) arc secant反正割
(STD-ACSC real) arc cosecant反余割
(STD-ACOT real) arc cotangent反余切
(STD-SINH radians) hyperbolic sine双曲正弦
(STD-COSH radians) hyperbolic cosine双曲余弦
(STD-TANH radians) hyperbolic tangent双曲正切
(STD-SECH radians) hyperbolic secant双曲正割
(STD-CSCH radians) hyperbolic cosecant双曲余割
(STD-ARSINH real) hyperbolic area sine
(STD-ARCOSH real) hyperbolic area cosine
(STD-ARTANH real) hyperbolic area tangent
(STD-SIGNUM num) " 返回一个数是正数负数或者是0-1, 0 or 1"
"排列组合函数,存在外部函数模块COMBINATIONS:"
(PERMUTATE lst) 返回一个表的各种排列(不在lisp中)
(COMBINATIONS lst m) 表取出m个元素的组合n!/m!(n-m)!
(PERMUTATIONS lst m) 表取出m个元素的排列
(FACTORIAL n) n的阶乘!
(COMBINATIONS-COUNT n m) n!/m!(n-m)!
(PERMUTATIONS-COUNT n m) n!/(n-m)!
(NTH-PERMUTATION i lst) 表的第i种排列排列
(NTH-PERMUTATIONS i lst m) 表取出m个元素的第i种排列
(NTH-COMBINATIONS i lst m) 表取出m个元素的第i种组合


文件操作函数
函数名称 函数意义 例子
文件名
(STD-MAKE-PATHNAME list) 将一个表内的内容组成文件目录和文件名 "(setq a (list ""c:"" ""123.txt""))=> (""c:"" ""123.txt"") (STD-MAKE-PATHNAME a)=> ""c:\\123.txt"""
(STD-FPSLASH fspec) " 作如下事情 ""d:/acad"" -> ""d:\\acad\\"""
(STD-FILENAME-SPLIT fspec) " 作如下事情,变表 ""d:\acad\lisp.doc"" -> '(""d:\acad\"" ""lisp"" "".doc"")"
(STD-FILENAME-DIRECTORY fname) " 只取出路径," "(std-filename-directory ""d:/acad/test"") => ""d:\\acad\\"""
(STD-FILENAME-BASE fspec) 只取出文件名 "(std-filename-base ""d:/acad/test.lsp"") => ""test"""
(STD-FILENAME-EXTENSION fspec) 只取出文件后缀名 "(std-filename-extension ""d:/acad/test.lsp"") => "".lsp"""
(STD-FILENAME fspec) 同时取出文件名和后缀名
(STD-FILEBASE fspec) " 目录和文件名,没有后缀"
(STD-FORCE-PATH path fname) " 用新目录代替原目录,文件名不变" "(std-force-path ""d:/acad"" ""e:\\lisp\test.lsp"") => ""d:\\acad\\test.lsp"""
(STD-DEF-EXTENSION fname defext) " 将文件和文件名联合起来,假如原来已经有文件名,则不作修改"
(STD-FORCE-EXTENSION fname ext) " 与上个函数类似,但强制改后缀"
(STD-LONGFNAMEP fname) 是否长文件名?
(STD-FILENAME-UPCASE fname) 对非长文件名返回大写的目录和文件名
Directories目录,需要外部函数,比如doslib或者vital lisp/visual lisp环境,2k+的acad应该可以用
判断
(STD-PROBE-FILE fname) " 判断文件是否存在,返回nil或者文件名"
(STD-FILE-EXIST-P fname) " 判断文件是否存在,返回nil或者T"
(STD-FILE-READABLE-P fname) " 判断文件是否可读,T or nil"
(STD-FILE-WRITABLE-P fname) " 判断文件是否可写,T or nil"
(STD-FILE-DIRECTORY-P fname) " 判断是否合法目录,T or nil"
(STD-DOS-FILENAME fname) 把长文件名变为dos 8.3 的短文件名
(STD-SAME-FILES-P fname1 fname2) " 两个文件是否相同,T or nil"
杂项
(STD-FILENAME-MKTEMP prefix) 创建一个与现有临时文件不同的临时文件 "(std-filename-mktemp ""/mydir/$t"") => ""/mydir/$T000.AC$"
文件属性
(STD-FILE-SYSTIME fname) 用cdate方式给出文件的创建或最后更新时间 "(std-file-systime ""/acad/"") => 19971230.202520"
(STD-FILE-MODTIME fname) "与上类似,给出修改时间,cdate格式,用了vl函数"
(STD-FILE-SIZE fname) 文件大小
(STD-FILE-ATTRIB fname) " 文件属性标记,1: 只读,2: 隐藏,4: 系统,8: archive,2048:压缩"
(STD-FILE-NEWER-P target deps) 对比第一个文件创建时间是否早于第二个文件
全局
(STD-DIRECTORY-FILES fspec) 用一个表返回某目录下所有的文件及目录 "(STD-DIRECTORY-FILES ""k:\\book\\"")"
(STD-GLOB-FILES fspec) 列出目录下符合某种适配符格式的所有文件 "(std-glob-files ""C:/ACAD/SUPPORT/*.LSP"")"
(STD-GLOB-DIRS fspec) " 与上类似,列出的是文件夹" "(std-glob-dirs ""*L*"")"
搜索
(STD-FINDFILE fspec) " 搜索文件搜索目录下的某个文件,先找 *MODULE-PATH* 下的文件, 再找acad的默认路径" "(std-findfile (std-def-extension ""acad"" ""lsp""))"
(STD-FINDFILE-PATHS fspec path-list) 搜索在path-list目录集下面的某个文件
(STD-FINDFILE-EXTS fspec ext-list path-list) " 与上类似,增加后缀集"
(STD-ACAD-LIBRARY-PATHS) (std-acad-library-paths)给出cad的preference中指定的搜索路径
系统System
对文本文件直接支持,对二进制文件需Vital Lisp/Visual Lisp or ADS/ARX支持
(STD-FOPEN fname ch) 代替(open fname ch)
(STD-FCLOSE f) 代替(close f)
(STD-FCLOSEALL) 用于在出错的时候关闭所有打开过而未关闭的程序
(STD-CURRENT-PATH) " 给出当前的目录,比如""C:/ACAD/"""
(STD-CURRENT-DRIVE) "给出当前的目录所在的盘符 ""C:"""
(STD-TRUENAME fname) " 给出一个绝对的,唯一的带绝对路径完整文件名," "(std-truename ""acad/../acad/test.lsp"") => ""C:\\acad\\test.lsp"""
(STD-MKDIR fname) 创建一个目录
(STD-RMDIR fname) 移除一个目录
需外部支持函数
(STD-FILE-COPY from to) 拷贝文件 "(std-file-copy ""/acad/test.lsp"" ""/acad/test.bak"")"
(STD-FILE-APPEND dest source) 把source的内容加到dest后面去. "(std-file-append ""mymenu.mnu"" ""menuadd.txt"")"
(STD-FILE-DELETE fname) 删除一个文件
(STD-FILE-RENAME old new) 重命名文件
(STD-FILE-BACKUP fspec) 另存一份拷贝到.BAK文件中去
(STD-GET-DRIVE-LIST) " 用表格式给出所有逻辑盘符: (""A"" ""C"" ""D"" ""E"")"
处理文本文件: (与系统无关)
(STD-FT-COPY fn1 fn2) 拷贝fn1到fn2
(STD-FT-APPEND fn1 fn2) 追加fn2到fn1后面
(STD-FT-BACKUP fspec) 用一个.bak的文件来备份fspec指定的文件
(STD-FT-NTH-LINES fname line) " 返回文本文件第line行的内容(std-ft-nth-line (std-findfile ""acad.pgp"") 1)"
(STD-FT-LINES fname from to) 返回文本文件第from行到to行的内容
(STD-FT-INSERT fname strlst num) 将字符串strlst插入到文本文件中的第num行
(STD-READ-FILE-STRINGS fname) " 将文件fname中每一行的内容读出,输出到一个表,忽略"
(STD-READ-FILE-LIST fname) " 读出一个lisp文件,每一句用一个子表来表示"
"二进制文件(这个不是很懂,大概是高级应用吧)Binary File IO:" (std-require-external 'BINIO)
下面这些功能不能用普通的lisp函数处理.
(BINIO-FOPEN fname mode) " 用""r"" ""w"" ""rw"" ""a""模式打开"
(BINIO-FCLOSE f) 关闭由fopen打开的文件
(BINIO-FCLOSEALL) 在错误时关闭所有文件
(BINIO-FSEEK f pos [start-from]) 移动指针到给定位置
(BINIO-FTELL f) 返回指针位置
(BINIO-REWIND f) 把指针移到0
所有fput函数接受单个或者表类型
(BINIO-FPUTC f int|list-of-ints) 写一个字节或者一个字节表到一个stream(文件?)中
(BINIO-FPUTINT f int|list-of-ints) "与上类似,写入的是整数"
(BINIO-FPUTLONG f long|list-of-longs) "与上类似,写入长整数"
(BINIO-FPUTREAL f real|list-of-reals) "与上类似,写入的是IEEE的4字节长浮点数"
(BINIO-FPUTS f str|list-of-strs) "与上类似,写入的是ASCIIZ的字符串,不理\r和\n是结束"
(BINIO-FPUTSTRING f str|list-of-strs) "与上一个函数相似,但对\r\n进行处理"
(BINIO-FGETC f) " 类似read-char读出一个字节,但是也可以处理0x0"
(BINIO-FGETINT f) 读出带符号的短整数
(BINIO-FGETREAL f) " 读出IEEE的四字节数,实数"
(BINIO-FGETLONG f) 读出带符号的长整数
(BINIO-FGETS f) " 读出ASCIIZ string字符串,不理会\r和\n"
(BINIO-FGETSTRING f str) " 类似上一个函数,但对\r\n进行处理"
INI 文件的处理: Possible Extension 要求(std-require 'INIFILE)
(INIFILE-GET section entry filename) "和doslib1.4 中的dos_getini类似,读取filename这个ini文件中section段的entry内容"
(INIFILE-SET section entry string filename) 对Ini文件的entry段进行内容添加
注册表项 ,要求(std-require 'REGISTRY) ,只对windows进行定义.
(REGISTRY-READ path key) 获取键值
(REGISTRY-WRITE path key value) 改变键值
(REGISTRY-DELETE key) 删除一个键或者空的注册树
(REGISTRY-DESCENDENTS key) 用表给出各个子键值
(REGISTRY-VALUES key) 给出各个子键值
(REGISTRY-ACAD-PRODUCT-KEY) " 给出这个路径""Software\\Autodesk\\AutoCAD\\R14.0\\ACAD-2450602:33318886"""
"用户输入,模拟一些autocad的文件对话框,扩展getfiled"
(STD-GETFILEM msg def ext flag) 同时获取多个文件的对话框
(STD-SHOWFILE fname) 类似acad的命令about
(STD-SHOWFILE-DIALOG fname title action) 与上类似.