QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4661|回复: 10
收起左侧

[讨论] 如何实现删除我与所选直线相交的对象?

[复制链接]
发表于 2009-5-27 19:36:13 | 显示全部楼层 |阅读模式 来自: 中国江苏无锡

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
请大家帮忙看看这个功能能否实现.我想要的效果是在图中我画一条直线,当我点一个删除按钮然后提示让我选择一条直线,之后与这条直线相交的所有对象都删除了,不与之相交的对象保留.谢谢了
 楼主| 发表于 2009-5-27 19:39:39 | 显示全部楼层 来自: 中国江苏无锡
我只能实现与直线相交的都删除但不能指定一条直线,要是有很多条直线我就搞不定了,大家帮我想想办法
发表于 2009-5-27 21:40:54 | 显示全部楼层 来自: 中国台湾
;;; No error check
  P& D/ i' Q4 i9 |* t" P;;; for test only9 G  A: u: S* ?. Y. [( P
(defun C:Test ()9 d! G+ Y' ?" J6 i( K2 R  d
   (setq ee (entsel)
% \8 F4 Z3 y3 d4 c" ?, `; e# O" C         ee (car ee)
$ _" w) r9 f( x1 F        dat (entget ee) ( H" j! p+ w4 m/ w7 y
         pa (cdr (assoc 10 dat))
2 p$ x7 ~( t' h         pb (cdr (assoc 11 dat)) 7 Q% g4 Y4 F* J* ?* o( ]$ w- F
   )
5 x: ?7 |$ F6 o   (command "Erase" "f" pa pb "" "r" ee ""), ?* C! n; ?! u
)
 楼主| 发表于 2009-5-30 18:34:08 | 显示全部楼层 来自: 中国江苏无锡
我用的是VBA呀,能不能给VBA代码,详细点的,谢谢了!
发表于 2009-5-30 21:12:01 | 显示全部楼层 来自: 中国

  1. 1 z" k4 N$ g% h! p- m( C
  2.     Dim E As AcadEntity, L As AcadLine, P As Variant# Q' R; v4 S/ ^
  3.     On Error Resume Next2 V/ _! ^: L; w6 f
  4.     With ThisDrawing! P3 E  h8 q7 ]. u
  5.         Do
    & r- S0 S) q' W- L2 `! ~
  6.             .Utility.GetEntity E, P, vbCrLf & "选择直线:"4 D0 i" L; d! y2 P
  7.             If Err Then
    6 Z3 ]4 r  d) i9 D; ^' U: Z
  8.                 Exit Sub
    5 F; y$ [: k2 i# _3 h4 x- P
  9.             ElseIf E.ObjectName = "AcDbLine" Then
    5 |/ o' F* W  W
  10.                 Exit Do5 _1 Z6 J) X9 V9 D2 q
  11.             End If3 }* H4 Y& p" _. U. s
  12.         Loop
    & d" ^+ S: z) k
  13.         Set L = E
    4 S7 m! y5 }9 I9 b' }8 P, h) `5 e
  14.         For Each E In .ModelSpace
    2 X% J6 Q/ F; r+ N) h9 j" L2 j
  15.             P = L.IntersectWith(E, acExtendNone)
    " }& ]5 X. o9 l; s# ~
  16.             If UBound(P) >= 2 Then E.Delete, c4 f6 u8 Z! p/ \& b0 G
  17.         Next8 h# H* C/ M) `5 d/ u" D: ~2 I, r
  18.     End With
    % {, E& }1 Q& U2 q, M; F$ w- `
复制代码
 楼主| 发表于 2009-5-31 19:18:21 | 显示全部楼层 来自: 中国江苏无锡
版主你太厉害了,能推荐点资料吗?你是怎么学这VBA的?
8 t; s7 }  T8 l非常感谢
发表于 2009-6-4 16:01:02 | 显示全部楼层 来自: 中国广东东莞
原帖由 SunVei 于 2009-5-27 21:40 发表 http://www.3dportal.cn/discuz/images/common/back.gif
( y: L: w* B- i;;; No error check6 c3 \6 {9 _) Q) W) F* `6 _5 h. e6 ^% N
;;; for test only2 P) {9 W- m+ R/ S% t
(defun C:Test ()4 w6 p/ f3 J% N! N2 r9 D
   (setq ee (entsel)
7 ^6 n# y2 G! [. m0 B+ x# M         ee (car ee)
1 k% }+ T6 y2 s        dat (entget ee)
) [: [9 v& h% }6 Q* H         pa (cdr (assoc 10 dat)) 2 E1 o! o+ k+ Z$ b
         pb (cdr (assoc 11 dat))
3 {2 f9 c7 C6 ?    ...

* T# l' `0 Y0 y
) |7 B9 {& t1 X. F, `8 w6 g. B( T/ U- e- e
不错的办法,只是如果异面直线的话不也被咔嚓了?
发表于 2009-6-5 15:07:26 | 显示全部楼层 来自: 中国台湾
代码是跟着需求在走的8 E: e/ [" _1 c7 B0 M9 y3 i7 b& c- U) ^
为自己量身定做最顺手 .....
发表于 2009-7-8 10:37:41 | 显示全部楼层 来自: 中国北京
以直线两个端点为对角点的长方形为cross方式选择实体,然后在选择集判断每个实体是否跟直线相交,相交的就删除
发表于 2015-1-9 09:55:09 | 显示全部楼层 来自: 中国广东中山

; f  `8 D+ f; N& v版主能不能做成一个文件啊?本人不能这方面的,不过很想用用哦. g9 V) k! X- h1 B2 o$ k  u
谢谢
发表于 2015-1-9 15:12:41 | 显示全部楼层 来自: 中国辽宁本溪
就是个栏选呗,没什么
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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