hnzkhyyl 发表于 2023-5-8 22:45:09

修改外围框单边各加10mm

我在百度里搜出朱老师写的一个最大外围框的lisp程式.看得不太懂.想改成,最大外围的四边再单边各加10mm,有没有大佬帮忙改一下怎么改?

vitalgg 发表于 2023-5-9 00:04:17




offset 偏移量设为 10 即可


yshf 发表于 2023-5-9 07:06:53

只需要在
(setq sx (s1905271 y1 y2) y1 (car sx) y2 (cadr sx))
后加一行,即可
(setq x1 (+ x1 10) x2 (+ x2 10) y1 (+ y1 10) y2 (+ y2 10))

hnzkhyyl 发表于 2023-5-9 07:12:14

getbox,选择的东西一多,程序运行就很慢。朱老师写的这个会相对快一些。不知道从哪里修改能单边加大10mm

飞雪神光 发表于 2023-5-9 07:36:04

本帖最后由 飞雪神光 于 2023-5-9 07:37 编辑

hnzkhyyl 发表于 2023-5-9 07:12
getbox,选择的东西一多,程序运行就很慢。朱老师写的这个会相对快一些。不知道从哪里修改能单边加大10mm
;;最大外围框
(defun c:tes (/ &kw ent s1905271 ss1 sx x1 x1903211 x2 y1 y2)
(vl-load-com)
;长度为整数
(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));点表
)
(princ "\n请选择对象")
(if (setq &kw (ssget))
    (progn
      (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))
      (setq x1 (- x1 10) x2 (+ x2 10) y1 (- y1 10) y2 (+ y2 10))
      (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) '(38 . 0) (cons 10 (list x1 y1)) (cons 10 (list x2 y1)) (cons 10 (list x2 y2)) (cons 10 (list x1 y2))))
    )
)
(princ)
)

kucha007 发表于 2023-5-9 10:38:29

yshf 发表于 2023-5-9 07:06
只需要在
(setq sx (s1905271 y1 y2) y1 (car sx) y2 (cadr sx))
后加一行,即可


y是加,x应该是减

hnzkhyyl 发表于 2023-5-9 18:08:42

谢谢楼上的各位大佬,现在可以了

linzenghuo 发表于 2023-5-11 21:56:05

(setq x1 (- x1 10) x2 (+ x2 10) y1 (- y1 10) y2 (+ y2 10))
页: [1]
查看完整版本: 修改外围框单边各加10mm