明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2655|回复: 11

[求助]请教高手,关于刷新屏幕的问题(已解决).

  [复制链接]
发表于 2009-3-29 18:56:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-3-31 20:36:42 编辑

命令: (setq sset (ssget "wp" a b))
; 错误: 错误的点列表

命令: !a (34335.2 -268495.0)

命令: !b (100902.0 -230336.0)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-10-14 22:47:37 | 显示全部楼层
Andyhon 发表于 2009-3-31 09:51
本帖最后由 作者 于 2009-3-31 9:54:08 编辑  ;;; http://www.faqs.org/faqs/CAD/autolisp-faq/part2/sect ...

在图纸空间也能用。比regenall速度快很多!
发表于 2009-3-29 19:06:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-29 19:09:45 编辑

(setq sset (ssget "wp" (list a b)))

但至少传递3个点的点表,否则选不到任何目标.

 楼主| 发表于 2009-3-29 19:37:00 | 显示全部楼层

哦,原来是这样.其实我是想不用系统的REGEN命令,因为刷新要很久,我想只刷新当前屏幕上看得到的物体,有没有这样的程序呢?

我有一个,但是需要选择,我是想省去选择这一步,而且这个程序刷新天正的物体的话经常出错.

哪位有没有更好的?(setq leng (sslength sset))
(progn
        (setq i 0)
        (while (< i leng)
                (setq ent (ssname sset i))  
                (entmod (entget ent))
                (setq i (+ i 1))
        )
)

 楼主| 发表于 2009-3-30 17:54:00 | 显示全部楼层
有没有谁有这方面类似的程序?
发表于 2009-3-30 19:09:00 | 显示全部楼层

 ;;; (for-sset ss entdel)
 ;;; Vladimir Nesterovsky

(defun for-sset (sset fun / n)
   (if (= 'PICKSET (type sset))
     (repeat (setq n (fix (sslength sset)))
        (fun (ssname sset (setq n (1- n))))
   ) )
)

;;; =======================================

(defun Re_ss (a)  (for-sset a entupd))


ex. (Re_ss sset)

 楼主| 发表于 2009-3-30 20:03:00 | 显示全部楼层

Andyhon,不明白这段程序如何运行呢?

我是希望执行一个命令就会自动刷新当前屏幕上看到的物体(不需要选择物体)

 楼主| 发表于 2009-3-31 08:46:00 | 显示全部楼层
我想这是大部分人都需要的.
发表于 2009-3-31 09:51:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-31 9:54:08 编辑

;;; http://www.faqs.org/faqs/CAD/autolisp-faq/part2/section-2.html
;;; returns a list of the actual viewport corners in WCS
  (defun ZOOMPTS ( / ctr h screen ratio size size_2)
    (setq ctr (xy-of (getvar "VIEWCTR")) ;3D -> 2D
          h   (getvar "VIEWSIZE")        ;real
          screen (getvar "SCREENSIZE")   ;2D: Pixel x,y
          ratio (/ (float (car screen))  ;aspect ratio
                   (cadr screen))
          size (list (* h ratio) h)      ;screensize in coords
          size_2 (mapcar '/ size '(2.0 2.0)))
      (list (mapcar '- ctr size_2)
            (mapcar '+ ctr size_2)))

;;; for WCS only
(re_ss (apply 'ssget (cons "w" (ZOOMPTS))))   ;; windows
or
(re_ss (apply 'ssget (cons "c" (ZOOMPTS))))    ;; crossing

 楼主| 发表于 2009-3-31 19:17:00 | 显示全部楼层

Andyhon,缺少函数:RE_SS

错误: no function definition: RE_SS

发表于 2009-3-31 19:39:00 | 显示全部楼层
check 第 5
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 02:48 , Processed in 0.173631 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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