找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 739|回复: 7

[求助] [求助]:请指教错在哪里

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

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

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

×
我自己编写了一个为r14的以文字中心改文字大小的程序
但是没有达到自己的预期效果不知道问题出在哪里?
请指教?
最好在我的原来基础上找出错误(学习阶段,主要想知道自己错在哪里)

  1. (defun c:test()
  2.    (setq h (getreal "\n文字高度:"))
  3.    (setq ss (ssget))
  4. (setq enn (entlast))
  5.    (setq n 0)
  6. (repeat (sslength ss)
  7.          (setq en (ssname ss n))
  8.          
  9.          (setq en_data (entget en))
  10.          (setq en_type (cdr (assoc 0 en_data)))

  11.     (if (= en_type "TEXT")
  12.        (progn
  13.            (command "ucs" "e" en)
  14. (setq en_high (cdr (assoc 40 en_data)))

  15.            (setq box (textbox en_data))
  16.            (setq pt1 (car box))
  17.            (setq pt3 (cadr box))
  18.            (setq pt2 (list (car pt3) (cadr pt1)))
  19.            (setq pt4 (list (car pt1) (cadr pt3)))
  20.            (setq mid (inters pt1 pt3 pt2 pt4))
  21.            (setq i (/ h en_high))
  22.            (command "scale" enn "" mid i)
  23.        )
  24.    )
  25. )
  26. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 111个

财富等级: 日进斗金

发表于 2005-11-2 12:10:55 | 显示全部楼层
;改为如下程序即可基本满足要求
(defun c:test()
(setq h (getreal "\n文字高度:"))
(setq ss (ssget))
;(setq enn (entlast))删除该行
(setq n 0)
(repeat (sslength ss)
(setq en (ssname ss n))

(setq en_data (entget en))
(setq en_type (cdr (assoc 0 en_data)))

(if (= en_type "TEXT")
(progn
(command "ucs" "e" en)
(setq en_high (cdr (assoc 40 en_data)))

(setq box (textbox en_data))
(setq pt1 (car box))
(setq pt3 (cadr box))
(setq pt2 (list (car pt3) (cadr pt1)))
(setq pt4 (list (car pt1) (cadr pt3)))
(setq mid (inters pt1 pt3 pt2 pt4))
(setq i (/ h en_high))
(command "scale" en "" mid i);该行有改动
)
)
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-2 12:13:40 | 显示全部楼层
  1. [FONT=courier new]
  2. ;;;以文字中心改文字大小
  3. (defun c:test ()
  4.   (setq        h  (getreal "\n文字高度 : ")
  5.         ss (ssget '((0 . "TEXT")))        ;直接过滤TEXT实体简化以后的程序
  6.                                         ;enn (entlast);无用
  7.         n  0
  8.   )
  9.   (repeat (sslength ss)
  10.     (setq en          (ssname ss n)
  11.           en_data (entget en)
  12.     )
  13.     (command "ucs" "e" en)
  14.     (setq en_high (cdr (assoc 40 en_data))
  15.           box          (textbox en_data)
  16.           pt1          (car box)
  17.           pt3          (cadr box)
  18.           pt2          (list (car pt3) (cadr pt1))
  19.           pt4          (list (car pt1) (cadr pt3))
  20.           mid          (inters pt1 pt3 pt2 pt4)
  21.           i          (/ h en_high)
  22.           n          (1+ n)                ;新加,否则无法循环
  23.     )
  24.     ;;(command "scale" enn "" mid i);;; enn 应改成循环后的实体en
  25.     (command "scale" en "" mid i)
  26.   )
  27.   (princ) ;新加,屏蔽回显
  28. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

 楼主| 发表于 2005-11-2 16:39:09 | 显示全部楼层
谢谢各位搞定了
还想问xyp1964两个问题
一:在这个程序中(command "ucs" "e" en)起什么作用。
二:在学习中我时常见到(setvar "cmdecho" 0) 这句的作用是什么,有或者没有好象都没有什么变化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-2 18:35:56 | 显示全部楼层
1. 其实没什么用
2. 是控制cad命令回显的系统参数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-11-2 18:57:50 | 显示全部楼层

  1. (defun c:tt (/ ss ssl n oldos el e n pl pcen oldos h zh scl)
  2.   (if (and (setq h (getdist "\nHeight: "))
  3.            (setq ss (ssget '((0 . "Text")))))
  4.     (progn
  5.       (setq ssl          (sslength ss)
  6.             n          0
  7.             oldos (getvar "osmode")
  8.       )
  9.       (setvar "osmode" 0)
  10.       (repeat ssl
  11.         (setq el (entget (setq e (ssname ss n)))
  12.               n         (1+ n)
  13.               zh (cdr (assoc 40 el))
  14.               scl (/ h zh)
  15.         )
  16.         (setq pl   (textbox el)
  17.               pcen (trans (mapcar '+
  18.                                   (cdr (assoc 10 el))
  19.                                   (mapcar '(lambda (x) (/ x 2.))
  20.                                           (mapcar '+ (car pl) (cadr pl))
  21.                                   )
  22.                           )
  23.                           0
  24.                           1
  25.                    )
  26.         )
  27.         (command ".scale" e "" pcen scl)
  28.       )
  29.       (setvar "osmode" oldos)
  30.     )
  31.   )
  32.   (princ)
  33. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 00:20:37 | 显示全部楼层
再用“通用函数”写一个:
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;|加载通用函数(可在签名栏直接下载)
  4. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  5. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  6. ★1·在acad.lsp中增加(load"xyp_lib")
  7. ■2·在每个程序内增加(load"xyp_lib")
  8. ■3·在command下,输入(load"xyp_lib")
  9. ■4·在菜单.mnl中增加(load"xyp_lib")
  10. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  11. [COLOR=red] ★通用函数下载地址:[/COLOR]
  12. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  13. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]
  14. |;

  15. ;;;以文字中心改文字大小
  16. (defun c:test (/ ss n en st pt)
  17.   (cmdla0)
  18.   (setq        h  (UREAL 7 "" "\n输入新文字高度" h)
  19.         ss (ssget '((0 . "TEXT")))
  20.         n  -1
  21.   )
  22.   (while (setq en (ssname ss (setq n (1+ n))))
  23.     (setq st (/ h (cdr (assoc 40 (entget en))) 1.0)
  24.           pt (xyp-get-MidPoint
  25.                (xyp-get-MinMaxPoint en 0)
  26.                (xyp-get-MinMaxPoint en 1)
  27.              )
  28.     )
  29.     (command "scale" en "" pt st)
  30.   )
  31.   (cmdla1)
  32. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 18:36 , Processed in 0.201665 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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