明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 999999

[提问] (求助)批量生成内轮廓

[复制链接]
发表于 2022-11-14 22:25:32 | 显示全部楼层
CAD默认的  边界创建BOUNDARY命令,点就行了
回复

使用道具 举报

 楼主| 发表于 2022-11-14 22:34:30 | 显示全部楼层
KO你 发表于 2022-11-14 22:25
CAD默认的  边界创建BOUNDARY命令,点就行了

我也知道是点,就是像有个插件直接实现,就可以节省时间哇
回复

使用道具 举报

发表于 2022-11-15 12:36:31 | 显示全部楼层
999999 发表于 2022-11-14 22:34
我也知道是点,就是像有个插件直接实现,就可以节省时间哇

可以按面积大小控制所要的区域,代码已经上传
回复

使用道具 举报

 楼主| 发表于 2022-11-15 12:49:33 | 显示全部楼层
xyp1964 发表于 2022-11-15 12:36
可以按面积大小控制所要的区域,代码已经上传

好的哦,谢谢院长大人
回复

使用道具 举报

发表于 2022-11-15 16:44:24 | 显示全部楼层
仅针对此例
  1. (defun xty-get-dxf (code en) (cdr (assoc code (entget en))))
  2. (defun xty-get-plptlist  (en fuzz /)
  3.   (xty-L-delsames
  4.     (mapcar 'cdr
  5.       (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget en))
  6.     )
  7.     fuzz
  8.   )
  9. )
  10. (defun xty-get-intpts (ss fuzz / lst obj boj1 ptlst pts)
  11.   (setq lst (xty-tr-ss2lst ss nil))
  12.   (while lst
  13.     (setq obj (car lst)
  14.     lst (cdr lst)
  15.     )
  16.     (foreach obj1 lst
  17.       (setq ptlst (if (setq pts  (xty-tr-value2list
  18.           (vlax-invoke-method
  19.             obj
  20.             'intersectwith
  21.             obj1
  22.             acextendnone
  23.           )
  24.         )
  25.           )
  26.         (cons (xty-L-cai pts 3) ptlst)
  27.         ptlst
  28.       )
  29.       )
  30.     )
  31.   )
  32.   (if ptlst
  33.     (xty-L-delsames (apply 'append ptlst) fuzz)
  34.   )
  35. )
  36. (defun xty-tr-value2list (value)
  37.   (setq  value (vl-catch-all-apply
  38.     (function vlax-safearray->list)
  39.     (list (vlax-variant-value value))
  40.         )
  41.   )
  42.   (if (= (type value) (function LIST))
  43.     value
  44.     nil
  45.   )
  46. )
  47. (defun xty-tr-ss2lst (ss form / n en lst)
  48.   (repeat (setq n (sslength ss))
  49.     (setq en (ssname ss (setq n (1- n))))
  50.     (setq lst (cons en lst))
  51.   )
  52.   (setq lst(reverse lst))
  53.   (if form lst (mapcar(function vlax-ename->vla-object)lst))
  54. )
  55. (defun xty-L-delsames  (lst fuzz / start new)
  56.   (while (setq start (car lst))
  57.     (if  (vl-some '(lambda (x) (equal start x fuzz)) new)
  58.       nil
  59.       (setq new (cons start new))
  60.       )
  61.     (setq lst (cdr lst))
  62.     )
  63.   (setq new (reverse new))
  64.   new
  65.   )
  66. (defun xty-L-cai  (lst n / a lst1 lst2)
  67.   (setq a (length lst))
  68.   (if (/= 0 (setq a (rem a n)))
  69.     (repeat a (setq lst (append lst (list nil)))))
  70.   (while lst
  71.     (repeat n
  72.       (setq lst1 (cons (car lst) lst1)
  73.       lst   (cdr lst)
  74.       )
  75.       )
  76.     (setq lst2 (cons (reverse lst1) lst2)
  77.     lst1 nil
  78.     )
  79.     )
  80.   (reverse lst2)
  81.   )
  82. (defun c:tt (/ dis en lst md old ss)
  83.   (setq md 20) ;_根据实际需要,最大边框宽
  84.   (setq  old (getvar 'clayer)
  85.   ss  (ssget '((0 . "*line")))
  86.   lst (vl-remove-if-not
  87.         '(lambda (x) (= "LWPOLYLINE" (xty-get-dxf 0 x)))
  88.         (xty-tr-ss2lst ss t)
  89.       )
  90.   lst (apply 'append
  91.        (mapcar '(lambda (x) (xty-get-plptlist x 1e-6)) lst)
  92.       )
  93.   lst (xty-L-delsames (append lst (xty-get-intpts ss 1e-6)) 1e-6)
  94.   )
  95.   (setvar 'clayer "YB2")
  96.   (foreach n lst
  97.     (if  (setq en (bpoly  (mapcar '+ n (list (* 0.5 md) (* 0.5 md)))
  98.       ss
  99.       '(0 0 0)
  100.      )
  101.   )
  102.       (progn (setq dis (xty-get-plptlist en 1e-6)
  103.        dis (mapcar '(lambda (x y) (distance x y)) dis (cdr dis))
  104.        dis (vl-sort dis '<)
  105.        dis (car dis)
  106.        )
  107.        (if (or (> md dis) (equal md dis 1e-6))
  108.          (entdel en)
  109.        )
  110.       )
  111.     )
  112.   )
  113.   (setvar 'clayer old)
  114. )

回复

使用道具 举报

 楼主| 发表于 2022-11-15 17:46:28 | 显示全部楼层

大神您好,非常谢谢大神的参与,我感觉可以先全部面域一遍,然后再筛选最短边的多边线进行删除,最终得到的就是想要的

本帖子中包含更多资源

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

x

点评

我的代码执行不了?不就是这个思路  发表于 2022-11-16 08:06
回复

使用道具 举报

 楼主| 发表于 2022-11-16 11:55:46 | 显示全部楼层
999999 发表于 2022-11-15 17:46
大神您好,非常谢谢大神的参与,我感觉可以先全部面域一遍,然后再筛选最短边的多边线进行删除,最终得到 ...

大神您好,我复制的代码是这样的,运行出现这种情况呢

本帖子中包含更多资源

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

x

点评

ANSI  发表于 2022-11-16 19:32
文件保存编码不对 用记事本保存UTF-8  发表于 2022-11-16 19:16
回复

使用道具 举报

 楼主| 发表于 2022-11-16 11:57:11 | 显示全部楼层
999999 发表于 2022-11-15 17:46
大神您好,非常谢谢大神的参与,我感觉可以先全部面域一遍,然后再筛选最短边的多边线进行删除,最终得到 ...

大神您好,您看一下底下我复制您的代码发出的附件
回复

使用道具 举报

 楼主| 发表于 2022-11-17 11:41:09 | 显示全部楼层
999999 发表于 2022-11-16 11:55
大神您好,我复制的代码是这样的,运行出现这种情况呢

我试了几次没有反应呢
回复

使用道具 举报

发表于 2022-11-18 08:44:01 | 显示全部楼层
999999 发表于 2022-11-17 11:41
我试了几次没有反应呢

你没复制对吧,我也是复制的网页代码,没问题啊


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 02:42 , Processed in 0.183081 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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