谢谢gysjy 提出来的宝贵意见!但是这个我很早就试过了,还是不行!加这几行代码如果是往CAD里面写东西还可以!读就不行了。
但还是很感谢gysjy
在程序开头添加(setq os (getvar "PICKBOX"))(setvar "PICKBOX" 0),
在程序末尾添加(setvar "PICKBOX" os) 倒是会减少影响。
- (defun list->variantArray (ptsList / ;|arraySpace sArray |;)
- ; 给以双精度实数表示的二维点数组分配空间
- (setq arraySpace (vlax-make-safearray ;创建 SafeArray
- vlax-vbdouble ; 元素类型
- (cons 0 (- (length ptsList) 1)) ; 数组维数
- )
- )
- (setq sArray (vlax-safearray-fill arraySpace ptsList));在 SafeArray 的元素中存储数据
- ; 返回数组变体
- (vlax-make-variant sArray);创建变体数据类型
- )
- (defun c:test ()
- (setq date (getvar "date"))
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setq p1 (list 2070.5 -177.5 0.0))
- (setq p2 (list 2100.5 -172.5 0.0))
-
- (vl-load-com)
- (setq obj (vlax-get-acad-object))
- ;(vla-ZoomCenter (vlax-get-acad-object) (vlax-3d-point (getpoint))(getdist))
- (vla-ZoomCenter obj (list->variantArray p1) 2000 )
- (setq date1 (getvar "date"))
- (setq sec1 (* 86400.0 (- date1 date)))
- (setq b (ssget "_w" p1 p2))
- (setq date2 (getvar "date"))
- (setq sec2 (* 86400.0 (- date2 date1)))
- (vla-ZoomPrevious obj)
- (setq date3 (getvar "date"))
- (setq sec3 (* 86400.0 (- date3 date2)))
- (setq sec (* 86400.0 (- date3 date)))
- ;(setq b (ssget p1 ))
- (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))
- )
- )
- (setvar "osmode" os)
- )
这个好像是可以的了。但是比较耗时间,花了0.12993~0.15s |