明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 王咣生

简约而不简单

    [复制链接]
发表于 2004-3-10 16:13:00 | 显示全部楼层
agreee
发表于 2004-3-12 23:02:00 | 显示全部楼层
继续啊
发表于 2004-3-13 11:01:00 | 显示全部楼层
支持
 楼主| 发表于 2004-3-16 17:26:00 | 显示全部楼层

将输入的数据转换为字符串列表

将输入的数据转换为字符串列表,如:
;Example: (string->list "Hello World") = ("Hello" "World")

(defun string->list (f_string / f_ls f_str f_len f_loop f_cur) ;converts string to a list using spaces as delimitation
(setq f_ls nil
f_str ""
)
(setq f_loop 0)
(repeat (strlen f_string)
(progn
(setq f_loop (1+ f_loop))
(setq f_cur (substr f_string f_loop 1))
(if (= (ascii f_cur) 32)
(if (/= f_str "")
(progn
(setq f_ls (append f_ls (list f_str)))
(setq f_str "")
)
)
(setq f_str (strcat f_str f_cur))
)
)
)
(if (/= f_str "")
(setq f_ls (append f_ls (list f_str)))
)
f_ls
)
发表于 2004-3-16 18:20:00 | 显示全部楼层
非常支持,但好東西藏在這不容易發現,建議管理員另闢版塊,置頂不易達到效果
 楼主| 发表于 2004-3-17 14:40:00 | 显示全部楼层

回复

恩,说的有道理.
 楼主| 发表于 2004-3-30 22:47:00 | 显示全部楼层

回复

有好的程序吗?好的设计思想也可以分享啊?!
发表于 2004-3-31 00:26:00 | 显示全部楼层
王咣生发表于2004-3-16 17:26:00回复:(王咣生)将输入的数据转换为字符串列表将输入的数据转换为字符串列表,如:;Example:     (string->list \"Hello World\") = (\"Hello\" \"World\")(defun string->list (f_string /
这也算精简?nonono
  1. ;(str2lst str) 将输入的数据转换为字符串列表.-----------------------------梁雄啸.2004.3
  2. ;测试: (str2lst   "Hello 2World 12 5456.1568") = ("Hello" "2World" "12" "5456.1568")
  3. ;版权所有,盗用必究!如在程序中引用,请保留文字信息行.
  4. (defun str2lst (str / i)
  5.    (while (setq i (vl-string-search " " str (if i (+  2 i) 0)))
  6.        (setq str (vl-string-subst """" " " str i))
  7.    )(read (strcat "("" str "")"))
  8. )
 楼主| 发表于 2004-3-31 10:24:00 | 显示全部楼层

回复

谢谢!


如果不用vlisp函数你会怎么做呢?


简单到不一定,要有思想?严谨的逻辑结构?


我想你要用AutoLISP自己设计程序结构来实现VLISP现成的函数功能,那将收获很多,


就好比用MFC封装好的类和自己设计一个类一样?


当然这不一定对每个人都必要.
发表于 2004-3-31 14:38:00 | 显示全部楼层
本帖最后由 作者 于 2004-3-31 18:35:20 编辑

王咣生发表于2004-3-31 10:24:00回复:(王咣生)回复谢谢!如果不用vlisp函数你会怎么做呢?简单到不一定,要有思想?严谨的逻辑结构?我想你要用AutoLISP自己设计程序结构来实现VLISP现成的函数功能,那将收...
  1. ;(str2lst str) 将输入的数据转换为字符串列表.---(纯autolspl的写法)--------------------------梁雄啸.2004.3
  2. ;测试: (str2lst   "Hello 2World 12 5456.1568") = ("Hello" "2World" "12" "5456.1568")
  3. ;版权所有,盗用必究!如在程序中引用,请保留文字信息行.
  4. (defun str2lst (str / i strlst str1)
  5.    (setq i 0 str1 "")
  6.    (while (/= "" (setq s (substr str (setq i (1+ i)) 1)))
  7.        (cond ((/= " " s) (setq str1 (strcat str1 s)))
  8.                    (T (setq strlst (append strlst (list str1))
  9.                        str1 "")))
  10.    )(if (/= str1 "") (append strlst (list str1)) strlst)
  11. )
  12. ;方法2:(defun str2lst (str / i str1)
  13.    (setq i 0 str1 "")
  14.    (while (/= "" (setq s (substr str (setq i (1+ i)) 1)))
  15.        (setq str1 (strcat str1 (if (= " " s) "" "" s)))
  16.    )(read (strcat "("" str1 "")"))
  17. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 03:20 , Processed in 0.158206 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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