 - (defun c:tt (/ BASEPT BBOX ENT MAXPT MINPT PT1 PT2 PTLST SEG TMPENT X)
- (vl-load-com)
- (while (and (setq ent (entsel "\n选择四边形:"))
- (setq basept (osnap (cadr ent) "_nea"))
- (setq ent (car ent)))
- (setq ptlst (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget ent)))
- (setq ptlst (mapcar '(lambda (x) (append (cdr x) (list 0.)))
- (append ptlst (list (car ptlst)))))
- (setq seg (fix (vlax-curve-getparamatpoint ent basept)))
- (setq pt1 (nth seg ptlst))
- (setq pt2 (nth (1+ seg) ptlst))
- (setq tmpent (vlax-invoke-method (vlax-ename->vla-object ent) 'copy))
- (vlax-invoke-method tmpent 'Rotate (vlax-3d-point pt1) (* -1 (angle pt1 pt2)))
- (vlax-invoke-method tmpent 'GetBoundingBox 'minpt 'maxpt)
- (setq minpt (vlax-safearray->list minpt)
- maxpt (vlax-safearray->list maxpt))
- (command "_rectang" "_non" minpt "_non" maxpt)
- (setq bbox (entlast))
- (vlax-invoke-method
- (vlax-ename->vla-object bbox)
- 'Rotate
- (vlax-3d-point pt1)
- (angle pt1 pt2)
- )
- (vla-erase tmpent)
- )
- (princ)
- )
|