找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1727|回复: 16

[建议]:有这样得lisp么?同时缩放圆和里面得字。

[复制链接]
发表于 2006-4-27 21:05:22 | 显示全部楼层 |阅读模式

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

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

×
呵呵,各位高手,小弟再此求一个lisp程序。


要求:圆内字符,如轴线标号,圆和字体同时缩放。单个或者多个都能处理。省得每次都用缩放命令。


请高手编写一个吧,感觉这东西常要用得。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11309个

财富等级: 富甲天下

发表于 2006-4-27 23:29:22 | 显示全部楼层
[php]
(DEFUN C:SCC ()
(SETVAR "CMDECHO" 0)
(COMMAND ".UNDO" "BE")
(SETQ SC (GETDIST "\nEnter Scale 输入放大比例 : "))
(WHILE
  (PROGN
   (PRINC "\nSelect Circle(s) 选择圆 : ")
   (SETQ SS (SSGET '((0 . "CIRCLE"))))
  )
  (SETQ I -1)
  (REPEAT (SSLENGTH SS)
   (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
         PC (CDR (ASSOC 10 ENT))
         R (CDR (ASSOC 40 ENT))
         P1 (POLAR (POLAR PC PI R) (/ PI -2) R)
         P2 (POLAR (POLAR PC 0 R) (/ PI 2) R))
   (COMMAND "SCALE" "W" P1 P2 "" PC SC)
  )
)
(COMMAND ".UNDO" "E")
(SETVAR "CMDECHO" 1)
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-28 16:18:32 | 显示全部楼层
我也正需要这样的东东,但不知道怎样加载,请说明下.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-4-29 13:12:33 | 显示全部楼层

  1. ;;;By Aeo @xdcad.net
  2. ;;;定义点缩放实体
  3. ;;;文字为中心点缩放
  4. (defun c:sc ( / __mm a b e j ss dxf)
  5. (defun dxf(a b)(cdr(assoc a(entget b))))
  6. (or   $_scale (setq  $_scale 0.5))
  7. (initget 6)
  8. (if (setq __mm (getreal (strcat "\n当前比例(" (rtos $_scale 2 3) "):")))
  9.      (setq $_scale __mm)
  10. )
  11. (setq j -1)
  12. (if(setq ss (ssget))
  13.   (progn(command "UNDO" "group")
  14.          (repeat (sslength ss)
  15.            (setq e(ssname ss(setq j(1+ j))))
  16.            (if(wcmatch (dxf 0 e)"TEXT,ATT*")
  17.               (command "scaletext" e "" "m""s" $_scale)
  18.               (command "scale" e """none"(trans(dxf 10 e)e 1)$_scale)
  19.            )
  20.           )
  21.           (command "undo" "end")
  22.        )
  23.    )
  24.   (princ)
  25. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-4-29 19:19:55 | 显示全部楼层
2楼的的朋友,谢谢你的lisp,不过我在使用中,发现不能选定对象。我用的是CAD2005。版主提供的lisp,命令是SC么?和CAD原有命令重了吧?我改了一下你的lisp调用命令,我发现在使用中,虽然基点是默认的,但是圆和字的基点不一样,导致产生字偏移到圆内的一侧。

仅仅是同时缩放字和圆的话,用CAD的SC命令就可以。关键是有多个字和圆要改变比例,该如何处理?如果用复制那还要删除原来的。

我想了一下,如果用一种刷子,同时刷字和圆的比例会好些。或者是,同时选中多个字和圆,同时缩放比例,但是注意,要求字和圆的基点位置不变。引申出这个问题,那还括了多段线组成的字符,比如三角形里面一个字符,六边形里面一个字符。要求多个三角形和字同时缩放但是图形和字的基点位置不遍。


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

使用道具 举报

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

使用道具 举报

发表于 2006-4-29 22:51:09 | 显示全部楼层
所谓相对位置不太好界定:
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060422
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]
  12. [url]http://free.ys168.com/?xyp1964[/url]
  13. |;

  14. ;;; 同时缩放圆和里面的字
  15. (defun c:test ()
  16.   (CMDLA0)
  17.   (if(null real)(setq real 1.0))
  18.   (setq        REAL (UREAL 7 "" "\n缩放比例" REAL)
  19.         ss   (ssget '((0 . "TEXT,CIRCLE")))
  20.         i    -1
  21.   )
  22.   (while (setq s1 (ssname ss (setq i (1+ i))))
  23.     (setq pt0 (xyp-get-MinMaxPoint s1 5))
  24.     (command "scale" s1 "" pt0 real)
  25.   )
  26.   (CMDLA1)
  27. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-5-1 23:59:58 | 显示全部楼层
最初由 封剑忆江南 发布
[B]2楼的的朋友,谢谢你的lisp,不过我在使用中,发现不能选定对象。我用的是CAD2005。版主提供的lisp,命令是SC么?和CAD原有命令重了吧?我改了一下你的lisp调用命令,我发现在使用中,虽然基点是默认的,但是圆和字?.. [/B]


(if(wcmatch (dxf 0 e)"TEXT,ATT*")
              (command "scaletext" e "" "m""s" $_scale)
              (command "scale" e """none"(trans(dxf 10 e)e 1)$_scale)
           )


直接改为

(command "scale" e """none"(trans(dxf 10 e)e 1)$_scale)

就可以

如果文字在圆中间
按我上面的方法,应该还在中间的.不知道你是怎么操作的,
或者贴个图?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-4 22:19:35 | 显示全部楼层
10楼是思路应该是比较好的
只是用box的两个角点,可能会把别的东西弄近选集
建议在circle里面提取ssget的wp边界(如36等分点)。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-5-8 13:25:30 | 显示全部楼层
最初由 zh_6531394 发布
[B]10楼的朋友,用了以后,什么反应都没有? [/B]
  1. [FONT=courier new]
  2. ;;; 同时缩放圆及里面的字
  3. ;;; yzsf(圆字缩放)
  4. (defun c:yzsf (/ ss i s1 pt ptn ss0)
  5.   (CMDLA0)
  6.   (setvar "osmode" 0)
  7.   (if (null REAL)
  8.     (setq REAL 1.0)
  9.   )
  10.   (setq REAL (UREAL 7 "" "\n缩放比例" REAL))
  11.   (if (/= REAL 1.0)
  12.     (progn
  13.       (setq ss (ssget '((0 . "CIRCLE")))
  14.             i  -1
  15.       )
  16.       (while (setq s1 (ssname ss (setq i (1+ i))))
  17.         (setq pt  (xyp-get-dxf 10 s1)
  18.               ptn (xyp-get-CurveDivPtlst
  19.                     s1
  20.                     (/ (xyp-get-CurveLength s1) 36.0)
  21.                   )
  22.               ss0 (ssget "WP" ptn '((0 . "TEXT")))
  23.         )
  24.         (if ss0
  25.           (command "scale" s1 ss0 "" pt REAL)
  26.         )
  27.       )
  28.     )
  29.   )
  30.   (CMDLA1)
  31. )
  32. (pxyp "yzsf  (圆字缩放)")
  33. (princ)
  34. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 08:26 , Processed in 0.195910 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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