找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 757|回复: 8

[求助] [求助]:关于lisp函数问题

[复制链接]
发表于 2005-11-17 18:17:26 | 显示全部楼层 |阅读模式

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

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

×
我的原意是想在绘图过程中,把所有的字体样式统一为txt1,hztxt,我所编写的程序如下,我是一名刚刚开始接触autolisp的菜鸟,有些东西还不是十分清楚,是抱着书一边查一边写的,费了老大劲。请各高手帮忙解决一下,不胜感激:
;;;将所有字体样式更换为txt1,hztxt
(defun c:stt()
       (setvar "cmdecho" 0)
       (setq n2 (tblnext "style" t))
       (sub)
       (setq n2 (tblnext "style"))
   while((= (cdr (assoc 0 n2)) "STYLE")
          (setq n2 (tblnext "style"))
          (sub)
        )
        (setvar "cmdecho" 1)
        (princ)

)

(defun sub()
    (setq n3 (cdr (assoc 3 n2)))
    (setq n4 (cdr (assoc 40 n2)))
    (setq n5 (cdr (assoc 41 n2)))
    (setq nn3 (cons 3 "txt1,hztxt"))
    (setq nn4 (cons 40 "0.0"))
    (setq nn5 (cons 41 "0.75"))
    (setq n2 (subst nn3 n3 n2))
    (setq n2 (subst nn4 n4 n2))
    (setq n2 (subst nn5 n5 n2))
    (entmod n2)
  )

我怎么弄都无法实现我的想法,不知问题出在什么地方了,我自己猜想可能是tblnext这个函数用的不正确,但我也不知道其它什么函数可以实现这个功能。还望各位高手不吝赐教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-17 18:26:33 | 显示全部楼层
不是的,上次我也碰到一个如此的问题,在程序里作死了也更换不了文字的字体,我也看了半久,原来我那个是个仿宋体,属于大字体。是不是少了个文件呢,我没搞懂了,现在重装了CAD,再搞一下就好了,但是你当然不要重装CAD罗。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-11-17 20:22:43 | 显示全部楼层
  1. [FONT=courier new];;;将所有字体样式更换为txt1,hztxt
  2. (defun c:stt ()
  3.   (setvar "cmdecho" 0)
  4.   (command "-style" "HZDX" "txt1,hztxt" 300 0.7 0 "n" "n" "n")
  5.   (setq        ss (ssget "x" '((0 . "*TEXT")))
  6.         i  -1
  7.   )
  8.   (while (setq s1 (ssname ss (setq i (1+ i))))
  9.     (sub_upd s1 7 "HZDX")
  10.   )
  11.   (princ)
  12. )
  13. (defun sub_upd (ename code newvalue)
  14.   (entmod (subst (cons code newvalue)
  15.                  (assoc code (entget ename))
  16.                  (entget ename)
  17.           )
  18.   )
  19.   (entupd ename)
  20. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-17 21:51:19 | 显示全部楼层
谢谢楼上的兄弟,我还没看明白呢,回去我好好研究研究!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-11-18 11:47:38 | 显示全部楼层
最简单的方式就是在程式中用"command"调用AutoCAD的内部命令修改字体,同4楼的方法!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-18 12:41:33 | 显示全部楼层
七楼的兄弟,我很想要你说的那个程序呀,可以发到我的邮箱里吗?
zw_zwzx@163.com
先谢谢了

四楼的高手,我在执行你的程序时,出现错误提示:错误: 参数类型错误: lselsetp nil

当我分步执行时发现问题出在这步上:(ssget "x" '((0 . "*TEXT")))
这是怎么回事呀?还有我想问一下,"*text"中*是什么意思呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 20:03 , Processed in 0.386726 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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