明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[求助]各位大侠请帮助,CAD外挂程序简繁切换.

  [复制链接]
发表于 2005-4-24 08:16:00 | 显示全部楼层
可以通过系统变量LOCATE来判断你的系统属于什么语言。英文系统为enu。简体中文为chs,繁体中文为cht。
建议把所有的文字提示内容写在程序前面用变量定义(最好是用LIST列表的形式写到一个变量中),每一种语言写一个列表变量,语言判断后直接取相应语言的列表。在程序中需要显示文字的地方则直接显示列表中的某一位置的内容就行。这有得于程序的简单化,修改及添加其它语言的资源也简单。
发表于 2005-4-24 19:49:00 | 显示全部楼层
我提个建议:


就是把字符串资源相对集中放置,不用每次都用cond函数判断。


多语言的字符串做成表,在程序中用一个函数根据当前设定转换。


比如:


(setq lang '( ("rogram" "程式" "程序") ("Are you sure?" "真的确定吗?" "真的确定吗?") ...)


定义一个函数,比如命名为getlangstr


根据全局语言设定自动调用不同的字串,


比如 (getlangstr "rogram") 如果发现全局为繁体中文就返回 "程式"字串。
 楼主| 发表于 2005-4-24 21:12:00 | 显示全部楼层
多谢明总及秋枫大侠! 我没学过编程,看得有点朦朦胧胧的,似懂非懂!唉,悲哀! 举个例子吧?实际操作下下面这段程序吧,多谢你们这些好心人了. (DEFUN C:OC() (vl-cmdf "_.undo" "_group")
(mapcar 'princ (list "Current offset dist= " (getvar "OFFSETDIST")" "))
(setq di (getstring "\nEnter Offset Dist:"))
(setq o (ssget))
(setq po (getpoint "\nSide to offset"))
(setq LAY (getvar "CLAYER"))
(if (/= di nil)
(COMMAND "OFFSET" di o po "")
(COMMAND "CHPROP" "L" "" "LA" lay "LT" "bylayer" "C" "bylayer" ""))
(if (= di nil)
(COMMAND "OFFSET" "" o po "")
(COMMAND "CHPROP" "L" "" "LA" lay "LT" "bylayer" "C" "bylayer" ""))
(vl-cmdf "_.undo" "_end")(princ))
发表于 2005-4-25 14:14:00 | 显示全部楼层
  1. (defun C:OC (/ DI LANGLST LAY LST O PO)
  2.    (setq  LANGLST  '(("ENU"
  3.          "\nCurrent offset dist= "
  4.          "\nEnter Offset Dist:"
  5.          "\nSide to offset"
  6.        )
  7.        ("CHT"
  8.          "\n目前偏移距离= "
  9.          "\n输入偏移距离:"
  10.          "\n选取偏移侧"
  11.        )
  12.      )
  13.    )
  14.    (setq LST (cdr (assoc (getvar "LOCALE") LANGLST)))
  15.    (vl-cmdf "_.undo" "_group")
  16.    (mapcar 'princ
  17.      (list (nth 0 LST) (getvar "OFFSETDIST") " ")
  18.    )
  19.    (setq DI (getstring (nth 1 LST)))
  20.    (setq O (ssget))
  21.    (setq PO (getpoint (nth 2 LST)))
  22.    (setq LAY (getvar "CLAYER"))
  23.    (if (/= DI NIL)
  24.        (command "OFFSET" DI O PO "")
  25.        (command "CHPROP" "L" "" "LA" LAY "LT" "bylayer" "C" "bylayer" "")
  26.    )
  27.    (if (= DI NIL)
  28.        (command "OFFSET" "" O PO "")
  29.        (command "CHPROP" "L" "" "LA" LAY "LT" "bylayer" "C" "bylayer" "")
  30.    )
  31.    (vl-cmdf "_.undo" "_end")
  32.    (princ)
  33. )
 楼主| 发表于 2005-4-25 20:35:00 | 显示全部楼层
多谢龙哥!!!
 楼主| 发表于 2005-4-29 20:36:00 | 显示全部楼层
本帖最后由 作者 于 2005-4-29 20:58:50 编辑

在各位大位的帮助下﹐我的LSP全搞定了﹗多谢各位大侠﹗



又遇到个难题﹗LSP+DCL怎么办﹖也来个范例﹕


本帖子中包含更多资源

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

x
 楼主| 发表于 2005-5-2 10:46:00 | 显示全部楼层
好心人们帮帮忙吧,相信这个问题是具有代表性的。
 楼主| 发表于 2005-5-5 14:28:00 | 显示全部楼层
急盼好心人帮助!
发表于 2005-5-5 15:50:00 | 显示全部楼层
就是根据当前语言的设置加载不同的dcl文件啦~~或者同一个dcl中,不同的对话框。
 楼主| 发表于 2005-5-5 21:49:00 | 显示全部楼层
一语惊醒梦中人!多谢秋枫大侠!


如有不懂之处再请教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 04:49 , Processed in 0.196366 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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