找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 587|回复: 2

[求助] [求助]:怎样实现进度显示

[复制链接]
发表于 2005-4-6 08:28:35 | 显示全部楼层 |阅读模式

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

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

×
在进行循环插入块的程序中
由于数量巨大,往往让人感到像当机

能不能像recover命令一样,下面显示进度
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-6 09:31:07 | 显示全部楼层
你可以参考我给你的等分点程序
里面一个子程序用到了进度控制
.....当你需要串接的线很长时就会看到
进度显示了...
(defun hy_apline(ename1 / vla-obj endpoint ename startpoint i ss1 nn ssm ssn itemx);;;選擇一條線串接與之相聯的圖元為多義線
  (if (= "LWPOLYLINE" (cdr(assoc 0 (entget ename1)))) (command "._explode" ename ""))
  (setq ename (entlast))
  (setq vla-obj (vlax-ename->vla-object ename))
   (setq startpoint (vlax-curve-getstartpoint vla-obj)
         endpoint (vlax-curve-getendpoint vla-obj))
;(safearray-value(vlax-variant-value(vla-get-endpoint vla-obj))))
  (if (OR (= "POLYLINE" (cdr(assoc 0 (entget ename))))
          (= "LWPOLYLINE" (cdr(assoc 0 (entget ename)))))
  (setq i 1)(SETQ I 0))
  (setq j 0);;計數器歸0
  (setq nn 0)
  (princ " ─── \r")
  (while (> (distance startpoint endpoint) 0.0000001);(= (vla-get-closed vla-obj) :vlax-false)
    ;(setq ss1 (ssget "x" (list (cons -4  "<or") (cons 10 endpoint)(cons 11 endpoint) (cons -4  "or>"))))
    (setq ss1 (ssadd))
    (setq ssn (ssget "f" (list endpoint (polar endpoint 0.8 0.1))))
    (foreach itemx (ap-sslist ssn)
      (if (or (< (distance endpoint (vlax-curve-getstartpoint (vlax-ename->vla-object itemx))) 0.0000001)
              (< (distance endpoint (vlax-curve-getendpoint (vlax-ename->vla-object itemx))) 0.0000001))
          (setq ss1 (ssadd itemx ss1))
        )
    )
   (setq ss2 (ssadd))
   (setq ssm (ssget "f" (list startpoint (polar startpoint 0.8 0.1))))
    (foreach itemx (ap-sslist ssm)
      (if (or (< (distance startpoint (vlax-curve-getstartpoint (vlax-ename->vla-object itemx))) 0.0000001)
              (< (distance startpoint (vlax-curve-getendpoint (vlax-ename->vla-object itemx))) 0.0000001))
          (setq ss2 (ssadd itemx ss2))
        )
    )
   (setq ssg (addss ss1 ss2))
   (if (= 0 i)(command "pedit" ename "y" "j" ssg "" "")
               (command "pedit" ename  "j" ssg "" ""))
    (setq ename (entlast))
    (setq vla-obj (vlax-ename->vla-object ename))
    (setq startpoint (vlax-curve-getstartpoint vla-obj)
         endpoint (vlax-curve-getendpoint vla-obj))
    (setq i (1+ i))
    (setq nn (1+ nn))
    (cond ((= nn 15)(princ  (strcat "線很長..正在串接中,請稍侯 ......  ───" "\r")));;;;;进度控制!!!
          ((= nn 30)(princ  (strcat "線很長..正在串接中,請稍侯 ......  ﹨﹨﹨" "\r")))
          ((= nn 45)(princ  (strcat "線很長..正在串接中,請稍侯 ......  │││" "\r")))
          ((= nn 60)(princ  (strcat "線很長..正在串接中,請稍侯 ......  ∕∕∕" "\r")))
          )
    (if (> nn 60) (setq nn 1))
    (setq j (1+ j))
    (IF (and (= 1 (sslength ssg))(= (vla-get-closed vla-obj) :vlax-false))
          (setq startpoint '(0 0 0) endpoint '(0 0 0)));(alert "\n請注意!****串接不線不能封閉!")
    )
  (if (> j 1000)(prompt (strcat "\n恭喜你一共把" (itoa (+ (* 2 j) 3)) "條線串接成了一個封閉的復線!")))
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 02:33 , Processed in 0.340931 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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