明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3416|回复: 14

怎么才能像刀一样切开封闭的多段线?

  [复制链接]
发表于 2013-1-7 23:37 | 显示全部楼层 |阅读模式
1明经币
最近用到分割多段线的功能,看似简单却在使用break时,总是断在不该断的地方,如图,高手帮忙看怎么处理?切开前多段线是一封闭线,切开后分成两半也是封闭线。


中间不拐弯,切开一条线也成。


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

最佳答案

查看完整内容

好吧,写了一个,难点我觉得是找一个点,这个点能位于闭合圈内
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-1-7 23:37 | 显示全部楼层

好吧,写了一个,难点我觉得是找一个点,这个点能位于闭合圈内
  1. (vl-load-com)
  2. (setvar "cmdecho" 0)
  3. (setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  4. (setq *MoSpace* (vla-get-ModelSpace *AcadDoc*))

  5. (defun c:tt (/ ss vlalst ss1 Centroid region1 region2)
  6.   (if (and (setq ss (ssget '((0 . "LWPOLYLINE"))))
  7.      (= (sslength ss) 2)
  8.       )
  9.     (progn
  10.       (vla-startundomark *acaddoc*)
  11.       (setq vlalst (lm:ss->vla ss))
  12.       (if (member T (mapcar 'vlax-curve-isclosed vlalst))
  13.   (progn
  14.     (setq  region1 (car
  15.        (vlax-safearray->list
  16.          (vlax-variant-value
  17.            (vla-addregion
  18.              *mospace*
  19.              (Xr:list->Obj-Array vlalst)
  20.            )
  21.          )
  22.        )
  23.            )
  24.     )
  25.     (setq  Centroid (vlax-safearray->list
  26.          (vlax-variant-value
  27.            (vlax-get-property region1 'Centroid)
  28.          )
  29.        )
  30.     )
  31.     (command "-boundary" "A" "B" "N" SS "" "" Centroid "")
  32.     (setq ss1 (ssget "L"))
  33.     (setq vlalst (lm:ss->vla ss1))
  34.     (setq  region2 (car
  35.        (vlax-safearray->list
  36.          (vlax-variant-value
  37.            (vla-addregion
  38.              *mospace*
  39.              (Xr:list->Obj-Array vlalst)
  40.            )
  41.          )
  42.        )
  43.            )
  44.     )
  45.           (vlax-invoke-method region1 'Boolean 2 region2)
  46.     (setq  Centroid (vlax-safearray->list
  47.          (vlax-variant-value
  48.            (vlax-get-property region1 'Centroid)
  49.          )
  50.        )
  51.     )
  52.     (command "-boundary" "A" "B" "N" SS "" "" Centroid "")
  53.     (vla-erase region1)
  54.     (command "_.erase" ss "")
  55.     (setq ss nil)
  56.     (setq ss1 nil)
  57.     (princ)
  58.   )
  59.   (progn
  60.     (princ "\n没有闭合线")
  61.     (princ)
  62.   )
  63.       )
  64.       (vla-endundomark *acaddoc*)
  65.     )
  66.     (progn
  67.       (princ "\n只能选择2条多义线")
  68.       (princ)
  69.     )
  70.   )
  71. )


  72. (defun Xr:list->Obj-Array (objList / arraySpace sArray)
  73.   (setq  arraySpace
  74.    (vlax-make-safearray
  75.      vlax-vbObject    ; 元素类型
  76.      (cons 0
  77.      (1- (length objList))
  78.      )        ; 数组维数
  79.    )
  80.   )
  81.   (setq sArray (vlax-safearray-fill arraySpace objList))
  82. )

  83. (defun LM:ss->vla (ss / i l)
  84.   ;; ?Lee Mac 2010
  85.   (if ss
  86.     (repeat (setq i (sslength ss))
  87.       (setq
  88.   l (cons  (vlax-ename->vla-object (ssname ss (setq i (1- i))))
  89.     l
  90.     )
  91.       )
  92.     )
  93.   )
  94. )


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-1-7 23:52 | 显示全部楼层
本帖最后由 阿然 于 2013-1-8 00:00 编辑

用boundary,然后点中间两个点不行么?
(command "-boundary" (getpoint) (getpoint) "")
回复

使用道具 举报

 楼主| 发表于 2013-1-7 23:58 | 显示全部楼层
阿然 发表于 2013-1-7 23:52
用boundary,然后点中间两个点不行么?

图面没那么干净,还有其他杂质在。

点评

请上个实务上的样图 (*.Dwg)作调验...  发表于 2013-1-8 08:11
回复

使用道具 举报

发表于 2013-1-8 00:00 | 显示全部楼层
soly2006 发表于 2013-1-7 23:58
图面没那么干净,还有其他杂质在。

那就是说要选中闭合线和你的刀,然后生成两个?
回复

使用道具 举报

 楼主| 发表于 2013-1-8 00:08 | 显示全部楼层
阿然 发表于 2013-1-8 00:00
那就是说要选中闭合线和你的刀,然后生成两个?

1,boundary
2、按钮->选择两个实体
3、按钮->点两点
4、删除原线和切割线
5、附属性和图层
------------------这么多步骤,你让lisp情何以堪。
呵呵,谢谢关注.
回复

使用道具 举报

发表于 2013-1-8 00:10 | 显示全部楼层
(command "-boundary" "a" "b" "n" (ssget) "" "" (getpoint) (getpoint) "")
哈哈哈哈,很偷懒的做法
回复

使用道具 举报

 楼主| 发表于 2013-1-8 10:19 | 显示全部楼层
阿然 发表于 2013-1-8 01:15
好吧,写了一个,难点我觉得是找一个点,这个点能位于闭合圈内

就是这效果,感谢。 剩下的就是加图层信息和扩展码。
这分给你。
回复

使用道具 举报

发表于 2013-1-8 23:51 | 显示全部楼层
哈哈,能不能进一步:切割多个图元并成两个块(组)
回复

使用道具 举报

发表于 2013-1-9 22:08 | 显示全部楼层
加载了没有其效果演示的那样
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 14:58 , Processed in 0.403443 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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