找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3623|回复: 20

[求助] [求助]:如何让图上所有的圆圈按比例缩小?

[复制链接]
发表于 2006-10-16 13:38:59 | 显示全部楼层 |阅读模式

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

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

×
如何让图上所有的远去圆圈按比例缩小?
如图,要让所有的轴线圈,以端点为基点,缩小0.5倍
有没有程序可以做到呢???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10417个

财富等级: 富甲天下

发表于 2006-10-16 17:02:29 | 显示全部楼层
[php]
(DEFUN C:SCCIRCLE ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(SETVAR "OSMODE" 0)
(COMMAND ".UNDO" "BE")
(SETQ SC (GETDIST "\nEnter The Scale :"))
(IF (SETQ SS (SSGET '((0 . "CIRCLE")))) (PROGN
  (SETQ N -1)
  (REPEAT (SSLENGTH SS)
   (SETQ EN (ENTNAME SS (SETQ N (1+ N))
         ENT (ENTGET EN)
         PC (CDR (ASSOC 10 ENT))
         R (CDR (ASSOC 40 ENT))
         P1 (POLAR PC 0 R)
         P2 (POLAR PC (/ PI 2) R)
         P3 (POLAR PC PI R)
         P4 (POLAR PC (/ PI -2) R) P nil)
   (IF (> (SSLENGTH (SSGET "C" P1 P1)) 1) (SETQ P P1))
   (IF (> (SSLENGTH (SSGET "C" P2 P2)) 1) (SETQ P P2))
   (IF (> (SSLENGTH (SSGET "C" P3 P3)) 1) (SETQ P P3))
   (IF (> (SSLENGTH (SSGET "C" P4 P4)) 1) (SETQ P P4))
   (IF P (COMMAND "SCALE" EN "" P SC))
  )
))
(COMMAND ".UNCO" "E")
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-10-16 18:14:49 | 显示全部楼层
(SETQ EN (ENTNAME -->(SETQ EN (SSNAME

(COMMAND ".UNCO" "E") -->(COMMAND ".UNDO" "E")

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

使用道具 举报

 楼主| 发表于 2006-10-17 09:52:06 | 显示全部楼层
谢谢楼上两位,但程序好像有错,
少一个闭括号,我在最后加了一个括号后,提示:
错误: 参数太多: (IF (SETQ SS ( ... )) (PROGN ( ... ) ( ... )) (COMMAND ".UNCO" "E") ... )
麻烦再帮忙看一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10417个

财富等级: 富甲天下

发表于 2006-10-17 10:45:42 | 显示全部楼层
三楼楼主说得全对。程序是对带属性的轴线号无效。
程序是少了个右括弧。因为是在机场的本机上敲入的,未进行调试。
下面是改过的程序:

  1. (DEFUN C:SCCIRCLE ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETVAR "OSMODE" 0)
  5. (COMMAND ".UNDO" "BE")
  6. (SETQ SC (GETDIST "\nEnter The Scale :"))
  7. (IF (SETQ SS (SSGET '((0 . "CIRCLE")))) (PROGN
  8.   (SETQ N -1)
  9.   (REPEAT (SSLENGTH SS)
  10.    (SETQ EN (SSNAME SS (SETQ N (1+ N)))
  11.      ENT (ENTGET EN)
  12.      PC (CDR (ASSOC 10 ENT))
  13.      R (CDR (ASSOC 40 ENT))
  14.      P1 (POLAR PC 0 R)
  15.      P2 (POLAR PC (/ PI 2) R)
  16.      P3 (POLAR PC PI R)
  17.      P4 (POLAR PC (/ PI -2) R) P nil)
  18.    (IF (> (SSLENGTH (SSGET "C" P1 P1)) 1) (SETQ P P1))
  19.    (IF (> (SSLENGTH (SSGET "C" P2 P2)) 1) (SETQ P P2))
  20.    (IF (> (SSLENGTH (SSGET "C" P3 P3)) 1) (SETQ P P3))
  21.    (IF (> (SSLENGTH (SSGET "C" P4 P4)) 1) (SETQ P P4))
  22.    (IF P (COMMAND "SCALE" EN "" P SC))
  23.   )
  24. ))
  25. (COMMAND ".UNDO" "E")
  26. (SETVAR "OSMODE" OLDOS)
  27. (SETVAR "CMDECHO" 1)
  28. (PRINC)
  29. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-17 13:35:08 | 显示全部楼层
非常感谢!
已经搞定了,对于这样乐于助人的同志,本版的斑竹应该加分啊!!
延伸一下,如果我想把圆圈里的文字一起缩小,应该把程序怎样改一下??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10417个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2006-10-18 12:38:29 | 显示全部楼层
zxq0220 兄 可能没有明白我的意思,
我的文字和圆圈不是一起的,我想把他们同时缩小,基点就是圆圈的基点
看我的演示。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10417个

财富等级: 富甲天下

发表于 2006-10-18 14:09:02 | 显示全部楼层
照斑竹的意思又改了一下。

  1. (DEFUN C:SCCIRCLE ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETVAR "OSMODE" 0)
  5. (COMMAND ".UNDO" "BE")
  6. (SETQ SC (GETDIST "\nEnter The Scale :"))
  7. (IF (SETQ SS (SSGET '((0 . "CIRCLE")))) (PROGN
  8.   (SETQ N -1)
  9.   (REPEAT (SSLENGTH SS)
  10.    (SETQ EN (SSNAME SS (SETQ N (1+ N)))
  11.          ENT (ENTGET EN)
  12.          PC (CDR (ASSOC 10 ENT))
  13.          R (CDR (ASSOC 40 ENT))
  14.          P1 (POLAR PC 0 R)
  15.          P2 (POLAR PC (/ PI 2) R)
  16.          P3 (POLAR PC PI R)
  17.          P4 (POLAR PC (/ PI -2) R)
  18.          P nil
  19.          P5 (POLAR P3 (/ PI -2) R)
  20.          P6 (POLAR P1 (/ PI 2) R))
  21.    (IF (> (SSLENGTH (SSGET "C" P1 P1)) 1) (SETQ P P1))
  22.    (IF (> (SSLENGTH (SSGET "C" P2 P2)) 1) (SETQ P P2))
  23.    (IF (> (SSLENGTH (SSGET "C" P3 P3)) 1) (SETQ P P3))
  24.    (IF (> (SSLENGTH (SSGET "C" P4 P4)) 1) (SETQ P P4))
  25.    (IF P (COMMAND "SCALE" EN "W" P5 P6 "" P SC))
  26.   )
  27. ))
  28. (COMMAND ".UNDO" "E")
  29. (SETVAR "OSMODE" OLDOS)
  30. (SETVAR "CMDECHO" 1)
  31. (PRINC)
  32. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-23 17:57:10 | 显示全部楼层
谢谢,基本可以了,就是如果文字比较多,超出圆圈范围,就不能一起缩小了,
感谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7245个

财富等级: 富甲天下

发表于 2006-10-23 20:11:04 | 显示全部楼层
(IF (> (SSLENGTH (SSGET "C" P4 P4)) 1) (SETQ P P4))
   (IF P (COMMAND "SCALE" EN "W" P5 P6 "" P SC))

试试这样改的效果
   (IF (> (SSLENGTH (SSGET "C" P4 P4)) 1) (SETQ P P4))
   
   (setq ss (ssget "f" (list p1 p3) '((0 . "*TEXT"))))
   (IF P (COMMAND "SCALE" EN SS "" P SC))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-24 13:24:04 | 显示全部楼层
楼上,不知道怎么的,按照你的改法,每次只能缩小一个了,郁闷……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7245个

财富等级: 富甲天下

发表于 2006-10-24 14:48:47 | 显示全部楼层
Sorry!

(setq ss2 (ssget "f" (list p1 p3) '((0 . "*TEXT"))))
(IF P (COMMAND "SCALE" EN SS2 "" P SC))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-24 18:10:28 | 显示全部楼层
使用者選取所有的軸線

程式去找出軸線中的圓圈
再對找出的圓圈去找出其中的文字

(defun c:test (/)


        (setq
                ss-filter         (list (cons 0 "LINE"))
                ss                         (ssget ss-filter)
        )

        (if (zerop (if ss (sslength ss) 0)) (exit))
        (command "_UNDO" "_BEGIN")

        ;;; start loop

        (setq inx (~ 0))
        (while (setq e (ssname ss (setq inx (1+ inx))))
                (setq
                        ex                (entget e)
                        ep1                (cdr (assoc 10 ex))
                        ep2                (cdr (assoc 11 ex))
                        dst                (distance ep1 ep2)
                        ang                (angle ep2 ep1)
                        sscir        (ssget "F" (list (polar ep1 ang dst) (polar ep2 (+ ang pi) dst)) (list (cons 0 "CIRCLE")))
                        ssx                (ssadd)
                ) ; end setq

                (if (not (zerop (if sscir (sslength sscir) 0)))
                        (progn

                                (setq
                                        target        (ssname sscir 0)
                                        ex                (entget target)
                                        cp                (cdr (assoc 10 ex))
                                        rad                (cdr (assoc 40 ex))
                                        sstxt        (ssget "F" (list (polar cp ang rad) (polar cp (+ ang pi) rad)) (list (cons 0 "TEXT")))
                                        dst1        (distance ep1 cp)
                                        dst2        (distance ep2 cp)
                                        bp                (if (< dst1 dst2) ep1 ep2)
                                ) ; end setq
                                (ssadd target ssx)
                                (if (not (zerop (if sstxt (sslength sstxt) 0)))
                                        (progn
                                        (ssadd (ssname sstxt 0) ssx)
                                        (command "_SCALE" ssx "" bp "0.5")
                                        ) ; end progn
                                ) ; end if
                        ) ; end progn
                ) ; end if
        ) ; end while

        ;;; end loop
        (command "_UNDO" "_END")
        (princ)

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

使用道具 举报

发表于 2006-10-24 18:19:15 | 显示全部楼层
根本不需要程序,全选,然后CTRL+1,然后在左上下拉栏里选择圆,然后就可以统一改你要的直径或半径.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 09:16 , Processed in 0.217970 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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