显示标签为“AutoLISP”的博文。显示所有博文
显示标签为“AutoLISP”的博文。显示所有博文

2006-10-21

AutoLISP Highlighter

上次介绍过一款很好的语法代码高亮script:dp.SyntaxHighlighter。
我想到可以在这个script上把AutoLISP的语法也加进去,还曾经给作者写了信,并提供了用于EditPlus的AutoLISP语法文件——但作者一直没有答复我。

今天因为修改了一下那个CSS风格,顺便干脆就自己来做这件事。
应该说这件事并不复杂,但我缺乏script的深度认识,对于什么正则表达式啦、prototype啦,都头晕得很。照虎画猫,折腾了一阵子,居然也搞定了。
先看球,回头再传上网站。

示例:

2005-05-31

更新:C:DD

更新:C:DD
通用文字编辑。

其实AutoCAD通过双击文字即可编辑的功能已经很不错了,但这次在AutoCAD2006里面遇到点麻烦。原因是AutoCAD2006过于殷勤,在文字编辑中加入了自动转换Unicode的功能。这个想法本来不错,但AutoCAD的转换方式是不分青红皂白将输入内容转换成Unicode,而不管当前的字体是不是用了这样的编码。问题就出现了。
比如我们常用的字体,要得到平方号的时候,就输入%%199。这时候AutoCAD2006就会原地将输入的%%199转换成平方号——看上去很好,但输入完成后,这个平方号就消失了!因为AutoCAD2006实际上把这个%%199转换成了\U+00C7。好心办错事。
我想应该有一个系统变量在管AutoCAD2006是否进行这样的转换,可惜没有找到。但我发现了一个变通的方法——不使用原位文字编辑,而使用输入对话框来编辑单行文字就可以避免这样的转换。

这次更新是加入了一个版本判断,如果是2006版,在用C:DD进行编辑的时候就会通过对话框输入,而不是原位输入。控制文字编辑是采用对话框还是原位编辑的系统变量是Dtexted。
当然,如果是双击文字编辑,就还是会存在转换问题。那就不是这个命令的问题了。

2005-05-09

更新:C:ZB

更新:C:ZB
座标标注。

修正了一个比例问题。

2005-04-15

更新:C:WA

更新:C:WA
调用标准Area命令,然后标注面积值。

增加对当前图形Units的判断,解决了单位为米时,面积值错误的问题。
增加了更改后缀的标注选项。

提示:图形应该正确设置所采用的单位,这样才有利于不同单位图形共享信息。

2004-11-17

更新:C:FFT

更新:C:FFT
文字查找跟踪。

增加了一个Continue选项,可以在上次退出的地方继续查找。
增加了点击鼠标左键退出功能。

增加:C:LAYERIN

增加:C:LAYERIN
输入由C:LAYEROUT所输出的图形文件。

本来用INSERT命令即可,但为了简化操作,还是写了这个小命令。
将来会增加更多功能:
检查本图是否已经存在将要输入的图层,并提供一个是否删除现存图层上实体的选项。

C:LAYEROUT命令也需要提供更多功能或选项:
新文件命名方式,现在是图名靠前、层名靠后。可以提出两种方式供用户选择。
覆盖确认。
处理图纸空间实体。

更新:C:LAYEROUT

更新:C:LAYEROUT
将所选图层上的实体输出为新图形文件。

修改了输出过程的信息反馈。

2004-11-01

增加:FishLISP菜单

增加:FishLISP菜单。

加载Fish.lsp之后,在命令行输入Fishmenu,即可建立FishLISP局部菜单。
菜单为全中文,包含了大多数FishLISP程序。

现在上Blogger真是越来越困难了!
原因很可能是……不说也罢。

2004-10-29

更新:C:LAYEROUT

更新:C:LAYEROUT
将所选图层上的实体输出为独立的图形文件。在和3DMax协作建模的时候较为有用。

更合理的输出方式,不再使用子文件夹,而是将输出文件放在原文件同一文件夹。
新文件文件名为:%原文件名%_Layer_%图层名%.dwg

2004-08-26

用于EditPlus的AutoLISP语法定义文件

终于把用于EditPlus的AutoLISP语法定义文件重新整理了一遍。
点这里下载

EditPlus是非常好用的一个纯文本编辑器。具有很多实用功能,比如自定义语法着色等等。

2004-08-24

更新:C:DD

更新:C:DD
通用文字编辑。

优化程序。
增加了专门针对轴线号图块和标高图块的处理模块。
对于轴线号,可以根据属性值的文字长度,自动选择合适的图块。
对于标高,可以自动填充文字长度较短的属性值;如果存在基准点变量,将属性值置空则能够根据基准点自动计算标高值。

2004-07-28

更新:C:WRID

更新:C:WRID
自动编号。

增加了序号检查,可以检查序号的重复或遗漏。现在已经是可用版。

2004-07-27

增加:C:WRID

增加:C:WRID
连续自动编号。

前面写的停车位编号虽然可用,但限制太多,尤其只能根据图元的生成顺序来排序,确实不能满足多数情况下的需要。按照图面排列顺序进行排序又过于复杂,不适宜用AutoLISP来实现。

这个C:WRID就非常简单,完全由人工点取要标注的位置,程序只是提供合适的序号。

2004-07-17

增加:C:PKRID

增加:C:PKRID
停车位编号。

以前作图,停车位只需要画出,并给出总数量即可。现在的施工图深度要求停车位编号要明确。所以写了这个程序。
程序要求使用一个带属性的图块来画出停车位,运行命令后,程序选择全部停车位图块,将其属性文本从1开始,逐一修改,同时将属性文本的角度重设为0。

2004-07-16

更新:C:GR C:GD C:GM

更新:C:GR C:GD C:GM
总图标高、坡度工具集

C:GR 根据两个总平面标高,计算并标注这两点之间的坡度和距离;
C:GD 以一个平面标高为基准点,标注一定坡度的另一点标高;
C:GM 根据两个标高,标注同一坡度上另一点标高。

修改了标高值为%%P0.000时的错误。
修改了插入图块与所选图块不匹配的问题。

2004-07-12

增加:C:XRR C:XRU C:XRD C:XRBB C:XRBI

增加:C:XRR C:XRU C:XRD C:XRBB C:XRBI
XREF工具集。

直接点取图形中的XREF图块进行基本操作。
C:XRR   点取重载;
C:XRU   点取卸载;
C:XRD   点取解除;
C:XRBB  点取以Bind方式结合;
C:XRBI  点取以Insert方式结合。

2004-07-09

增加:C:RNB

增加:C:RNB
通过点击实体,更改图块名称。避免查询、输入原有名称。

在AutoCAD当中,可以很方便地复制一组实体,并粘贴成图块。但所得到的图块总是具有如“A$C4FD24C92”之类复杂的名称,往往并不利于识别和操作,所以有时候有必要将这样的图块更名;而其名称的复杂性,同样使得更名也并不容易。
C:RNB则避免了查询、输入图块名称,使更名极为便利。

程序支持长名称(即名称中允许输入空格),所以新名称必须靠回车来确认。

2004-07-07

更新:C:VPL

更新:C:VPL
锁定/解锁ViewPort(s)

解决在Model Tab(TILEMODE=1)中运行该命令出现错误提示的情况。
原因是MVIEW命令仅用于Layout Tab。

2004-07-05

更新:C:DF

更新:C:DF
连续不等距的OFFSET。

在同一方向上连续使用不等距的OFFSET是枯燥和低效率的,所以写了这个程序以解决这个问题。
程序实际上是封装了多个OFFSET命令,一次性给出所有距离间隔,其间用空格分隔,然后即可一次性完成多重OFFSET。

本次更新添加了保存、恢复原有OFFSETDIST系统变量的功能。

增加:C:VPL

增加:C:VPL
锁定/解锁ViewPort(s)。

ViewPort一旦被锁定,Mspace和Pspace即同步显示,可防止在Layout的Mspace中意外地缩放、平移图形。
ViewPort实体的缩放锁定信息记录于组码90,这是一个bit-coded flags,锁定状态为16384 (0x4000)。

本程序为方便起见,采用开关模式,并不对每一个ViewPort单独操作,而是同时锁定/解锁所有的ViewPort,因此只需要求得第一个ViewPort的锁定状态即可。
锁定或解锁,都使用相同一个命令C:VPL。运行之后直接得到反馈信息,无需其他操作。