2007年9月19日星期三

AutoLISP Highlighter

AutoLISP Highlighter
在原框架内顯示本頁!

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

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

示例: ; FishLISP C:RNB ; 通过点击实体,更改图块名称。避免查询、输入原有名称。 ; ; 在AutoCAD当中,可以很方便地复制一组实体,并粘贴成图块。 ; 但所得到的图块总是具有如“A$C4FD24C92”之类复杂的名称, ; 往往并不利于识别和操作,所以有时候有必要将这样的图块更 ; 名;而其名称的复杂性,同样使得更名也并不容易。 ; C:RNB则避免了查询、输入图块名称,使更名极为便利。 ; ; 程序支持长名称(即名称中允许输入空格),所以新名称必须 ; 靠回车来确认。 ;----------------------------------------------------- ; 04-07-07 v1.0 可用版 ;----------------------------------------------------- (defun c:rnb (/ en ent ety ena enn) (princ "\nFishLISP C:RNB v1.0.") (if (setq en (entsel "\n选取要改名的图块:")) (if en (progn (setq ent (entget (car en)) ety (cdr (assoc 0 ent)) ) (if (= ety "INSERT") (progn (setq ena (cdr (assoc 2 ent))) (setq loop t) (while loop (princ "\n图块名称:<") (princ ena) (setq enn (getstring 1 "> ")) (if (member enn (list "" " " ena)) (setq loop nil enn ena) (if (tblsearch "block" enn) (princ "\n已经存在此名称的图块。") (setq loop nil) ); if exist? ); if no change? ); while (setvar "cmdecho" 0) (command "rename" "block" ena enn) (setvar "cmdecho" 1) ); progn =INSERT (princ "\n对象不是图块。") );if INSERT? ); progn en ); if en? ); if picked (princ) ) (princ) [最大的字段长度是未知ߥ]

Little Fish · 21:45 · Edit
2 評論:

1. China Blogger · 2006-12-2 18:47:00 Delete

你好!

我做了一个中文的blogger交流网站!欢迎你访问!http://findyou.blogspot.com/!也欢迎你贴帖子和留言!

我们很想找到你!
另外我可能把你的网址贴在帖子里推荐给大家,你不反对吧?
如果可以的话也希望你把我的网址贴在Blogger上好吗?
2. qjchen · 2007-2-13 11:22:00 Delete

ivox
你好,看到有用于BLOGSPOT的LISP的高亮文件,真好,我也下载回去看看,这样子我的一堆LISP程序就可以进行发布了,谢谢。

CAD和LISP应用技巧

发表评论
較新的文章 首頁 較舊

没有评论: