找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 831|回复: 8

[求助] [求助]:帮助看看这个LISP错在哪?

[复制链接]
发表于 2003-11-29 11:13:15 | 显示全部楼层 |阅读模式

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

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

×
  1. defun c:chop (/ oldtxt oldnum ssdata ent entxt height ennum  kk m n newtxt
  2.                newcontext ssdata pt)
  3.   (princ "断开单行文本......")
  4.   (setq old (getvar "cmdecho"))
  5.   (setvar "cmdecho" 0)
  6.   (setq ssdata (entget(car(entsel))))
  7.   (setq oldtxt (getstring t "\nFrom what word:"))
  8.   (setq oldnum (strlen oldtxt))
  9.   (setq ent (assoc 1 ssdata))
  10.   (setq entxt (cdr ent))
  11.   (setq height (cdr(assoc 40 ssdata)))
  12.   (setq ennum (strlen entxt))
  13.   (setq p 1)
  14.   (while (<= p ennum)
  15.     (setq kk (substr entxt p oldnum))
  16.     (if (= kk oldtxt)
  17.       (progn
  18.         (setq m (- p 1))
  19.         (setq n (- ennum m))
  20.       )
  21.     )
  22.     (setq p (1+ p))
  23.   )
  24.   (setq newtxt (substr entxt 1 m))
  25.   (setq newcontext (substr entxt p n))
  26.   (setq ssdata (subst (cons 1 newtxt) ent ssdata))
  27.   (entmod ssdata)
  28.   (setq pt (getpoint "\nplease enter one point:"))
  29.   (command ".dtext" pt height "" newcontext "")
  30.   (setvar "cmdecho" old)
  31.   (princ)
  32. )

原意是想以输入的字符为界断开单行文本,而且分为两行,
不知道哪里出问题。谢谢先。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-11-29 11:51:47 | 显示全部楼层
提问题要吧你的编程思路,程序的功能,想要得到的结果,最后得到的结果写上来,这样有有助于问题的解决,也能对那些初学者予帮助。
如果有相同的字符怎么办?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

发表于 2003-11-30 21:19:38 | 显示全部楼层
对呀,,如果又有中文又有字母怎么办?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-11-30 23:12:07 | 显示全部楼层
看晓东工具箱里的lisp,应该就可以理解了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-1 10:14:27 | 显示全部楼层

  1. ;;由于文字性质有很多...
  2. ;;对齐点就更麻烦.....没有那么简单的...好好再想想吧!
  3. (defun C:CHOP (/        OLDTXT         OLDNUM          SSDATA   ENT            ENTXT
  4.                HEIGHT        ENNUM         KK          M           N            NEWTXT
  5.                NEWCONTEXT         SSDATA          PT
  6.               )
  7.   (princ "断开单行文本......")
  8.   (setq OLD (getvar "cmdecho"))
  9.   (setvar "cmdecho" 1)
  10.   (setq SSDATA (entget (car (entsel))))
  11.   (setq OLDTXT (getstring t "\nFrom what word: "))
  12.   (setq OLDNUM (strlen OLDTXT))
  13.   (setq ENT (assoc 1 SSDATA))
  14.   (setq ENTXT (cdr ENT))
  15.   (setq HEIGHT (cdr (assoc 40 SSDATA)))
  16.   (setq ROT (cdr (assoc 50 SSDATA)))
  17.   (setq ENNUM (strlen ENTXT))
  18.   (setq P 1)
  19.   (while (or (null M) (<= P ENNUM))
  20.     (setq KK (substr ENTXT P OLDNUM))
  21.     (if        (= KK OLDTXT)
  22.       (setq M (- P 1))
  23.     )
  24.     (setq P (1+ P))
  25.   )
  26.   (if M
  27.     (progn
  28.       (setq NEWTXT (substr ENTXT 1 M))
  29.       (setq NEWCONTEXT (substr ENTXT (+ M 1)))
  30.       (setq SSDATA (subst (cons 1 NEWTXT) ENT SSDATA))
  31.       (entmod SSDATA)
  32.       (setq PT (getpoint "\nplease enter one point: "))
  33.       (command "_.text" PT HEIGHT (/ (* ROT 180) pi) NEWCONTEXT)
  34.     )
  35.   )
  36.   (setvar "cmdecho" OLD)
  37.   (princ)
  38. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-6 13:11:49 | 显示全部楼层
最初由 zhynt 发布
[B]提问题要吧你的编程思路,程序的功能,想要得到的结果,最后得到的结果写上来,这样有有助于问题的解决,也能对那些初学者予帮助。
如果有相同的字符怎么办? [/B]

如果有相同的字符怎么办? [/B][/QUOTE]
有相同的字符我也不怕,因为我在"FROM WHAT WORD:"后面可以输入两个甚至三个或者更多字符!有中文也不怕.十分感谢6楼楼主LUCAS提供的帮助!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-6 15:53:29 | 显示全部楼层
无非是把一个字串按另一字串拆分 。再写出来。
我前面贴过的.

  1. ;相当xdrx_string_tok
  2. ;(str-cut "1234534""67" t)-->("1234534")
  3. ;(str-cut "1234534""3" t)-->("12" "45" "4")
  4. ;(str-cut "1234534""3" nil)-->("12" "3" "45" "3" "4")
  5. ;(str-cut "ab  12  3 4534" " " t)-->("ab" "12" "3" "4534")


  6. (defun str-cut (fa-str str how / len li no)
  7. (setq li nil len(strlen str) )
  8. (while(setq no(vl-string-search str fa-str))
  9.        (if(/= no 0)
  10.         (setq li(cons(substr fa-str 1 no)li))
  11.        )
  12.        (setq li(cons (substr fa-str(1+ no) len) li)
  13.              fa-str(substr fa-str (+ no len 1))
  14.         )
  15.   )
  16. (if(/= "" fa-str)(setq li(cons fa-str li)))
  17. (if how
  18.     (vl-remove str (reverse li))
  19.     (reverse li)
  20.   )
  21. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-6 16:01:02 | 显示全部楼层
老大,你这个LISP怎样用啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 20:52 , Processed in 0.200468 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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