明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: kucha007

【BB】快速建块_v1.6/最小外接矩形/选择集中心

  [复制链接]
 楼主| 发表于 2022-11-19 19:44:40 | 显示全部楼层
酷酷提 发表于 2022-11-19 16:33
【【BB】快速建块,并移至0图层.lsp】
是我用过最符合批量建块操作逻辑的插件了
只是感觉命名规则有点乱 ...

块名主要是考虑两个因素:
01-批量建块的时候块名是啥不重要了,只要块名唯一就行了,这也是为了避免跨文件建块产生同名块。使用日期只是因为这个容易得到,而且够唯一,如果这样都有重名块,就加序号后缀。
02-名字不想太长,CAD的对话框也看不全...所以把部分时间变为字母,模拟CAD建匿名块的方式。
发表于 2023-1-2 00:13:50 | 显示全部楼层
  • (defun K:GetCenter (ss / i obj llp urp ls1 ls2)
  •     (repeat (setq i (sslength ss))
  •         (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
  •         (if (and (vlax-method-applicable-p obj 'getboundingbox)
  •                  (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp))))
  •             )
  •             (setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
  •                   ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
  •             )
  •         )
  •     );获取对象最大矩形边界框左下角和右上角的WCS坐标

   
   你好,如果代码只看到这里,这段代码输出的是啥呢?两个点吗?我想生成一个外框矩形,该如何写呢?
   我用(command "RECTANG" ls1 ls2) 生成不出一个矩形。

 楼主| 发表于 2023-1-4 09:33:55 | 显示全部楼层
aws 发表于 2023-1-2 00:13
  • (defun K:GetCenter (ss / i obj llp urp ls1 ls2)
  •     (repeat (setq i (sslength ss))

  • 斜杆后面的变量被清掉了,你在外面调用当然不行了
    发表于 2023-1-4 09:57:43 | 显示全部楼层
    kucha007 发表于 2023-1-4 09:33
    斜杆后面的变量被清掉了,你在外面调用当然不行了

    你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知道哪里出了问题
     楼主| 发表于 2023-1-4 11:13:08 | 显示全部楼层
    aws 发表于 2023-1-4 09:57
    你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知 ...


    把斜杆后面的lst1和lst2删掉不就行了?
    1. (defun K:GetCenter (ss / i obj llp urp)
    2.     (repeat (setq i (sslength ss))
    3.         (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
    4.         (if (and (vlax-method-applicable-p obj 'getboundingbox)
    5.                 (not (vl-catch-all-error-p
    6.                         (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp)))
    7.                 )
    8.             )
    9.             (setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
    10.                   ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
    11.             )
    12.         )
    13.     );获取对象最大矩形边界框左下角和右上角的WCS坐标
    14. )


    发表于 2023-1-4 11:39:31 | 显示全部楼层
    kucha007 发表于 2023-1-4 11:13
    把斜杆后面的lst1和lst2删掉不就行了?

    天哪,原来是这样,我一直以为那个括号里面的参数,变量,只是起到一个注释的作用。没想到,它在实际影响代码。我全删了,之后就正常了

    • (defun c:ff ()
    •   (setq ss(ssget))
    •   (repeat (setq n (sslength ss))
    •     (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
    •     (if (and (vlax-method-applicable-p obj 'getboundingbox)
    •           (not (vl-catch-all-error-p
    •                  (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp)))
    •           )
    •         )
    •       (setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
    •         ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
    •       )
    •     )
    •   );获取对象最大矩形边界框左下角和右上角的WCS坐标
    •   (command "RECTANG" ls1 ls2)
    •   (princ)
    • )

     楼主| 发表于 2023-1-4 11:47:02 | 显示全部楼层
    本帖最后由 kucha007 于 2023-1-4 11:49 编辑
    aws 发表于 2023-1-4 09:57
    你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知 ...

    嗯嗯,是的。斜杆后面的变量执行后会清掉
    发表于 2023-2-8 20:57:16 | 显示全部楼层
    能在块里面快速建块吗?
     楼主| 发表于 2023-2-9 00:11:36 | 显示全部楼层
    LUX1125 发表于 2023-2-8 20:57
    能在块里面快速建块吗?

    块编辑器里面不能用block命令建块。建议你用粘贴为块
    回复 支持 0 反对 1

    使用道具 举报

    发表于 2023-4-13 21:16:18 | 显示全部楼层
    选择集中心是有什么限制吗?刚开始用好好地,后来不知道怎么回事,位置不对了。然后又换了个别的选择集中心的函数,正常了。。

    本帖子中包含更多资源

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

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

    本版积分规则

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

    GMT+8, 2024-11-11 02:29 , Processed in 0.176580 second(s), 17 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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