 - (defun C:wx()
- (vl-load-com)
- (command "undo" "be")
- (setvar "cmdecho" 0)
- (command "ucs" "w")
- (princ "\n请选择物体:")
- (while(null
- ;;; (setq en (ssget '((0 . "LWPOLYLINE") (62 . 5) ) ))
- ;选择指定名称的图块,例如块名为"a3",注释的上一句选择蓝色的多段线可以执行,我调试时都时用选的多段线
- (setq en (ssget "x" '((0 . "~block,~a3"))))
- ))
- (setq minx0 1e6 miny0 1e6 maxx0 -1e6 maxy0 -1e6)
- (setq i 0)
- (repeat (sslength en)
- (setq end (ssname en i))
- (setq end_data (entget end))
- ;求选择集的最大和最小坐标
- (vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp)
- (setq minp (vlax-safearray->list minp)
- maxp (vlax-safearray->list maxp))
- (setq minx (car minp)
- maxx (car maxp)
- miny (cadr minp)
- maxy (cadr maxp))
- ;获得选择集的最大和最小坐标
- ;求出图框的高度h和宽度w
- (setq w (- maxx minx)
- h (- maxy miny))
- ;;; ;判断图幅放大比例
-
- (cond
- ((= (/ h 594) (/ w 841) ) (setq scl (/ h 594)))
- ((= (/ h 420) (/ w 594) ) (setq scl (/ h 420)))
- ((= (/ h 297) (/ w 420) ) (setq scl (/ h 297))))
- ;;;;求出图号位置
- (setq tx1 (- maxx (* scl 81)))
- (setq ty1 (+ miny (* scl 19)))
- (setq tx2 (- maxx (* scl 5)))
- (setq ty2 (+ miny (* scl 33)))
- (setq px1 (list tx1 ty1))
- (setq px2 (list tx2 ty1))
- (setq px3 (list tx2 ty2))
- (setq px4 (list tx1 ty2))
- ;创建点表;以上运行都没出错,可以得到监视的px1-px4的值,但是下一步创建pt_list
- ;点表时,监视得到的pt_list的值为((px1 px2 px3 px4)),通过进一步选择可以看到
- ;px1的值,但是无法创建选择级,提示点参数错误
- (setq pt_list list(px1 px2 px3 px4))
- ;根据点表创建选择集
- (setq tuhao (ssget "WP" pt_list))
-
- (setq i(1+ i))
- )
-
-
- )
|