明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 787116960

[讨论] 大佬帮我修改下程序

[复制链接]
发表于 2023-7-27 20:58 | 显示全部楼层
本帖最后由 小鸟 于 2023-7-27 21:35 编辑
  1. ;论坛下载的程序 功能是生成图元的外框  需要增加功能 让用户自己输入增加矩形偏移量  加大或者缩小生成的框大小  
  2. ;能不能帮我修改下  新建一个矩形框图层  把生成的矩形框放到新建的图层中去  谢谢大佬
  3. ;;;;功能:最大矩形外框
  4. ;;;逆流而上的鱼制作
  5. (defun c:多个矩形框 (/ ent  p1 p2  obj k ss)
  6.   (vl-load-com)
  7.   (setvar "OSMODE" 0)
  8.   (setq ii (getdist "\n输入边框距离:"))
  9.   (if (setq ss (ssget))
  10.     (repeat (setq k (sslength ss))
  11.       (setq ent (ssname ss (setq k (1- k))))
  12.       (setq obj (vlax-ename->vla-object ent))
  13.       (vla-getboundingbox obj 'p1 'p2)
  14.       (setq p1 (vlax-safearray->list p1)
  15.       p2 (vlax-safearray->list p2)
  16.       )
  17.       (setq p1 (list (-(car p1) ii)(-(cadr p1) ii))
  18.       p2 (list (+(car p2) ii)(+(cadr p2) ii))
  19.       )
  20.       (vl-cmdf "rectang" p1 p2)
  21.                 (if (= (tblsearch "layer" "矩形框图层") nil)
  22.         (command "layer" "m" "矩形框图层" "c" "1" "" "")
  23.       )
  24.      (command "_chprop" "l" "" "la" "矩形框图层" "");改图层
  25.     )
  26.   
  27. )
  28.   (princ)
  29. )

发表于 2023-7-27 21:43 | 显示全部楼层



  1. (defun c:tt ()
  2.   "最大矩形外框"
  3.   (or dd (setq dd 100))
  4.   (setq dd (Udist 7 "" "偏移距离<输入或鼠标直接量取>" dd nil))
  5.   (if (setq ss (ssget))
  6.     (progn
  7.       (xyp-MkLaCo "1" 1)
  8.       (setq i -1)
  9.       (while (setq s1 (ssname ss (setq i (1+ i))))
  10.         (setq s1 (xyp-Rectang (xyp-9pt s1 1) (xyp-9pt s1 9))
  11.               s1 (xyp-Offset s1 dd t nil t)
  12.         )
  13.       )
  14.     )
  15.   )
  16.   (princ)
  17. )


本帖子中包含更多资源

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

x
发表于 2023-7-28 09:13 | 显示全部楼层
八仙过海呀。。。。
发表于 2023-7-28 11:00 来自手机 | 显示全部楼层
jun353835273 发表于 2023-7-27 18:49

大神的程序挺好用,能把画的矩形边长取整吗?四舍五入保证,如7.5,8,8.5……
发表于 2023-7-28 12:46 | 显示全部楼层
paulpipi 发表于 2023-7-28 11:00
大神的程序挺好用,能把画的矩形边长取整吗?四舍五入保证,如7.5,8,8.5……

(atoi (rtos 8.4 2 0))  =8
函数 你自己搞上去试一试
发表于 2023-7-28 14:06 来自手机 | 显示全部楼层
jun353835273 发表于 2023-7-28 12:46
(atoi (rtos 8.4 2 0))  =8
函数 你自己搞上去试一试

谢谢大神回复,是可以取整,但矩形偏位不在正中,而且没有保留一位小数,麻烦指导一下,看怎么修改,感谢!
发表于 2023-7-28 15:20 | 显示全部楼层
paulpipi 发表于 2023-7-28 14:06
谢谢大神回复,是可以取整,但矩形偏位不在正中,而且没有保留一位小数,麻烦指导一下,看怎么修改,感谢 ...

取整了怎么保留一位小数,还是只保留1位小数。
发表于 2023-7-28 16:37 来自手机 | 显示全部楼层
jun353835273 发表于 2023-7-28 15:20
取整了怎么保留一位小数,还是只保留1位小数。

就是0.5,1,1.5,2,2.5,3,3.5……就是小数点后面不是0.5就取0.5,如果超过0.5就取整,可能我表达的不清楚,不好意思
发表于 2023-7-28 22:13 | 显示全部楼层
paulpipi 发表于 2023-7-28 16:37
就是0.5,1,1.5,2,2.5,3,3.5……就是小数点后面不是0.5就取0.5,如果超过0.5就取整,可能我表达的不清楚, ...
  1. ;;;;功能:最大矩形外框
  2. ;;20230728半途中修改
  3. (defun c:att ( / ent p1 p2 obj k ss p11  p22 dis)
  4. (vl-load-com)
  5. (setvar "OSMODE" 0)
  6. (setq dis (getdist "\n输入边框距离:"))
  7. (if (and dis
  8.          (setq dis (fixdata dis))
  9.    (setq ss (ssget )))
  10. (repeat (setq k (sslength ss))
  11. (setq ent (ssname ss (setq k (1- k))))
  12. (setq obj (vlax-ename->vla-object ent))
  13. (vla-getboundingbox obj 'p1 'p2)
  14. (setq p1 (vlax-safearray->list p1)
  15.      p2 (vlax-safearray->list p2)
  16. )
  17.   
  18. (setq p11 (mapcar '(lambda(x)  (- x dis) )p1)  )
  19. (setq p22 (mapcar '(lambda(x)  (+ x dis) )p2)  )
  20. (Make-Rectange  p11 p22)
  21. )
  22.   
  23. )
  24. (princ)
  25. )
  26. ;;;;20230728半途中修改
  27. ;;数据处理
  28. (defun fixdata(in / out)
  29. (setq out (atof (rtos in 2 0 ) ))
  30. (if (> in  out)
  31. (setq out (+ (fix in) 0.5))
  32.   )
  33. out
  34. )
  35. (defun Make-Rectange (pt1 pt2)
  36.   (entmake
  37.     (list
  38.       '(0 . "LWPOLYLINE")                                         
  39.       '(100 . "AcDbEntity")                              
  40.       '(100 . "AcDbPolyline")
  41.       '(90 . 4)                                                  
  42.       '(70 . 1)                                                   
  43.       (cons 8 "new-rectang")
  44.       (cons 62 1)                          
  45.       (cons 10 (list (car pt1) (cadr pt1)))                     
  46.       (cons 10 (list (car pt2) (cadr pt1)))                     
  47.       (cons 10 (list (car pt2) (cadr pt2)))                  
  48.       (cons 10 (list (car pt1) (cadr pt2)))                     
  49.       (cons 210 '(0 0 1))                                       
  50.     )
  51.   )
  52. )
  53. 试一试

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 22:57 , Processed in 0.322488 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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