找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 923|回复: 4

[求助] [求助]:有没有其他的函数,有SSGET功能但不受视图放大缩小而受影响的函数。

[复制链接]
发表于 2009-1-14 17:37:26 | 显示全部楼层 |阅读模式

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

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

×
(defun c:test ()
  (setq p1 (list 1924.0 401.0 0.0))
  (setq p2 (list 1944.0 406 0.0))
  (setq b (ssget "_w" p1 p2))
  (setq c (sslength b))
  (setq n 0)
  (while (< n c)
    (PROGN
      (setq e (ssname b n))
      (setq a (entget e))
;;;    (setq txt (ASSOC 1 a))
      (PRINC a)
      (PRINC "\n")
      (setq n (+ n 1))
    )
  )
)

上面的函数在P1 P2之间只有一个文字对象,旁边有其他的线文字等对象的时候。当图形视图放大到一定的倍数的时候可以只选择区域的文字。当图形视图缩小到一定程度后就会选择出来很多对象。根本不知道图形视图放大到什么程度才不会乱选择。

求求各位大侠,指点一下小弟,有没有其他的函数,有SSGET功能但没有受视图放大缩小而受影响的函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-1-14 19:12:03 | 显示全部楼层
在程序开头添加(setq os (getvar "osmode"))(setvar "osmode" 0),在程序末尾添加(setvar "osmode" os)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-15 08:30:20 | 显示全部楼层
谢谢gysjy 提出来的宝贵意见!但是这个我很早就试过了,还是不行!加这几行代码如果是往CAD里面写东西还可以!读就不行了。
但还是很感谢gysjy

在程序开头添加(setq os (getvar "PICKBOX"))(setvar "PICKBOX" 0),
在程序末尾添加(setvar "PICKBOX" os) 倒是会减少影响。

  1. (defun list->variantArray (ptsList / ;|arraySpace sArray |;)
  2.   ; 给以双精度实数表示的二维点数组分配空间
  3.   (setq arraySpace (vlax-make-safearray ;创建 SafeArray
  4.               vlax-vbdouble ; 元素类型
  5.               (cons 0 (- (length ptsList) 1)) ; 数组维数
  6.               )
  7. )
  8.   (setq sArray (vlax-safearray-fill arraySpace ptsList));在 SafeArray 的元素中存储数据
  9.   ; 返回数组变体
  10.   (vlax-make-variant sArray);创建变体数据类型
  11.   )

  12. (defun c:test ()
  13.   (setq date (getvar "date"))
  14.   (setq os (getvar "osmode"))
  15.   (setvar "osmode" 0)
  16.   (setq p1 (list 2070.5 -177.5 0.0))
  17.   (setq p2 (list 2100.5 -172.5 0.0))
  18.   
  19.   (vl-load-com)
  20.   (setq obj (vlax-get-acad-object))
  21.   ;(vla-ZoomCenter (vlax-get-acad-object) (vlax-3d-point (getpoint))(getdist))
  22.   (vla-ZoomCenter obj (list->variantArray p1) 2000 )  
  23.   (setq date1 (getvar "date"))
  24.   (setq sec1 (* 86400.0 (- date1 date)))
  25.   (setq b (ssget "_w" p1 p2))  
  26.   (setq date2 (getvar "date"))
  27.   (setq sec2 (* 86400.0 (- date2 date1)))
  28.   (vla-ZoomPrevious obj)
  29.   (setq date3 (getvar "date"))
  30.   (setq sec3 (* 86400.0 (- date3 date2)))
  31.   (setq sec (* 86400.0 (- date3 date)))
  32.   ;(setq b (ssget  p1 ))
  33.   (setq c (sslength b))
  34.   (setq n 0)
  35.   (while (< n c)
  36.     (PROGN
  37.       (setq e (ssname b n))
  38.       (setq a (entget e))
  39. ;;;    (setq txt (ASSOC 1 a))
  40.       (PRINC a)
  41.       (PRINC "\n")
  42.       (setq n (+ n 1))
  43.     )
  44.   )
  45.   (setvar "osmode" os)
  46. )

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-1-17 11:47:25 | 显示全部楼层
谢谢 雄啸
加过滤 ?怎么样加坐标在一定范围的过滤?小弟水平有限,加含有某列表就可以。但是这个坐标在一定范围的过滤,还请大侠指点指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 01:07 , Processed in 0.189004 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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