2007年3月28日星期三

blogspot老是会down的

看来以后还会经常性的不能访问,有空得备份一下了。
最近写论文和非线性的作业,对混凝土结构的滞回模型突然有了比较大的兴趣,于是思考怎么用python来实现,下载了numpyscipy,还有matplotlibpygist,觉得挺好的。就是比较喜欢这种矩阵的操作方法,不过后两个作图软件不时会出点小毛病就是。
还有一个号称大全的enthought python --http://code.enthought.com/

软件方面没有看其他什么了,不过配合excel和一个叫“实用汉字转拼音”的软件,做了一个很实用的listpro通讯录,确实觉得很好用。不知道在excel中能否直接提取汉字的拼音,是否有这种函数,听说要装了微软输入法才能初步考虑,于是就没有测试了。

查了一下,发现在blogspot不能访问的时候,似乎大家都没有闲着在找对付方法一样
踏雪无痕:http://www.txwh.info/
pkblog: http://www.pkblogs.com/
gg派: http://groups.google.com/group/ggpi/web/hostwiki

在firefox里面自定义颜色字体和在ie里面利用css来自定义页面有时候挺好的,就是不知道如何在firefox里面强制使用css样式。

2007年3月18日星期日

非常好用的资料管理程序Listpro

非常好用的资料管理程序Listpro

老是为pda中没有太好的通讯录软件而劳神,竟然忘记了Listpro。其实它的pc端软件照样功能强大。各位不妨一试。
hi-pda中有不少关于它的介绍,我就不再啰嗦的了。

Autocad相关程序(外挂程序)小览

Autocad相关程序(外挂程序)小览

Autocad也用了10来年了,外挂系列的测试版也用了不少,这帖子反正会不定时添加,就作为一种记录吧。不过最近比较忙,只能慢慢来了。主要先介绍国外程序,国内程序其实也有许多优秀作品的。先把常用的,觉得不可或缺的先加上一些星号吧。不过其实常用的外挂很少。也就2,3个。画图的时候基本是用R14,加上几千个lisp做成的chm文件,配合lisplink,随用随调,也不比谁慢,是吧?:)

(华南理工大学建筑学院 陈庆军)
转载请注明

3dBurst for AutoCAD
一个arx程序,三维操作

ABviewer ★★★★★
一直以来,cad的览图软件都是我喜欢和追求。此软件个人感觉最好。

Acme CAD Converter
cad版本转换

Active DWG DXF Converter

AlignAndSpace for AutoCAD

Amethyst CADconvert

Amethyst CADwizz

Any DWG产品
Any DWG to DWF Converter

Any DWG To Image Converter Pro

AnybodyCAD for AutoCAD

AnyDWG DWF to DWG Converter

AutoCAD DWG and DXF To PDF Converter

Autodesk True Convert ★★★★★
Autodesk公司自己出的版本转换软件,应该是如假包换吧,转换2007版本的True Convert有30多M,巨大。不过其览图软件true view竟然达100多M,更吓人。


AutoDWG产品
AutoDWG convert

AutoDWG DWG to Flash Converter

AutoDWG Active DWG DXF Converter

AutoDWG Attribute Extractor

AutoDWG DWG to Flash Converter

AutoDWG DWG to Image Converter

AutoDWG DWG2DWF Converter

AutoDWG DWG2PDF Converter

AutoDWG DWGSee

AutoDWG DWGSee Pro

AutoDWG PDF2DWG Converter

AutoHook
Autohook ★★★★★
一个AutoCAD的按键加速程序.
--------------------------------------------------------------------------------
介绍
网址: http://www.command-digital.com
等级:★★★★★.
用法:1)打开软件,进行设置,在key中填入需要的热键,在Macro中填入相应的命令.
评论:非常好的AutoCAD热键加速程序。从14版开始用。
技巧:注意备份ini文件,注意,它可以可以放在U盘中的绿色软件。
你觉得自己绘图速度还不够快?想再进一步?可以试试Autohook。
使用范例:(注意,以下书名号不需要输入的)
1. 不喜欢按完命令还要按空格。比如你希望按'键,就实现特性匹配的命令,那么如此定义。在key中按《'》,然后在Macro中输入《_matchprop 》,注意最后有一个空格键。则以后只需按'键,不需要按空格,不需要按回车,不需要按鼠标右键,就可以实现属性匹配了,非常好用。
2. 不喜欢F8的正交切换,希望换到其他按键,比如TAB,那么这样来定义。在key中按《TAB》,然后在Macro中输入《'^O 》就可以了。
3. 希望一按某个按键比如F4,就实现某种捕捉设置。比如end, cen, int, per, nea五种。那么在key中按《F3》,然后在Macro中输入《'osmode 673 》
其他种种,有待您去开发了,该程序也自带了不少了。
以上这些古怪的语言和数字,是因为我是天才,想出来的么? :),不不不,请去参考Autocad自定义菜单-菜单宏的语法和一些系统变量的知识。您经常在网上查找Autocad技巧么?只要您能把Autocad的帮助看上一遍,嘿嘿,保证是超级高手了,我看了10年都还有许多没看完呢。
范图


AutoNest for AutoCAD
AutoXlsTable For AutoCAD
Batch Script Processor for AutoCAD

BetterWMF ★★★★★
一个将AutoCAD的图输出为WMF矢量图的软件.
--------------------------------------------------------------------------------
介绍
网址: http://www.furix.com
等级:★★★★★
用法:1)打开软件,设置完毕后,每次在AutoCAD中选择复制的时候,会自动将其转为可插入到Word文件中的WMF图形.
用法:2)设置ARX加载.
评论:不可缺少的AutoCAD程序。大概在99年就开始用了,当时应该是在autocad中国网站的网页上看到的。其时版本为2.0左右。
技巧:软件提供了Lisp函数,可以通过(bcopyclip (ssget "X"))之类的语句加载
你对AutoCAD的图形插入到Word文件中感到头痛么,那你有必要用它试试。
它的主要特点,同时也对比一下我们平时拷贝的不便之处:
1.自动去掉ACAD的背景颜色。我们知道,ACAD的背景颜色是自己定义的,很多朋友喜欢用黑色作为底色,那么拷贝图形到WORD的时候,往往需要修改背景颜色为白色,如此切换甚是麻烦。
2.自动修剪图形边缘。采用普通拷贝粘贴有一个结果就是,拷贝后的图形周边有很大一部分的空白边缘,需要在WORD里面将之修剪去掉,这个工作也很繁琐。
3.自动修改颜色。假如我们写科技文章的话,一般都需要将图形全部采用黑色线型,这时候在拷贝之前我们就需要将图形改为黑色线型,虽然不难,也挺费工,更别说什么时候碰到标注是其他颜色的情况了。
4.它将拷贝的图形自动转变为WMF图片,我们知道WMF(Windows Metafile)是一种很好的矢量图形格式,缩放时不会影响图形质量,文件大小也很小。
5.这个应该说是这个软件的重头戏了,它可以设置线宽。假如大家用过激光打印机的时候,肯定有这样的感觉,将没有设置线宽的ACAD图形拷贝到WORD里面,打印的时候线条特别的细,因此不得不在ACAD里面采用多义线来绘制图形,很麻烦。我们也曾经梦想,ACAD能根据图形的颜色来设置打印线宽。BETTERWMF可以根据颜色来设置拷贝图形的线宽,拷贝出来的图形就像我们打印一样具有粗细之分。
范图






Cad Closure
CAD EASY EASYSITE AUTOCAD
CAD Viewer
CadoDraw and TcdPolygons for DnCB Suite

Cadpipe产品
Cadpipe 3D Design v7 0 for AutoCAD
Cadpipe Building Services for AutoCAD
Cadpipe Commercial PIPE for AutoCAD
Cadpipe HVAC for AutoCAD
Cadpipe ISO for AutoCAD
Cadpipe Ortho for AutoCAD
Cadpipe PID for AutoCAD

CADRaster PRO For AutoCAD
Carken DeskART
Cinderella
Dwg2Dwf

DWGTOOL产品
DWGTool DWG to IMAGE Converter
DWGTool DWG to PDF Converter
DWGTool DWG to SVG Converter
DWGTool DWG to SVG Converter MX
DWGTool DWG to WMF Converter

Excellink

Floating Point产品
Floating Point Solutions AutoProject
Floating Point Solutions MeshWorks
Floating Point Solutions Point Cloud
Floating Point Solutions Points to Surface
Floating Point Solutions STL Import
FXArray
IGES Import for AutoCAD
MassPlus LT
MassPlus Standard
Mech
MechSoft
PIX Import for AutoCAD
PLT Import for AutoCAD
SmartPurger
Spline Convert
Squiggle

SYCODE产品
SYCODE Mesh to Solid
SYCODE TerrainCAD
SYCODE 3DM Import for AutoCAD
SYCODE Mesh Booleans for AutoCAD
SYCODE Mesh To Solid for AutoCAD
SYCODE Mesh To Solid
SYCODE TerrainCAD
SYCODE Terrain for AutoCAD
Terrain for AutoCAD
Terrain For Autocad
TerrianCAD
The Geometers Sketchpad
VeryPDF AutoCAD DWG and DXF To PDF Converter
ViewCompanion Pro
ViewCompanion Pro
ZoomON Hp2Design Pro

对输入法的思考

对输入法的思考
最近把输入法换成搜狗的了。唉,其实用紫光也有5,6年了。只是随便试了一下,居然就变节了。郁闷。以前对搜狗的态度颇是抵抗,觉得炒作成分颇多,说不定还是流氓软件。不过既然用了,就谈谈一些看法吧。
它的特点就是把大家的优点都学了(是否该叫模仿或者抄袭?),紫光该有的他都有。还加上一些小功能,界面不错(起码个人现在用雅黑字体比在紫光的要好些),似乎准确率是高些(这点颇重要),切换间好像还没有出现什么问题(紫光会不时搞的我的caplock出点问题)。
仔细想想,市场就是这么奇怪,一个很好的软件(比如紫光),有一些小问题,一直没有解决很好。而另一个软件,可以把其优点全部模拟后,加些功能,就把紫光的老用户挖走了一个。市场挺残酷的。不过微软和google也经常做这样的事。看来这个世界确实变化快。

所以,又重新思考了,输入法还应该有什么变化?
1)专业词库,而且必须是开源的,编辑容易。(google了一下,好像拼音加加已经有了)。
2)英文单词的中文输入。比如键入hnt(混凝土),可以出concrete,键入本构关系,出现constitutive relation这个单词候选。这个必须有一个中英文词典做后备翻译。而且必须是专业性强的。因为普通的英文单词多义太多。我不觉得这点是翻译软件才要做的事。

工地中的见闻

工地中的见闻
周五,工地,吊装试验试件,20几吨的铸钢节点。定位很困难,好歹完成了。
通宵,细雨,机器的轰鸣。远处的探照灯彻夜不灭。
凌晨3点,夜宵。
工人们就着啤酒聊天。凝听。
他们都走遍了大江南北,从内蒙到广州,从北京机场到南京本部。
问他们的感觉,他们觉得很自豪,宏伟的北京新机场的某部分桁架拼接就是我完成的。他们乐观而自豪的精神感染着我。
走在离地几十米的高空,感觉如何?好的老板会满堂脚手架,差的老板就让你表演杂技。有走网架圆管,突然圆管转动差点跌下。工地常会出安全事故,但人命值钱否?他们说出事故的常是胆子太大的,大的都忘记了危险。有个40几岁的大哥,说,年轻时一点都不怕,娶了老婆生了孩子之后就有一点了。
看着他们乐观的精神,埋头苦干的态度,我很感动,在此,祝各位工人兄弟幸福快乐,平安第一。

10年经典软件

10年经典软件

什么软件是经典?能一直用10年?不升级版本一直到现在?
对我而言,仔细看了和思考了。 AutoCAD R14和 Microsoft Office97算是两个。
他们功能强大(至今尚未用完某些功能),帮助详尽,基本不落伍(宏,lisp编程等至今仍可做出许多不可思议的效果来)

2007年3月15日星期四

[Totalcmd]根据文本文件的内容依次对文件进行批量重命名

[Totalcmd]根据文本文件的内容依次对文件进行批量重命名

上次写过一篇关于根据某文件的第几行对各文件进行批量重命名的文章。
http://chenqj.blogspot.com/search/label/totalcmd

主要的方法是根据TC的一个script wdx插件编写脚本来完成的。

由于最近碰到一个类似的问题,有某期刊某一年的一批caj期刊文件,名字顺序是对的,但是只是简单的1,2,3之类的名字。而具体的文章名字通过查询期刊网已经按照顺序放在一个文本文件里面。

比如c:\123.txt中有新的名字顺序
1.数学的应用
2.物理的范畴

那么研究,写了一个这样的代码
(注:下面的代码是针对一个文件名前面有001,002等三个数字开头的txt文件进行操作的,其脚本给出的结果是根据这前面的三位数字代表的数值去查找相对应的c:\123.txt中的行的内容,来显示在wdx的content行中。)
(注1:怎么给待操作的文件预先加上3位数字?,可以通过先重命名一次来得到)
(注2:怎么根据content进行批量重命名:见重命名中的plugin部分)

vbs代码:

'Script for Script Content Plugin
'qjchen

Dim fso, ts, s, re, fd ,f
Set fso = CreateObject("Scripting.FileSystemObject")
sExt = lcase(fso.GetExtensionName(filename))
Const ForReading = 1

Select Case sExt
case "bar"
content="bar file"' Just For testing
'---------------------------------
case "txt"
Set fd = fso.GetFile(filename)
name = fd.Name
num=left(name,3)
num=cint(num)
f1="c:\123.txt"
Set f = fso.GetFile(f1)
Set ts = fso.OpenTextFile(f1, ForReading)
for i= 1 to num
s = ts.readline
next
ts.Close
content= s
Case Else
'content = sExt + " file type"
End Select


可以把这段代码存为该插件目录下的1.vbs

打开script.ini,修改其中的extension段为:

[Extension]
Script=1.vbs

结果如图



由于脚本编写水平属于现学现用型,有点乱,见笑了,应可精简不少。

2007年3月13日星期二

禁止AutoCAD中键双击最大化的Autohotkey代码

禁止AutoCAD中键双击最大化的Autohotkey代码

今天在xd论坛看到这样的帖子:如何禁止AutoCAD中键双击最大化

autodesk的论坛上有高手编过用反应器的方法来实现禁用中键双击,不过似乎有点难用。

这里介绍一种禁止AutoCAD中键双击最大化的Autohotkey代码

这段Autohotkey代码的用法:安装autohotkey,(请自己google)
安装完之后,打开记事本,键入如下代码

MButton::Send, 'pan{enter}


然后,保存为比如a.ahk
双击这个程序,那么以后在autocad里面双击就不会是最大化窗口了,简单吧?:)

但要注意一点,这个autohotkey不像autohook,它的代码对于所有应用程序都有用的,在其他程序中单击中键的功能会被修改,请慎重使用。

所以呢,还差一步如何判别应用程序的类型来实现仅某些程序限用。

本来想写禁止双击的,发现双击不会写,查了好久autohotkey论坛都没有结果。

代码虽然简单,但是它其实表明autohotkey也可以作为一种autocad的外挂,写的好的话有意想不到的效果。比如说读入文本绘制轴线,可能写起来比Lisp还简单。

比如Autohotkey还有一个有趣的功能,按左ctrl+鼠标滚轮实现alt+tab可以这样写,这个是其帮助文献中的经典应用啊。

LCTRL & WheelDown::AltTab
LCTRL & WheelUp::ShiftAltTab


相信Autohotkey可以像autohook一样来提高绘图速度,因为它对键盘的定义虽然还不如autohook,但是其鼠标的控制可是autohook所不具备的啊。

编写autohotkey的更好工具是textpad,可见这里http://chenqj.blogspot.com/2007/03/autohotkeytextpad.html

记录几个网站

最近写文章和在计算有限元,就没法写什么心得了。
在把一个200多M的solidwork的空间节点模型在进行网格划分的时候,总是死机。动用的软件涉及catia, abaqus, algor, ansys,inventor, 3ds max,在各种软件之间进行格式转换。
得到了如下几种结论
1)这个solidwork的建模建的不大好,有几个比较怪异的地方,老是导致划分失败
2)各个软件之间互通还挺成问题,有时候很难导入另外一个程序生成的通用格式
3)sat算是一种比较通用的格式,但是其版本繁多,非常容易就不兼容,挺伤脑筋的
4)最后可能还是得用abaqus慢慢的partition解决。

记录几个网站:
xbeta兄介绍的
http://www.donationcoder.com/
网站很好,最近正在准备把它的论坛翻一遍
找到了几个网站
http://www.libellules.ch/dotclear/index.php
http://pon.fr/
这是两个法语的小网站

一个写css的小软件,挺好用的
http://www.athlab.com/

两个中文blog
http://blog.roodo.com/emisjerry/
有一些不错autohotkey教程

http://www.wappblog.com/
看了这个网站,才知道web2.0是如此的多姿多彩

google reader越来越好用了
TextPad也出5.0了,不过感觉变化还不大就是。不过在我的鼓吹下,有不少师弟在写有限元文本的时候也慢慢用上它了,我也给他发去了好些语法文件。
这篇评论
http://www.donationcoder.com/Reviews/Archive/TextEditor/index.html
写的挺好的,还是比较专业的,虽然作者有些偏好,比如对于界面和某些功能。

2007年3月11日星期日

一道sudoku题,不知道怎么用Lisp编程求解

今天在作abaqus的参数分析,对constrain中的couple总是理解的不够充分,还要再研究.
昨晚上吃完饭,没事看《羊城晚报》,看到一道sudoku(数毒),就是让每行每列每个小九宫格中

都有一个1~9的不重复数字。以前对这个不屑一顾的,觉得哪够幻方之类复杂。没有竟然做了好久

:)。看来思维还需锻炼看问题不能片面。

作firefox portable的作者也作了portable sudoku,界面挺简洁的。

图片如下:


问题1,当然是完成
问题2,若是编程完成,思路如何,是否有点类似8皇后问题。(当然google是有的,不过最好就

先不去搜,自我再思考一下),Lisp的表结构在这方面有没有什么优势。

2007年3月8日星期四

撰写autohotkey代码的好工具-TEXTPAD

撰写autohotkey代码的好工具-TEXTPAD。

近日对Autohotkey颇有兴趣,有空会学一学。Xbeta兄推荐的是用vim编辑,vim的功能确实很强大,学起来也有点难度,在没有学通之前就先用用熟的软件来使用。

也不记得什么时候用上TextPad的了。大概是学Abaqus和Truegrid的时候,那个时候挺希望文件特征字高亮的,就像平时经常编Lisp用的Lisplink就很好,于是就google找到了它。

TextPad这个软件,最大的特点就是支持的语法高亮的文件类型特别多。
在它网站上有几百种之多。著名的有限元软件Ansys和Abaqus的语法高亮都有,于是就用它了。最近还刚给他们寄去了Diana和Truegrid两个自制的syn文件。

Autohotkey安装之后,在extra目录下有10来个文本编辑器的ahk代码(包括vim,ultraedit等著名编辑器),用于在该文本编辑器内进行设置。(其实这10来个ahk文件值得好好学习,只有对该编辑器有比较深入了解的时候才可以写的这么好)。

针对TextPad的ahk编的非常好。还在TextPad的工具菜单里面添加了Run Script的选项,以后编完ahk之后,按Ctrl+1就可以运行该ahk了,比较方便。



其实TextPad的功能不算很强,但是随着自己给它做了许多贴心的修改之后,就越发舍不得它了,一般我的文件编辑要求不高,实在一时没有办法的时候,会用Python编程来处理一下。顺带说说TextPad的其他几个特点:比如选高亮代码,按edit+other copy+ html page,可将高亮代码输出为html格式(这点vim也做的很好);clip library,可以在选定的文字前后加上一堆定义好的文字(写html有用),宏(做的不好,无法人工编辑);很好的按键重定义功能(有时候处理试验数据的时候拷贝粘贴作多了,会手指抽筋的,用它重定义拷贝粘贴键倒是不错)。对数字开头的句子,可以按顺序重排列等功能。

总而言之,它不是一个功能很强大的文字编辑软件,但是各人各取所需,是吧,我就喜欢它的高亮显示,可以做的很漂亮。

注意,有空得去注册表里面找到Textpad,把其备份下来,不然你的颜色配置方案重装系统后就没有了。

2007年3月6日星期二

AutoCAD 2008的一些新特性及与以往Lisp之小联系

AutoCAD 2008的一些新特性及与以往Lisp之小联系

qjchen

1)加了一种Annotaion的概念,可以在缩放详图的时候自动调整尺寸,这点对详图设计应该比较有用。所以必须学习一下annotation scale。而annotative object包含了好些实体,比如dimension,text等。2008把它当成第一个新特性,肯定认为是很重要的吧。
Lisp相关:以前有一个叫Detail的程序。

2)Dimension的一些增强,包括公差的对齐等等,还有给标注加截断线,加了一种叫Inspection Dimension的。给线性标注添加一种叫Jog line来表示尺寸和实际不符的情况(还没有想明白具体的作用)。
Lisp相关:以前有一个弧线长度标注的程序,不过在最近版本的cad中已经自己支持了。

3)自动调整标注之间的间距,使之不重叠,这点倒是比较神奇,莫非有点人工智能的能力了(效果其实还不错,要先选基准线)。multileader会自动增加编号,可以自己定义格式,不过还不够智能的样子。不过它的对齐调整倒是比较有趣。
Lisp相关:探索者有一个多线标注的程序,但是作用不是很类似。

4)可以动态和Excel交换数据,内容包括sheet,range和cell,这个对各种表格软件的打击还是不小的。表格风格也得到了增强。表格中可以象excel一样拖曳来递增数据。可以把一个表格通过简单的点击变成两个(这个功能挺有趣的,以前还没有见过)。可以对图形对象进行数据导出,比如块,属性等。可以导出到excel。这个功能应该也挺不错。比如导出polyline围住的面积等。
Lisp相关:有不少关于Excel和Acad之间互通的程序,包括mmmm的程序和truetable,还有国外一些。

5)layer的属性得到了一些增强,在不同的viewport中有不同的设置。

6)一种将选择图层不关闭,但锁住变灰可捕捉的reduce visual complexity的做法。这个Layeriso的命令非常好用,是这个版本的一个亮点了。地位可以和最近几个版本中出现的join和scaletext等小命令相媲美。
Lisp相关:记得xdcad几个版主曾经讨论过这个功能,是不是给了autodesk灵感啊。

7)可以对附加的xref的图层进行更好的控制。Xclip有了新的选项。
Lisp相关:Aeo版主写过自动剪切判断内外的程序。

8)Visual fidelity 的功能用于对新的annotation性质进行控制。Mtext可以写多列文字了。多行块属性。

9)可以导入和导出Microstation的DGN文件。

10)aeo版主提过的substr问题仍然没有改进。

所以个人感觉,2008的变化没有2007来的多。更多的细节,应该是小号版本的升级吧。

在TC内解双重压缩文件的简单Autohotkey代码

在TC内解双重压缩文件的简单Autohotkey代码

常下软件的朋友经常会遇到zip内有rar文件的情况,此时,需要先解zip再解rar
记得好久之前就出有这样的专门的软件了。

在TC中其实也不麻烦,选zip,按alt+,解压一次,对rar按下右键,也解压就可以了。
用TC script也可以做到一次完成。其实个人觉得TC以后的版本倒不妨加入一个脚本支持,可以有更大的DIY空间。

此处只是提供一种思路。代码也不完善。
请将下面一段代码存为abc.ahk,运行之(需安装有autohotkey),以后在TC中按alt+F2,可以在某些情况下解压双层压缩文件


^F2::
send +{right}
send winrar e *.z?? *.r??{enter}
send md install{enter}
WinWaitActive,,,2
send winrar x *.r?? install\{enter}
return


代码的限制性:
(1)必须安装有winrar
(2)请在TC中先定位到需要解压zip的目录,最好此时还没有什么rar文件
(3)请切换到英文输入法
(4)这个大概对于总和20M左右的压缩文件适合,更多了的情况下需要把第五句修改一下,加大2秒到更长时间(请熟悉autohotkey的朋友告诉一下如何写等待解压完zip再解压rar的方法,谢谢)

所以在没有找到第5句话的写法前,这篇文章的作用还很小。


名词——Autohotkey(www.autohotkey.com),可参考xbeta和yonken的文章。
http://www.blogcn.com/user48/yonken/index.html
它的作用就是完成一些批量的工作。本人只学了一点皮毛。比如拿它来作批量将doc文件导为txt文件,批量按文本文件第三行来修改文件名,批量将tecplot的lay文件导出为wmf文件,用它来定义autocad的加速按键。可能它比hoekey还要稍微强一点,和autoit差不多。

如何使用:用一个文本文件编写一段代码,保存为.ahk文件,然后运行这个ahk文件即可。常见用法,可以在同一个ahk文件内定义许多快捷键及其相对应的批操作。

2007年3月5日星期一

一些lisp和emacs的博客或站点

一个网络课程
http://wlkc.lnnu.edu.cn/rgzn/content/index.htm
一个博客,关于emacs的
http://ann77.stu.cdut.edu.cn/
一篇关于emacs的文章
http://www.newsmth.net/pc/pccon.php?id=6147&nid=152423&order=&tid=13200
一篇关于lisp,python和ruby(一个日本人弄的语言,水木清华有专版)的对比
http://blog.csdn.net/jq0123/archive/2006/08/31/1147758.aspx

近日在好好写论文,就不勤力更新了。
tecplot不支持中文的问题是挺讨厌的,好在假如中文不多的话,倒是可以用coreldraw或者illustrator或者autocad或者acrobat来编辑一下。sigmaplot的图也是非常漂亮,但同样也存在着中文字体间距不等的问题。

2007年3月3日星期六

添加目录到autocad的支持路径

学习一下vlisp中的add supporting path

刚好xd论坛有这个问题,秋枫版主也做了回答,为了好好学习,也在网上找了一下其他资料,好像大概都是两种写法,setenv和vla-put-supportpath,其实记得有一个专门讨论preference里面操作的,现在不明确的是否所有的vba都能被lisp支持。

Lisp是一个很奇怪的语言,好像不同人会写出各式各样的代码,但是有时候高手的代码又会几乎一模一样。好奇怪。

学习作笔记~

秋枫兄代码:



;;; 解析字符串为表(函数来自明经通道转载)
;;; ---------------------------------------------------------------------------------
(defun strParse (Str Delimiter / SearchStr StringLen return n char)
(setq SearchStr Str)
(setq StringLen (strlen SearchStr))
(setq return '())
(while (> StringLen 0)
(setq n 1)
(setq char (substr SearchStr 1 1))
(while (and (/= char Delimiter) (/= char ""))
(setq n (1+ n))
(setq char (substr SearchStr n 1))
) ;_ end of while
(setq return (cons (substr SearchStr 1 (1- n)) return))
(setq SearchStr (substr SearchStr (1+ n) StringLen))
(setq StringLen (strlen SearchStr))
) ;_ end of while
(reverse return)
) ;_ end of defun

;;; 反解析表为字符串(函数来自明经通道转载)
;;; ---------------------------------------------------------------------------------
(defun StrUnParse (Lst Delimiter / return)
(setq return "")
(foreach str Lst
(setq return (strcat return Delimiter str))
) ;_ end of foreach
(substr return 2)
) ;_ end of defun

;;; 添加支持文件搜索路径
;;; ---------------------------------------------------------------------------------
;;; note: 第二个参数如果为真, 插最前,否则插最后
;;;
(defun AddSupportPath (PathToAdd isFirst / supportlist)
(if (not
(vl-string-search
(strcase (strcat pathToAdd ";"))
(strcase (strcat (getenv "ACAD") ";"))
)
) ; 保证不重复添加
(progn
(setq supportlist (strparse (getenv "ACAD") ";"))
(setq supportlist
(vl-remove-if-not
'vl-file-directory-p
supportlist
)
) ; 移除不存在的文件夹
(if isFirst
(setq supportlist (cons PathToAdd supportlist))
(setq supportlist (append supportlist (list PathToAdd)))
)
(setenv "ACAD" (strUnParse supportlist ";"))
)
)
)



[AcadX.com]的代码,可能年代也挺久的,和秋枫版主的类似
代码:


(defun addSP (dir pos / tmp c lst)
(setq tmp ""
c -1
)
(if (not (member (strcase dir) (setq lst (mapcar
'strcase
(parse (getenv "ACAD") ";")
)
)
)
)
(progn
(if (not pos)
(setq tmp (strcat (getenv "ACAD") ";" dir))
(mapcar
'(lambda (x)
(setq tmp (if (= (setq c (1+ c))
pos
)
(strcat tmp ";" dir ";" x)
(strcat tmp ";" x)
)
)
)
lst
)
)
(setenv "ACAD" tmp)
)
)
(princ)
)

(defun parse (str delim / lst pos)
(setq pos (vl-string-search delim str))
(while pos
(setq lst (cons (substr str 1 pos) lst)
str (substr str (+ pos 2))
pos (vl-string-search delim str)
)
)
(if (> (strlen str) 0)
(setq lst (cons str lst))
)
(reverse lst)
)
; Arguments : A folder path and the position at which to insert it. (0 based.)
; Here's an example to add a support folder :
(addSP "c:\\afralisp" 3)



John Laidler ,也用setenv函数,没有选择位置项
代码:


;;; John Laidler
;;; http://groups.google.com/group/auto...72d257e2d2174/4

b0851cbad83d142?lnk=gst&q=add+support+path&rnum=4#4b0851cbad83d142
(defun CS:AddSupportPath (dir / tmp Cpath)
(vl-load-com)
(setq Cpath (getenv "ACAD")
tmp (strcat ";" dir ";")
)
(if (not (vl-string-search dir cpath))
(setenv "ACAD" (strcat Cpath ";" dir))
)
(princ)
)

(CS:ADDSUPPORTPATH "c:\\b")



下面三个是theswamp找到的函数
MP,只用一句话,是vla函数
代码:


;;;[MP]
(defun _AddSupportPath ( path / files )
(vla-put-supportpath
(setq files
(vla-get-files
(vla-get-preferences
(vlax-get-acad-object)
)
)
)
(strcat
(vla-get-supportpath files) ";"
path
)
)
)

(_addsupportpath "c:\\3")



Jeff_M和kerry Brown都是为了一个问题写的,希望一次加多个子目录
代码:


(defun c:ldp (/ FilePrefs addEnviron EnvironBase acadEnviron)
(setq FilePrefs (vla-get-files (vla-get-preferences
(vlax-get-acad-object)
)
)
)
(setq acadEnviron (vla-get-supportpath FilePrefs))
(setq EnvironBase "M:\\_Cad Support\\AutoCAD 2004\\2004dannyCAD\\MENU\\")
(setq addEnviron '("Area" "Blocks"
"Dimensions" "Layers"
"Linetypes" "Plotting"
"Settings" "Shortcuts"
"Text"
);;;add any others you want to this list

)
(if (not (vl-string-search (strcat EnvironBase (car addEnviron))
acadEnviron
);;;make sure we haven't already done this
)
(progn
(mapcar
'(lambda (x)
(setq acadEnviron (strcat acadEnviron ";" EnvironBase x))
)
addEnviron
)
(vla-put-supportpath FilePrefs acadEnviron)
(princ "\n....Support Paths updated!")
);progn
(princ "\n....Support Paths were previously updated...nothing done.")
);if
(princ)
)




Kerry Brown
代码:


(VL-LOAD-COM)
(prompt "\n <> Load Dependant Support Paths to profile [V0.01]")
(defun c:LDP (/ fileprefs addenviron environbase acadenviron)
(setq fileprefs (vla-get-files (vla-get-preferences
(vlax-get-acad-object)
)
)
)
(setq acadenviron (vla-get-supportpath fileprefs))
(setq environbase "M:\\_Cad Support\\AutoCAD 2004\\2004dannyCAD\\MENU\\")
(setq addenviron '("Area" "Blocks"
"Dimensions" "Layers"
"Linetypes" "Plotting"
"Settings" "Shortcuts"
"Text"
)
)
(mapcar
'(lambda (x)
(setq acadenviron (strcat acadenviron ";" environbase x))
)
addenviron
)
(vla-put-supportpath fileprefs acadenviron)
(PRINC)
)

2007年3月1日星期四

Fools兄的俄罗斯方块游戏(Vlisp)

fools兄在这个帖子中
http://www.xdcad.net/forum/showthread.php?s=&threadid=622714
给出了一个用Vlisp编写的俄罗斯方块的游戏,真厉害。



现在已知的用Vlisp编写的游戏有: 魔方,飞机,军舰棋等,只有真正喜爱VLisp的朋友才会真正去编写这些程序。

同时也感慨,作为一个编程语言界第二老的语言,Lisp为什么就不能大众化一些呢? Fortran这个老阿伯都能出V Fortran,而Lisp好像一直以来就束之高阁,只有在AutoCAD这个外来的平台上面发挥它一些小众的作用,实在有些费解,而Adesk看样子好像都要差不多抛弃Lisp了,n年不更新函数,现在连函数都开始不支持新类型了。前段时间看到的pythoncad,虽然不见得python就比lisp厉害或者高级,但是人家毕竟大众化了。

fools兄还在
http://www.xdcad.net/forum/forumdisplay.php?s=&forumid=50

http://www.xdcad.net/forum/forumdisplay.php?s=&forumid=25
等版给出了好些函数,且赶快做个书签,以便好好学习。

发起时间 :2007年02月28日11点28分">[LISP函数]:通过Vlisp下载网络资源的4个函数
http://www.xdcad.net/forum/showthread.php?s=&threadid=623407