明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: sunny_8848

[提问] 直线转换为矩形框

[复制链接]
 楼主| 发表于 2022-11-26 13:56 | 显示全部楼层
xyp1964 发表于 2022-11-26 13:49
;; 神经元选择,代码需要e派工具箱的支持

谢谢帮忙,可是没有安装您这个工具箱
回复

使用道具 举报

发表于 2022-11-26 15:22 | 显示全部楼层
本帖最后由 cq4920 于 2022-11-26 15:27 编辑
sunny_8848 发表于 2022-11-26 13:56
谢谢帮忙,可是没有安装您这个工具箱

搜索:分堆
不用考虑他原始的样子,直接给她们各自重新套框,图层为图框,打印不可见色,就解决了

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
sunny_8848 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-11-26 16:09 | 显示全部楼层
cq4920 发表于 2022-11-26 15:22
搜索:分堆
不用考虑他原始的样子,直接给她们各自重新套框,图层为图框,打印不可见色,就解决了

分堆的方法效率很高,目前在上传的图纸中暂时发现多出一根线条
回复

使用道具 举报

 楼主| 发表于 2022-11-26 16:37 | 显示全部楼层
本帖最后由 sunny_8848 于 2022-11-26 16:39 编辑


;下面分堆的代码效率很高,限制也少。可惜矩形不是在图框层
(defun c:tt (/ wkjl ss lst obj maxp minp flst nlst maxpx maxpy pt )
  (IF (NULL *wkjl) (setq *wkjl 30.0))
   (setq wkjl (GETREAL (strcat "\n外扩距离<" (rtos *wkjl 2 2) ">:")))
   (if (NULL wkjl) (setq wkjl *wkjl) (setq *wkjl wkjl))
  
  (setq ss (ssget))
  (setq  lst
   (mapcar '(lambda (x)
        (setq obj (vlax-ename->vla-object x))
        (vla-getboundingbox obj 'minp 'maxp)
        (setq
          maxp (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
        )
        (setq
          minp (mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
        )
        (list x (car minp) (car maxp) (cadr minp) (cadr maxp))
      )
     (vl-remove-if-not
       '(lambda (x) (= 'ENAME (type x)))
       (apply 'append (ssnamex ss))
     )
   )
  )
  (setq  flst (lambda (lst key)
         (if lst
     (if key
       (progn
         (setq nlst   (list (list (caar lst)
               (cadddr (car lst))
               (last (car lst))
         ))
         maxpx (caddar lst)
         lst   (cdr lst)
         )
         (while (and lst (<= (cadar lst) maxpx))
           (setq nlst  (cons (list (caar lst)
                 (cadddr (car lst))
                 (last (car lst))
           )
           nlst
           )
           maxpx (max maxpx (caddar lst))
           lst   (cdr lst)
           )
         )
         (cons nlst (flst lst key))
       )
       (progn
         (setq nlst   (list (caar lst))
         maxpy (caddar lst)
         lst   (cdr lst)
         )
         (while (and lst (<= (cadar lst) maxpy))
           (setq nlst  (cons (caar lst) nlst)
           maxpy (max maxpy (caddar lst))
           lst   (cdr lst)
           )
         )
         (cons nlst (flst lst key))
       )
     )
         )
       )
  )
  (setq
    lst
     (apply
       'append
       (mapcar
   '(lambda (wlst)
      (flst (vl-sort wlst '(lambda (a b) (< (cadr a) (cadr b))))
      nil
      )
    )
   (flst (vl-sort lst '(lambda (a b) (< (cadr a) (cadr b)))) t)
       )
     )
  )
  (mapcar
    '(lambda (x)
       (setq pt (apply
   'append
   (mapcar
     '(lambda (ent)
        (vla-getboundingbox (vlax-ename->vla-object ent) 'minp 'maxp)
        (list (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
          (mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
        )
      )
     x
   )
       ))
       (setq minp (mapcar '- (apply 'mapcar (cons 'min pt)) (list wkjl wkjl)))
       (setq maxp (mapcar '+ (apply 'mapcar (cons 'max pt)) (list wkjl wkjl)))
       (entmake  (list '(0 . "LWPOLYLINE")
          '(100 . "AcDbEntity")
          '(100 . "AcDbPolyline")
          '(90 . 4)
          '(70 . 1)
          '(62 . 1)
          (cons 10 minp)
          (cons 10 (list (car minp) (cadr maxp)))
          (cons 10 maxp)
          (cons 10 (list (car maxp) (cadr minp)))
    )
       )
     )
    lst
  )
  (princ)
)
回复

使用道具 举报

发表于 2022-11-27 14:58 | 显示全部楼层
本帖最后由 lee50310 于 2022-11-28 08:29 编辑
sunny_8848 发表于 2022-11-26 16:37
;下面分堆的代码效率很高,限制也少。可惜矩形不是在图框层
(defun c:tt (/ wkjl ss lst obj maxp minp  ...

如果不考慮程式完成後須  1. 刪除原本外框的舊線段
                                     2. 刪除分堆程式所產生面積為零的重疊線段
只需修改程式1處及新增幾段程式便可很快完成

回复

使用道具 举报

 楼主| 发表于 2022-11-27 15:02 | 显示全部楼层
谢谢。您给的最后一个文件已经很方便了
回复

使用道具 举报

发表于 2022-11-27 15:05 | 显示全部楼层
本帖最后由 lee50310 于 2022-11-28 08:30 编辑


若要考慮 上述2點
那就需多花些時間來排除


回复

使用道具 举报

发表于 2022-11-27 15:06 | 显示全部楼层
本帖最后由 lee50310 于 2022-11-27 15:08 编辑

了解! 收到...

回复

使用道具 举报

发表于 2022-11-29 16:28 | 显示全部楼层
lee50310 发表于 2022-11-26 08:39
將外圍線替換為矩形框  程式 tt5
執行指令:tt5

很好用,谢谢lee分享。

如果可以批量闭合更好
回复

使用道具 举报

发表于 2022-11-29 20:01 | 显示全部楼层
lxl217114 发表于 2022-11-29 16:28
很好用,谢谢lee分享。

如果可以批量闭合更好

批量 將外圍線替換為矩形框
程式已寫好放置 5樓
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 12:07 , Processed in 0.287305 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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