马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 /db_自贡黄明儒_ 于 2013-11-18 16:17 编辑
- ;;是平行四边形时画中心线,其它封闭曲线在质心处画十字线
- (defun HH:CenMark (en / CEN LL LST OBJ OBJN P1 P2 PX1 PX2 PY1 PY2 R UR X Y)
- ;;133.2 [功能] 缩放一个点
- ;;scale 'pnt' from a base point of 'p1' by a factor of fact
- (defun scale_pnt (pnt p1 fact /)
- (polar p1 (angle p1 pnt) (* fact (distance p1 pnt)))
- )
- (if (and
- (setq lst (entget en))
- (setq lst (mapcar 'cdr
- (vl-remove-if-not '(lambda (x) (= (car x) 10)) lst)
- )
- )
- (equal (length lst) 4)
- (not (inters (car lst) (cadr lst) (caddr lst) (cadddr lst) nil))
- (not (inters (cadr lst) (caddr lst) (cadddr lst) (car lst) nil))
- )
- (progn
- (setq cen (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) (car lst) (caddr lst)))
- (setq p1 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) (car lst) (cadddr lst)))
- (setq p1 (scale_pnt p1 cen 1.25))
- (setq p2 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) (cadr lst) (caddr lst)))
- (setq p2 (scale_pnt p2 cen 1.25))
- (entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
- (setq p1 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) (car lst) (cadr lst)))
- (setq p1 (scale_pnt p1 cen 1.25))
- (setq p2 (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) (caddr lst) (cadddr lst)))
- (setq p2 (scale_pnt p2 cen 1.25))
- (entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
- )
- (progn
- (setq obj (vlax-ename->vla-object en))
- ;;(setq objN (vla-copy obj))
- (or *DOC*
- (setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))
- )
- (setq *MSP* (vla-get-Modelspace *DOC*))
- (vlax-invoke *MSP* 'addregion (list obj))
- (setq objN (vlax-ename->vla-object (entlast)))
- (setq cen (vlax-safearray->list (vlax-variant-value (vla-get-Centroid objN))))
- (vla-getboundingbox objN 'll 'ur)
- (setq lst (mapcar 'vlax-safearray->list (list ll ur)))
- (vla-delete objN)
- (setq r (/ (distance (car lst) (cadr lst)) 2.0))
- (setq px1 (mapcar '- cen (list r 0 0)))
- (setq px2 (mapcar '+ cen (list r 0 0)))
- (entmake (list (cons 0 "LINE") (cons 10 px1) (cons 11 px2)))
- (setq py1 (mapcar '- cen (list 0 r 0)))
- (setq py2 (mapcar '+ cen (list 0 r 0)))
- (entmake (list (cons 0 "LINE") (cons 10 py1) (cons 11 py2)))
- )
- )
- )
- (defun C:W4 (/ EN)
- (setq en (car (entsel)))
- (HH:CenMark en)
- (princ)
- )
|