【飞鸟集】简繁转化(更新至2013.4.21)
本帖最后由 highflybir 于 2013-4-21 20:45 编辑常用
可能已经有这样的程序了。但要收费或要注册的,所以我发表了lisp程序在此,希望他们能谅解。这个程序没有什么技巧而言。经过测试,速度应该还可以。
有什么建议或者纰漏之处,请大家指出。
核心代码:
;;;=============================================================
;;; 功能:简体字符串和繁体字符串互相转化
;;; 输入:字符串
;;; 输出:被转化后的字符串
;;;=============================================================
(defun Text:CharConvert (text IsRev / Index NewTxt Str From to)
(if IsRev
(setq From TraditionalCharset
To SimpleCharSet
)
(setq From SimpleCharSet
To TraditionalCharset
)
)
(setq NewTxt "")
(while (/= text "")
(setq str (substr text 1 1))
(if (> (ascii str) 128)
(progn
(setq str (substr text 1 2))
(setq text (substr text 3))
(if (setq index (VL-POSITION str From))
(setq str (nth index To))
)
)
(setq str (substr text 1 1)
text (substr text 2)
)
)
(setq newtxt (strcat newtxt str))
)
newtxt
)
程序源码在此:
程序已经稍做修改。另:若有人能帮忙提供 台湾或者香港的字体和相关样例图,则可辅助我完成内码转换及其测试。在此致谢。
=============================================
2013.1.32增加 DLL文件。
这个是对话框演示演示。
已经包含了32位和64位的版本,应该可以在CAD的各个版本上运行。
(defun c:zzz (/ dlg)
;;如果注册成功,以后就可以不需要这一句
(startapp "regsvr32 /i /s \"F:\\zqy\\C\\CharConverter\\Release\\CharConverter.dll\"")
(setq dlg (vlax-create-object "CharConverter.Dialog"))
(if dlg
(progn
(vlax-invoke dlg 'doit)
(vlax-release-object dlg)
)
)
(princ)
)
在VBA里面可以这样用。
首先引用,然后就可以了。
Sub test()
Dim a As DialogTest
Set a = CreateObject("CharConverter.Dialog")
With a
.doit
End With
End Sub
以后将会陆续添加其内容,并能对CAD操作。
======================================
2013.04.20更新:提供新的方法和函数,可以实现真正内码转化。
=============================================
2013.04.21更新:现在可以提供对含文字的CAD图元操作,包括:
单行,多行文字,引线,属性,标注,公差,表格,块及其嵌套块。
LISP源码发行了三个版本,GB,GBK,BIG5,简体,繁体,台湾繁体版本.
謝謝版大的分享!
另外向版大請教一下
有辦法將「簡體的lsp、fas」轉成「繁體的lsp、fas」的方式嗎?
或是說在「繁體的autocad」載入簡體的lsp或fas時,不會因為亂碼的關係無法執行 流氓兔 发表于 2022-2-2 19:26
参数类型错误: VLA-OBJECT nil,可以更新一下代码不
已经解决,问题了,注册一下就好了 不论是用测试txt文本转换,或是运行test时提示错误: 参数类型错误: VLA-OBJECT nil
请问这是怎么回事? 太强了 版主知识丰富,乐于分享,我们有福气 楼上说的正确,高版是我们学习LISP的榜样与福气 高飞鸟已经飞到云端了。 仰视云端! 鸟哥,还有啥是你不会的啊 不错,多谢了。 早就想有这样的程序就好了。多谢了 太好了,谢谢