明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1940|回复: 24

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

[复制链接]
发表于 2023-7-27 12:30 | 显示全部楼层 |阅读模式
本帖最后由 787116960 于 2023-7-27 13:46 编辑

论坛下载的程序 功能是生成图元的外框  需要增加功能 让用户自己输入增加矩形偏移量  加大或者缩小生成的框大小  
能不能帮我修改下  新建一个矩形框图层  把生成的矩形框放到新建的图层中去  谢谢大佬
;;;;功能:最大矩形外框
;;;逆流而上的鱼制作
(defun c:多个矩形框 ( / ent p1 p2 obj k ss)
(vl-load-com)
(setvar "OSMODE" 0)
(if (setq ss (ssget ))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq obj (vlax-ename->vla-object ent))
(vla-getboundingbox obj 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
p2 (vlax-safearray->list p2)
)
(vl-cmdf "rectang" p1 p2)
)
)
(princ)
)

发表于 2023-7-30 12:06 | 显示全部楼层
paulpipi 发表于 2023-7-30 11:40
谢谢大神耐心回复,但测试后发现数据没有改变,小数点后面还是多位小数,有空帮忙看一下,感谢!!

调试下 应该不会
回复 支持 1 反对 0

使用道具 举报

发表于 2023-7-27 14:56 | 显示全部楼层
试试这个效果:



本帖子中包含更多资源

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

x
回复 支持 0 反对 1

使用道具 举报

发表于 2023-7-27 12:59 | 显示全部楼层
  1. ;;;;功能:最大矩形外框
  2. ;;;逆流而上的鱼制作
  3. (defun c:多个矩形框 ( / 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 ss (ssget )))
  9. (repeat (setq k (sslength ss))
  10. (setq ent (ssname ss (setq k (1- k))))
  11. (setq obj (vlax-ename->vla-object ent))
  12. (vla-getboundingbox obj 'p1 'p2)
  13. (setq p1 (vlax-safearray->list p1)
  14.      p2 (vlax-safearray->list p2)
  15. )
  16.   
  17. (setq p11 (mapcar '(lambda(x)  (- x dis) )p1)  )
  18. (setq p22 (mapcar '(lambda(x)  (+ x dis) )p2)  )
  19. (vl-cmdf "rectang" p11 p22)
  20. )
  21. )
  22. (princ)
  23. )


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-7-27 13:45 | 显示全部楼层

大佬 能不能帮我修改下  新建一个矩形框图层  把生成的矩形框放到新建的图层中去  谢谢大佬
 楼主| 发表于 2023-7-27 14:59 | 显示全部楼层
ssyfeng 发表于 2023-7-27 14:56
试试这个效果:

老哥  我没有名金币
发表于 2023-7-27 15:04 | 显示全部楼层
给论坛做点贡献,买些就好了,太容易得到的东西都不太珍惜。
发表于 2023-7-27 17:12 | 显示全部楼层
不错,能分堆在画框最好了
发表于 2023-7-27 18:38 | 显示全部楼层
787116960 发表于 2023-7-27 13:45
大佬 能不能帮我修改下  新建一个矩形框图层  把生成的矩形框放到新建的图层中去  谢谢大佬
  1. ;;;;功能:最大矩形外框
  2. ;;;逆流而上的鱼制作
  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 ss (ssget )))
  9. (repeat (setq k (sslength ss))
  10. (setq ent (ssname ss (setq k (1- k))))
  11. (setq obj (vlax-ename->vla-object ent))
  12. (vla-getboundingbox obj 'p1 'p2)
  13. (setq p1 (vlax-safearray->list p1)
  14.      p2 (vlax-safearray->list p2)
  15. )
  16.   
  17. (setq p11 (mapcar '(lambda(x)  (- x dis) )p1)  )
  18. (setq p22 (mapcar '(lambda(x)  (+ x dis) )p2)  )
  19. (Make-Rectange  p11 p22)
  20. )
  21. )
  22. (princ)
  23. )
  24. (defun Make-Rectange (pt1 pt2)
  25.   (entmake
  26.     (list
  27.       '(0 . "LWPOLYLINE")                                         
  28.       '(100 . "AcDbEntity")                              
  29.       '(100 . "AcDbPolyline")
  30.       '(90 . 4)                                                  
  31.       '(70 . 1)                                                   
  32.       (cons 8 "new-rectang")
  33.       (cons 62 1)                          
  34.       (cons 10 (list (car pt1) (cadr pt1)))                     
  35.       (cons 10 (list (car pt2) (cadr pt1)))                     
  36.       (cons 10 (list (car pt2) (cadr pt2)))                  
  37.       (cons 10 (list (car pt1) (cadr pt2)))                     
  38.       (cons 210 '(0 0 1))                                       
  39.     )
  40.   )
  41. )


发表于 2023-7-27 18:45 | 显示全部楼层
787116960 发表于 2023-7-27 14:59
老哥  我没有名金币

  1. (defun c:tt ()
  2.   "最大矩形外框"
  3.   (if (setq ss (ssget))
  4.     (progn
  5.       (setq os (getvar 'osmode)
  6.             la (getvar 'clayer)
  7.       )
  8.       (setq i -1)
  9.       (setvar "OSMODE" 0)
  10.       (command "-layer" "m" "1" "c" "1" "" "")
  11.       (while (setq s1 (ssname ss (setq i (1+ i))))
  12.         (setq ob (vlax-ename->vla-object s1))
  13.         (vla-getboundingbox ob 'p1 'p2)
  14.         (setq p1 (vlax-safearray->list p1)
  15.               p2 (vlax-safearray->list p2)
  16.         )
  17.         (vl-cmdf "rectang" p1 p2)
  18.       )
  19.       (setvar 'osmode os)
  20.       (setvar 'clayer la)
  21.     )
  22.   )
  23.   (princ)
  24. )
发表于 2023-7-27 18:49 | 显示全部楼层
  1. 再来一个,这样也可以的,直接偏移
复制代码
  1. (defun c:att2 ( / doc lay ent p1 p2 obj k ss p11  p22 dis)
  2. (vl-load-com)
  3. (if (not (tblsearch "layer" "new"))
  4. (progn
  5. (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  6. (setq lay (Vla-Add (Vlax-Get doc 'Layers) "new" ))
  7.    )
  8. )
  9. (setvar "OSMODE" 0)
  10. (setq dis (getdist "\n输入边框距离:"))
  11. (if (and dis
  12.    (setq ss (ssget )))
  13. (repeat (setq k (sslength ss))
  14. (setq ent (ssname ss (setq k (1- k))))
  15. (setq obj (vlax-ename->vla-object ent))
  16. (setq obj2 (vla-offset obj (- 0 dis)))
  17. (Vla-Put-Layer (CAR (vlax-safearray->list (vlax-variant-value obj2)))  "new" )
  18. )
  19. )
  20. (princ)
  21. )

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

本版积分规则

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

GMT+8, 2024-4-28 19:16 , Processed in 0.376552 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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