明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1014|回复: 7

[提问] 修改外围框单边各加10mm

[复制链接]
发表于 2023-5-8 22:45:09 | 显示全部楼层 |阅读模式
我在百度里搜出朱老师写的一个最大外围框的lisp程式.看得不太懂.想改成,最大外围的四边再单边各加10mm,有没有大佬帮忙改一下怎么改?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-5-9 00:04:17 | 显示全部楼层



offset 偏移量设为 10 即可


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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))
 楼主| 发表于 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

  1. ;;最大外围框
  2. (defun c:tes (/ &kw ent s1905271 ss1 sx x1 x1903211 x2 y1 y2)
  3.   (vl-load-com)
  4.   ;长度为整数
  5.   (defun s1905271 (i1 i2 / i i1 i2 i3 i4)
  6.     (setq i3 (* 0.5 (+ i2 i1)) i4 (- i2 i1) i (atof (rtos i4 2 0)))
  7.     (if (> i4 i) (setq i (+ i 1)) )
  8.     (setq i (* 0.5 i))
  9.     (list (- i3 i) (+ i3 i))
  10.   )
  11.   (defun x1903211 (obj / obj x y)
  12.     (vla-getboundingbox obj 'x 'y)
  13.     (mapcar 'vlax-safearray->list (list x y));点表
  14.   )
  15.   (princ "\n请选择对象")
  16.   (if (setq &kw (ssget))
  17.     (progn
  18.       (setq ss1 '())
  19.       (while (setq ent (ssname &kw 0))
  20.         (setq &kw (ssdel ent &kw) ss1 (cons ent ss1))
  21.       );while
  22.       (setq ss1 (mapcar 'vlax-ename->vla-object ss1))
  23.       (setq ss1 (apply 'append (mapcar 'x1903211 ss1)))
  24.       (setq sx (vl-sort (mapcar 'car ss1) '<))
  25.       (setq x1 (car sx) x2 (last sx))
  26.       (setq sx (s1905271 x1 x2) x1 (car sx) x2 (cadr sx))
  27.       (setq sx (vl-sort (mapcar 'cadr ss1) '<))
  28.       (setq y1 (car sx) y2 (last sx))
  29.       (setq sx (s1905271 y1 y2) y1 (car sx) y2 (cadr sx))
  30.       (setq x1 (- x1 10) x2 (+ x2 10) y1 (- y1 10) y2 (+ y2 10))
  31.       (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))))
  32.     )
  33.   )
  34.   (princ)
  35. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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应该是减
 楼主| 发表于 2023-5-9 18:08:42 来自手机 | 显示全部楼层
谢谢楼上的各位大佬,现在可以了
发表于 2023-5-11 21:56:05 | 显示全部楼层
(setq x1 (- x1 10) x2 (+ x2 10) y1 (- y1 10) y2 (+ y2 10))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 10:40 , Processed in 0.181026 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表