明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: kozmosovia

[源码] LISP调用Jscript转义汉字,实现LSP/VLX跨越lispsys

  [复制链接]
发表于 昨天 22:42 | 显示全部楼层
kozmosovia 发表于 2025-7-17 21:27
当lispsys=1时,结果就乱码了

lispsys设置为1或2;
都需要关闭CAD界面,重新打开才可以。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 22:49 | 显示全部楼层
437271963 发表于 2025-7-17 22:42
lispsys设置为1或2;
都需要关闭CAD界面,重新打开才可以。

你没有get到这样做的要点,是无论用户的CAD的lispsys设置是什么,lsp或者VLX代码都能正常运行。而无需先改一次lispsys再重启才能用。越来越多的新人用CAD都是高版本,未来也注定要向UTF过渡的。不可能死守必须要lispsys=0,lsp/vlx才能用。
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
kozmosovia 发表于 2025-7-17 22:49
你没有get到这样做的要点,是无论用户的CAD的lispsys设置是什么,lsp或者VLX代码都能正常运行。而无需先 ...

打开CAD,F1查看帮助搜索lispsys;
在程序里面想要拆分字串符,一般分3个情况进行拆分,就适应所有情况了。
  1. ;字串符str->拆分为单个"中文"->'("中" "文")
  2. (defun WZ_CF (str / str str2 strs)
  3. (setq strs '())
  4. (while (/= str "")
  5.   (cond
  6.    ((null (cadr (vl-string->list "中"))) (setq str2 (substr str 1 1) str (substr str 2)));中文也是一个字串符
  7.    ((> (ascii (substr str 1 1)) 128) (setq str2 (substr str 1 2) str (substr str 3)) );中文是两个字串符
  8.    (t (setq str2 (substr str 1 1) str (substr str 2)) );英文拆分
  9.   )
  10.   (setq strs (cons str2 strs))
  11. )
  12. (reverse strs)
  13. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 小时前 | 显示全部楼层
本帖最后由 kozmosovia 于 2025-7-18 09:45 编辑

运行的代码中带个汉字,如果lsp文件的编码和lispsys不匹配时,能100%正常运行会是拆盲盒靠运气了。要判断lispsys,直接getvar就行,不需要去string->list。
代码是自写自用倒是无所谓,如果要发给别人用,当别人的lispsys设置跟你的不一样时,用起来就会很麻烦:要么改lispsys,要么改lsp的编码。vlx改不了编码,只能改lispsys。而使用转义的方式,无论什么编码的lsp或者vlx,在无论什么lispsys上都可以正常运行。不需要用户为了用个命令非得改lispsys重启cad。

不转义的话,需要汉字时,就要做两个数字列表来替代,一个是lispsys=0时用,一个是lispsys=1时用。不觉得麻烦当然可以这么做:程序写好后再开个不同lispsys的CAD,获取汉字转出的对应数字列表是多少补充写入代码中。但是这么干可能还不如代码中直接保留汉字改编码来得快,唯一的限制是这种改法不支持VLX,改编码后还得再重新编译一个VLX。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
查了一下,在AutoCAD2021版本以下,需要你这个程序文字转义;
高版本的,不需要。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-18 12:58 , Processed in 0.167453 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表