明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1682|回复: 2

求高手帮忙改进程序,谢谢!

[复制链接]
发表于 2012-6-23 14:18:42 | 显示全部楼层 |阅读模式

程序改进:

如何能实现:输入TT命令后,选择第一点(整排圆能跟着显示出来,随第二点的位置而确定圆的个数),然后选择第2点结束。

本帖子中包含更多资源

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

x
发表于 2012-6-23 21:31:06 | 显示全部楼层
改了一下,程序能用但不好用,圆的数量多的话会卡
(defun c:qq (/ ang code d data di gr i loop lst n nbak pt1 pt3 r)
  (defun #err001 (s)
    (ssde lst)
    (setq *error* $orr)
  )
  (defun ssde (lst / i)
    (if lst(foreach x lst (entdel x)))
  )
  (setq $orr *error*)
  (setq *error* #err001)
  (if (= (tblsearch "layer" "6") nil)
    (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) '(6 . "Continuous")
                   (cons 2 "6") (cons 62 4)
             )
    )
  )
  (setq d 2.2  r 2.5  loop t nbak 0  pt1 (getpoint "\n第一点:"))
  (while (progn
           (setq gr (grread t 15 0) code (car gr) data (cadr gr))
           (cond
             ((= code 3) (setq loop nil))
             ((= code 5)
               (setq di (distance pt1 data) ang (angle pt1 data) n (fix (/ di d)) pt3 pt1)
               (if (/= n nbak)
                 (progn
                   (ssde lst)
                   (setq lst nil)
                   (princ (strcat "\n当前圆数量:" (itoa (1+ n))))
                   (entmake (list '(0 . "CIRCLE") (cons 10 pt3) (cons 40 r) (cons 8 "6")))
                   (setq lst (cons (entlast) lst))
                   (repeat n
                     (setq pt3 (polar pt3 ang d))
                     (entmake (list '(0 . "CIRCLE") (cons 10 pt3) (cons 40 r) (cons 8 "6")))
                     (setq lst (cons (entlast) lst))
                   )
                   (setq nbak n)
                 )
               )
             )
             ((member code '(11 25))
               (ssde lst)
               (setq loop nil)
             )
             (t
             )
           )
           loop
         )
  )
  (setq *error* $orr)
  (princ)
)

点评

还有点点缺陷,就是随意拖动的格子太大了,这样就不能达到随意效果了!希望高手能改一下!  发表于 2012-6-24 14:10
不愧位高手,太牛X了,谢谢! 我试过了,正是我所要的效果,就是比较卡,希望高手能完善啊!  发表于 2012-6-24 14:06
发表于 2012-6-24 23:17:19 | 显示全部楼层
setq d 2.2  r 2.5  
d为两个圆间距,r为圆半径,自己改吧。卡的问题无法解决。

点评

我说得不是孔距,是随意拖动的时候很僵硬,不能随意达到随意摆动的效果!  发表于 2012-6-25 11:25
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 07:42 , Processed in 0.221502 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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