上次介绍过一款很好的语法代码高亮script:dp.SyntaxHighlighter。
我想到可以在这个script上把AutoLISP的语法也加进去,还曾经给作者写了信,并提供了用于EditPlus的AutoLISP语法文件——但作者一直没有答复我。
今天因为修改了一下那个CSS风格,顺便干脆就自己来做这件事。
应该说这件事并不复杂,但我缺乏script的深度认识,对于什么正则表达式啦、prototype啦,都头晕得很。照虎画猫,折腾了一阵子,居然也搞定了。
先看球,回头再传上网站。
示例:
2006-10-21
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。
当然,如果是双击文字编辑,就还是会存在转换问题。那就不是这个命令的问题了。
通用文字编辑。
其实AutoCAD通过双击文字即可编辑的功能已经很不错了,但这次在AutoCAD2006里面遇到点麻烦。原因是AutoCAD2006过于殷勤,在文字编辑中加入了自动转换Unicode的功能。这个想法本来不错,但AutoCAD的转换方式是不分青红皂白将输入内容转换成Unicode,而不管当前的字体是不是用了这样的编码。问题就出现了。
比如我们常用的字体,要得到平方号的时候,就输入%%199。这时候AutoCAD2006就会原地将输入的%%199转换成平方号——看上去很好,但输入完成后,这个平方号就消失了!因为AutoCAD2006实际上把这个%%199转换成了\U+00C7。好心办错事。
我想应该有一个系统变量在管AutoCAD2006是否进行这样的转换,可惜没有找到。但我发现了一个变通的方法——不使用原位文字编辑,而使用输入对话框来编辑单行文字就可以避免这样的转换。
这次更新是加入了一个版本判断,如果是2006版,在用C:DD进行编辑的时候就会通过对话框输入,而不是原位输入。控制文字编辑是采用对话框还是原位编辑的系统变量是Dtexted。
当然,如果是双击文字编辑,就还是会存在转换问题。那就不是这个命令的问题了。
2005-05-09
2005-04-15
更新:C:WA
更新:C:WA
调用标准Area命令,然后标注面积值。
增加对当前图形Units的判断,解决了单位为米时,面积值错误的问题。
增加了更改后缀的标注选项。
提示:图形应该正确设置所采用的单位,这样才有利于不同单位图形共享信息。
调用标准Area命令,然后标注面积值。
增加对当前图形Units的判断,解决了单位为米时,面积值错误的问题。
增加了更改后缀的标注选项。
提示:图形应该正确设置所采用的单位,这样才有利于不同单位图形共享信息。
2004-11-17
增加:C:LAYERIN
增加:C:LAYERIN
输入由C:LAYEROUT所输出的图形文件。
本来用INSERT命令即可,但为了简化操作,还是写了这个小命令。
将来会增加更多功能:
检查本图是否已经存在将要输入的图层,并提供一个是否删除现存图层上实体的选项。
C:LAYEROUT命令也需要提供更多功能或选项:
新文件命名方式,现在是图名靠前、层名靠后。可以提出两种方式供用户选择。
覆盖确认。
处理图纸空间实体。
输入由C:LAYEROUT所输出的图形文件。
本来用INSERT命令即可,但为了简化操作,还是写了这个小命令。
将来会增加更多功能:
检查本图是否已经存在将要输入的图层,并提供一个是否删除现存图层上实体的选项。
C:LAYEROUT命令也需要提供更多功能或选项:
新文件命名方式,现在是图名靠前、层名靠后。可以提出两种方式供用户选择。
覆盖确认。
处理图纸空间实体。
2004-11-01
增加:FishLISP菜单
增加:FishLISP菜单。
加载Fish.lsp之后,在命令行输入Fishmenu,即可建立FishLISP局部菜单。
菜单为全中文,包含了大多数FishLISP程序。
现在上Blogger真是越来越困难了!
原因很可能是……不说也罢。
加载Fish.lsp之后,在命令行输入Fishmenu,即可建立FishLISP局部菜单。
菜单为全中文,包含了大多数FishLISP程序。
现在上Blogger真是越来越困难了!
原因很可能是……不说也罢。
2004-10-29
更新:C:LAYEROUT
更新:C:LAYEROUT
将所选图层上的实体输出为独立的图形文件。在和3DMax协作建模的时候较为有用。
更合理的输出方式,不再使用子文件夹,而是将输出文件放在原文件同一文件夹。
新文件文件名为:%原文件名%_Layer_%图层名%.dwg
将所选图层上的实体输出为独立的图形文件。在和3DMax协作建模的时候较为有用。
更合理的输出方式,不再使用子文件夹,而是将输出文件放在原文件同一文件夹。
新文件文件名为:%原文件名%_Layer_%图层名%.dwg
2004-08-26
2004-08-24
更新:C:DD
更新:C:DD
通用文字编辑。
优化程序。
增加了专门针对轴线号图块和标高图块的处理模块。
对于轴线号,可以根据属性值的文字长度,自动选择合适的图块。
对于标高,可以自动填充文字长度较短的属性值;如果存在基准点变量,将属性值置空则能够根据基准点自动计算标高值。
通用文字编辑。
优化程序。
增加了专门针对轴线号图块和标高图块的处理模块。
对于轴线号,可以根据属性值的文字长度,自动选择合适的图块。
对于标高,可以自动填充文字长度较短的属性值;如果存在基准点变量,将属性值置空则能够根据基准点自动计算标高值。
2004-07-28
2004-07-27
增加:C:WRID
增加:C:WRID
连续自动编号。
前面写的停车位编号虽然可用,但限制太多,尤其只能根据图元的生成顺序来排序,确实不能满足多数情况下的需要。按照图面排列顺序进行排序又过于复杂,不适宜用AutoLISP来实现。
这个C:WRID就非常简单,完全由人工点取要标注的位置,程序只是提供合适的序号。
连续自动编号。
前面写的停车位编号虽然可用,但限制太多,尤其只能根据图元的生成顺序来排序,确实不能满足多数情况下的需要。按照图面排列顺序进行排序又过于复杂,不适宜用AutoLISP来实现。
这个C:WRID就非常简单,完全由人工点取要标注的位置,程序只是提供合适的序号。
2004-07-17
增加:C:PKRID
增加:C:PKRID
停车位编号。
以前作图,停车位只需要画出,并给出总数量即可。现在的施工图深度要求停车位编号要明确。所以写了这个程序。
程序要求使用一个带属性的图块来画出停车位,运行命令后,程序选择全部停车位图块,将其属性文本从1开始,逐一修改,同时将属性文本的角度重设为0。
停车位编号。
以前作图,停车位只需要画出,并给出总数量即可。现在的施工图深度要求停车位编号要明确。所以写了这个程序。
程序要求使用一个带属性的图块来画出停车位,运行命令后,程序选择全部停车位图块,将其属性文本从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时的错误。
修改了插入图块与所选图块不匹配的问题。
总图标高、坡度工具集
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方式结合。
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则避免了查询、输入图块名称,使更名极为便利。
程序支持长名称(即名称中允许输入空格),所以新名称必须靠回车来确认。
通过点击实体,更改图块名称。避免查询、输入原有名称。
在AutoCAD当中,可以很方便地复制一组实体,并粘贴成图块。但所得到的图块总是具有如“A$C4FD24C92”之类复杂的名称,往往并不利于识别和操作,所以有时候有必要将这样的图块更名;而其名称的复杂性,同样使得更名也并不容易。
C:RNB则避免了查询、输入图块名称,使更名极为便利。
程序支持长名称(即名称中允许输入空格),所以新名称必须靠回车来确认。
2004-07-07
2004-07-05
更新:C:DF
更新:C:DF
连续不等距的OFFSET。
在同一方向上连续使用不等距的OFFSET是枯燥和低效率的,所以写了这个程序以解决这个问题。
程序实际上是封装了多个OFFSET命令,一次性给出所有距离间隔,其间用空格分隔,然后即可一次性完成多重OFFSET。
本次更新添加了保存、恢复原有OFFSETDIST系统变量的功能。
连续不等距的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。运行之后直接得到反馈信息,无需其他操作。
锁定/解锁ViewPort(s)。
ViewPort一旦被锁定,Mspace和Pspace即同步显示,可防止在Layout的Mspace中意外地缩放、平移图形。
ViewPort实体的缩放锁定信息记录于组码90,这是一个bit-coded flags,锁定状态为16384 (0x4000)。
本程序为方便起见,采用开关模式,并不对每一个ViewPort单独操作,而是同时锁定/解锁所有的ViewPort,因此只需要求得第一个ViewPort的锁定状态即可。
锁定或解锁,都使用相同一个命令C:VPL。运行之后直接得到反馈信息,无需其他操作。
订阅:
博文 (Atom)