- UID
- 798698
- 积分
- 37
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2020-4-14
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2021-8-11 13:41:05
|
显示全部楼层
直接抓取矩形最大外形操作
(defun c:te ( / &kw ent ss1 sx x1 x2 y1 y2 L0 W0 L W L1 W1 tet PT0 PT1 PT2 PT3 PT4 PT14 PT34 BK BH x10 y10 x11 y11 x22 y12 x23 y23 x14 y24 )
(vl-load-com)
(princ "\n请选择对象")
(if (setq &kw (ssget))
(progn
(princ " 14mm-10 25mm-10 30mm-15 ")
(princ " 40mm-15 80mm-20 120mm-20")
(setq BH (getreal "\n输入板厚:"))
(setq BK (getreal "\n输入留边量:"))
(setq ss1 '())
(while (setq ent (ssname &kw 0))
(setq &kw (ssdel ent &kw) ss1 (cons ent ss1))
);while
(setq ss1 (mapcar 'vlax-ename->vla-object ss1))
(setq ss1 (apply 'append (mapcar 'x1903211 ss1)))
(setq sx (vl-sort (mapcar 'car ss1) '<))
(setq x1 (car sx) x2 (last sx))
(setq sx (s1905271 x1 x2) x1 (car sx) x2 (cadr sx))
(setq sx (vl-sort (mapcar 'cadr ss1) '<))
(setq y1 (car sx) y2 (last sx))
(setq sx (s1905271 y1 y2) y1 (car sx) y2 (cadr sx))
(entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) '(38 . 0) (cons 10 (list (- x1 BK) (- y1 BK))) (cons 10 (list (+ x2 BK) (- y1 BK))) (cons 10 (list (+ x2 BK) (+ y2 BK))) (cons 10 (list (- x1 BK) (+ y2 BK)))))
(setq L0 (- (+ x2 BK) (- x1 BK)))
(setq W0 (- (+ y2 BK) (- y1 BK)))
(setq L (+ 0.25 (/ L0 10)))
(setq W (+ 0.25 (/ W0 10)))
(setq L (rtos L 2 0))
(setq W (rtos W 2 0))
(setq L (atof L))
(setq W (atof W))
(setq L1 (* L 10))
(setq W1 (* W 10))
(setq L1 (rtos L1 2 0))
(setq W1 (rtos W1 2 0))
(setq tet (strcat (RTOS BH 2 0) "*" W1 "*" L1))
(setq x10 (rtos (+ x1 (+ 1000 BK))))
(setq y10 (rtos (- y1 (+ 1000 BK))))
(setq PT0 (strcat x10 "," y10))
(command "_text" "J" "ML" PT0 "175" "0" tet)
(setq x11 (rtos (- x1 (+ 0 BK))))
(setq y11 (rtos (- y1 (+ 0 BK))))
(setq x22 (rtos (+ x2 (+ 0 BK))))
(setq y12 (rtos (- y1 (+ 0 BK))))
(setq x23 (rtos (+ x2 (+ 0 BK))))
(setq y23 (rtos (+ y2 (+ 0 BK))))
(setq x14 (rtos (- x1 (+ 0 BK))))
(setq y24 (rtos (+ y2 (+ 0 BK))))
(setq PT1 (strcat x11 "," y11))
(setq PT3 (strcat x23 "," y23))
(setq PT4 (strcat x14 "," y24))
(setq PT14 (strcat (rtos (- (atof x11) 200)) "," (rtos (atof y11))))
(setq PT34 (strcat (rtos (atof x23)) "," (rtos (+ (atof y23) 200))))
(command "DIMLINEAR" PT1 PT4 PT14 )
(command "DIMLINEAR" PT3 PT4 PT34 )
(princ)
)
)
(princ)
)
;长度为小数点后0位
(defun s1905271 (i1 i2 / i i1 i2 i3 i4)
(setq i3 (* 0.5 (+ i2 i1)) i4 (- i2 i1) i (atof (rtos i4 2 0)))
(if (> i4 i) (setq i (+ i 1)) )
(setq i (* 0.5 i))
(list (- i3 i) (+ i3 i))
)
(defun x1903211 (obj / obj x y)
(vla-getboundingbox obj 'x 'y)
(mapcar 'vlax-safearray->list (list x y));点表
) |
|