找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1079|回复: 7

[LISP程序]:用于生成指定间距、方向、步长的数字(字母)列

[复制链接]
发表于 2007-10-14 00:02:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
桥梁设计经常要写节段号之类,呵呵,瞎写了一个,有用就拿去...



(princ "\n本程序用于生成指定间距、方向、步长的数字(字母)列. start command with wbh,written by lyc,10/2007.")
(defun C:wbh ( / pt fx bc thsize xx yy nn mth begin i pt1 dist osm)
(setq thsize (getvar "textsize"))(setq i 0)
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq pt (getpoint "\n请指定起始点:"))
(setq xx (car pt))(setq yy (cadr pt))
(setq mth (getint "\n请指定生成类型(1.数字/2.字母):<1>"))
(if (= mth nil) (setq mth 1))
   (if (= mth 1)
       (progn
       (setq begin (getint  "\n请指定起始数字:<1>" ))
       (if (= begin nil) (setq begin 1))
        )
       (progn
       (setq begin (getstring  "\n请指定起始字母:<A>" ))
       (if (= begin "") (setq begin "A"))
        )
   )
     
(setq bc (getreal "\n请输入间距:<10>"))
(if (= bc nil) (setq bc 10))
(setq dist (getreal "\n请输入步长:<1>"))
(if (= dist nil) (setq dist 1))
(setq nn (getint "\n请输入生成个数:<10>"))
(if (= nn nil) (setq nn 10))

  
(setq fx (getstring "\n请指定生成方向(X/Y):<X>"))


(if (= mth 1)

(progn  ;;;;;;;;;;;;;11111111111111用于生成数字
  
(if (= fx "") (setq fx "x"))

  (if (or (= fx "X") (= fx "x"))
     (progn
         (while (< i nn)
         (setq pt1 (list xx yy))
         (command "text" "j" "m" pt1  thsize  0  (rtos begin 2 0))
         (setq i (+ i 1))
         (setq begin (+ begin dist))
         (setq xx (+ xx bc))
         )       
      )
     (progn
         (while (< i nn)
         (setq pt1 (list xx yy))
         (command "text" "j" "m" pt1  thsize  0  (rtos begin 2 0))
         (setq i (+ i 1))
         (setq begin (+ begin dist))
         (setq yy (+ yy bc))
         )       
      )
  )

);;;;;;;;;;;;;11111111111111用于生成数字

  
(progn  ;;;;;;;;;;;;;2222222222222222用于生成字母
  
(if (= fx "") (setq fx "x"))

  (if (or (= fx "X") (= fx "x"))
     (progn
         (while (< i nn)
         (setq pt1 (list xx yy))
         (command "text" "j" "m" pt1  thsize  0    begin )
         (setq i (+ i 1))
         (setq begin    (chr   ( fix (+ ( ascii begin) dist) )  )     )
         (setq xx (+ xx bc))
         )       
      )
     (progn
         (while (< i nn)
         (setq pt1 (list xx yy))
         (command "text" "j" "m" pt1  thsize  0    begin  )
         (setq i (+ i 1))
         (setq begin    (chr   ( fix (+ ( ascii begin) dist) )  )     )
         (setq yy (+ yy bc))
         )       
      )
  )

);;;;;;;;;;;;;2222222222222222222用于生成字母

  
)
  
(setvar "cmdecho" 1)(setvar "osmode" osm)
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-10-14 01:19:28 | 显示全部楼层
什么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-10-14 09:15:37 | 显示全部楼层
这个小程序很好用
谢谢楼主
最好可以修改一下数字可以支持前加字母后缀,这样更实用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-15 06:57:09 | 显示全部楼层
呵呵,加后缀比较罗嗦,加不是什么难事,你想咋个加法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-10-15 08:58:24 | 显示全部楼层
如YCK100、YCK200、Z3-SZM2-100、Z3-SZM2-200等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-10-15 13:29:26 | 显示全部楼层
楼主也是桥梁专业的,同行啊,支持一下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-16 05:42:38 | 显示全部楼层
谢谢楼上,哈哈
应3楼要求,改了一下,呵呵,有点冗长,呵,主要没时间搞子程了,功能反正是满足了,添加增加前后缀的功能(字母/数字都可以).

(princ "\n本程序用于生成指定间距、方向、步长的数字(字母)列. start command with wbh,written by lyc,10/2007.")
(defun C:wbh ( / pt fx bc thsize xx yy nn mth begin i pt1 dist osm qhz qhzn)
(setq thsize (getvar "textsize"))(setq i 0)
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq pt (getpoint "\n请指定起始点:"))
(setq xx (car pt))(setq yy (cadr pt))
(setq mth (getint "\n请指定生成类型(1.数字/2.字母):<1>"))
(if (= mth nil) (setq mth 1))
(if (= mth 1)
(progn
(setq begin (getint "\n请指定起始数字:<1>" ))
(if (= begin nil) (setq begin 1))
)
(progn
(setq begin (getstring "\n请指定起始字母:<A>" ))
(if (= begin "") (setq begin "A"))
)
)

(setq bc (getreal "\n请输入间距:<10>"))
(if (= bc nil) (setq bc 10))
(setq dist (getreal "\n请输入步长:<1>"))
(if (= dist nil) (setq dist 1))
(setq nn (getint "\n请输入生成个数:<10>"))
(if (= nn nil) (setq nn 10))

;;;;;是否加入前后缀
(setq qhz (getint "\n是否加入前后缀(0.不加1.前缀/2.后缀):<0>"))
(if (or (= qhz nil) (= qhz 0)) (setq qhz 0) (setq qhzn (getstring "\请前缀(后缀):")))
(if (= qhzn nil) (setq qhzn ""))
;;;;;是否加入前后缀

(setq fx (getstring "\n请指定生成方向(X/Y):"))


(if (= qhz 0)


(progn   ;;;;;;;;;;;;;;;;;;;;;;;无前后缀

(if (= mth 1)

(progn ;;;;;;;;;;;;;11111111111111用于生成数字

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (rtos begin 2 0))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (rtos begin 2 0))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;11111111111111用于生成数字


(progn ;;;;;;;;;;;;;2222222222222222用于生成字母

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 begin )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 begin )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;2222222222222222222用于生成字母

)

) ;;;;;;;;;;;;;;;;;;;;无前后缀


;;;;;;;;;;以下为有前后缀

(if (= qhz 1)

(progn   ;;;;;;;;;;;;;;;;;;;;;;;前缀

(if (= mth 1)

(progn ;;;;;;;;;;;;;11111111111111用于生成数字

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat  qhzn (rtos begin 2 0) ))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat  qhzn (rtos begin 2 0) ))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;11111111111111用于生成数字


(progn ;;;;;;;;;;;;;2222222222222222用于生成字母

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat  qhzn begin) )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat  qhzn begin)  )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;2222222222222222222用于生成字母

)

) ;;;;;;;;;;;;;;;;;;;;前缀


(progn   ;;;;;;;;;;;;;;;;;;;;;;;;;;后缀

(if (= mth 1)

(progn ;;;;;;;;;;;;;11111111111111用于生成数字

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat   (rtos begin 2 0) qhzn ))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat (rtos begin 2 0)   qhzn ))
(setq i (+ i 1))
(setq begin (+ begin dist))
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;11111111111111用于生成数字

(progn ;;;;;;;;;;;;;2222222222222222用于生成字母

(if (= fx "") (setq fx "x"))

(if (or (= fx "X") (= fx "x"))
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat   begin qhzn) )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq xx (+ xx bc))
)
)
(progn
(while (< i nn)
(setq pt1 (list xx yy))
(command "text" "j" "m" pt1 thsize 0 (strcat   begin qhzn) )
(setq i (+ i 1))
(setq begin (chr ( fix (+ ( ascii begin) dist) ) ) )
(setq yy (+ yy bc))
)
)
)

);;;;;;;;;;;;;2222222222222222222用于生成字母

);;;;;;;;;;;;;;;;;;;;后缀

) ;;;;;;;;;;;;;;;;;;;;前后缀



);;;;有无前后缀


)

(setvar "cmdecho" 1)(setvar "osmode" osm)
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-10-16 09:00:16 | 显示全部楼层
修改后的很实用哈
前后缀都可以加
谢谢搂住,辛苦了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 10:55 , Processed in 0.189859 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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