明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1641|回复: 9

[提问] 求凡相交或相连的SOLID图元合并

[复制链接]
发表于 2014-4-20 16:53 | 显示全部楼层 |阅读模式
50明经币
求凡相交或相连的SOLID图元合并成一个SOLID图元
发表于 2014-4-20 16:53 | 显示全部楼层
本帖最后由 q3_2006 于 2014-4-21 14:59 编辑
  1. (vl-load-com)
  2. (vl-load-com)
  3. (setq *doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  4. (setq *ms (vla-get-ModelSpace *doc))
  5. (defun ss2vlst (ss / i l)
  6.   (if ss
  7.     (repeat (setq i (sslength ss))
  8.       (setq l (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) l))
  9.     )
  10.   )
  11. )
  12. (defun lst2objarray (objList / arraySpace sArray)
  13.   (setq arraySpace (vlax-make-safearray vlax-vbObject (cons 0 (1- (length objList)))))
  14.   (setq sArray (vlax-safearray-fill arraySpace objList))
  15. )
  16. (defun vlst2ss (lst / i ss)
  17.     (setq ss (ssadd))
  18.     (repeat (setq i (length lst))
  19.      (ssadd (vlax-vla-object->ename (nth (setq i (1- i)) lst)) ss)
  20.     )
  21.   )
  22. (defun t0 (ss / e i regions s0 s1 se ssn vlalst)
  23. (setq s0 (ssget "x"))
  24.   (if ss
  25.     (progn
  26.       (vla-startundomark *doc)
  27.       (setq vlalst (ss2vlst ss)
  28.      regions (vlax-safearray->list (vlax-variant-value
  29.              (vla-addregion *ms
  30.               (lst2objarray vlalst)
  31.              )
  32.        )
  33.       )
  34.       )
  35.       (vl-cmdf "erase" ss "")
  36.       (vl-cmdf "_union" (vlst2ss regions) "")
  37.       (vl-cmdf "explode" (entlast))
  38.       (setq ssn (ssget "p"))
  39.       (repeat (setq i (sslength ssn))
  40.       (setq e (ssname ssn (setq i (1- i))))
  41.       (vl-cmdf "explode" e "")
  42.       (vl-cmdf "pedit" "m" (ssget "p") "" "y" "j" "" "")
  43.     )
  44.     (setq s1 (ssget "x"))
  45.       (vl-cmdf "select" s1 "r" s0 "")
  46.       (setq se (ssget "p"))
  47.       (repeat (setq i (sslength se))
  48.       (setq e (ssname se (setq i (1- i))))
  49.       (vl-cmdf "bhatch" "p" "s" "s" e "" "")
  50.     )
  51.     )
  52.   )
  53. )
  54. (defun mkpline (pts cl)
  55.     (entmakex (append (list '(0 . "LWPOLYLINE")
  56.        '(100 . "AcDbEntity")
  57.        '(100 . "AcDbPolyline")
  58.        (cons 90 (length pts))
  59.        (if cl
  60.          (cons 70 1)
  61.          (cons 70 0)
  62.        )
  63.         )
  64.         (mapcar '(lambda (a) (cons 10 a)) pts)
  65.        )
  66.     )
  67.   )
  68. (defun delsame (l) (if l (cons (car l) (delsame (vl-remove (car l) l)))))
  69. (defun gvp (e) (delsame (vl-remove nil (mapcar '(lambda (x) (if (wcmatch (itoa (car x)) "1?") (cdr x))) (entget e)))))
  70. (defun lst2ss (lst / i ss)
  71.     (setq ss (ssadd))
  72.     (repeat (setq i (length lst))
  73.      (ssadd (nth (setq i (1- i)) lst) ss)
  74.     )
  75.   )
  76. (defun c:tt ( / e e1 i l pts ss)
  77.     (setq ss (ssget '((0 . "SOLID"))))
  78.     (repeat (setq i (sslength ss))
  79.      (setq e (ssname ss (setq i (1- i)))
  80.       pts (gvp e)
  81.       pts (if (= (length pts) 3) pts (list (car pts) (cadr pts) (cadddr pts) (caddr pts)))
  82.       e1 (mkpline pts t)
  83.       l (cons e1 l)
  84.      )
  85.      (entdel e)
  86.     )
  87.     (t0 (lst2ss l))
  88. )

点评

不错,只是运行慢了一点,求改进一下  发表于 2014-4-21 16:15
回复

使用道具 举报

发表于 2014-4-20 17:02 | 显示全部楼层
本帖最后由 cable2004 于 2014-4-20 23:50 编辑

沙发一下
回复

使用道具 举报

发表于 2014-4-20 20:31 | 显示全部楼层
你的代码在吗?你的思路在哪?

点评

这个我一点思路都想不起来  发表于 2014-4-20 21:19
回复

使用道具 举报

发表于 2014-4-21 07:53 | 显示全部楼层
SOLID图元具有与多义线相同的顶点参数。可以根据其顶点坐标生成多义线,然后生成面域,生成并集,炸开再生成封闭多义线,然后再生成SOLID。
回复

使用道具 举报

发表于 2014-4-21 08:35 | 显示全部楼层
先看看solid实体的定义
回复

使用道具 举报

发表于 2014-4-21 08:38 | 显示全部楼层
估计是想solid→hatch

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2014-4-21 11:24 | 显示全部楼层
这个看样子难度较大,顶出高手
回复

使用道具 举报

发表于 2014-4-21 12:36 | 显示全部楼层
违背自然规律的提问!Solid对象只有四个顶点!
回复

使用道具 举报

发表于 2014-4-21 12:42 | 显示全部楼层
这个有点类似于把相交或者相切的圆连接成一个圆,连接是能连接上,关键它不再是圆了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:12 , Processed in 0.194271 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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