QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
5天前
查看: 4646|回复: 10
收起左侧

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

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

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

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

x
请大家帮忙看看这个功能能否实现.我想要的效果是在图中我画一条直线,当我点一个删除按钮然后提示让我选择一条直线,之后与这条直线相交的所有对象都删除了,不与之相交的对象保留.谢谢了
 楼主| 发表于 2009-5-27 19:39:39 | 显示全部楼层 来自: 中国江苏无锡
我只能实现与直线相交的都删除但不能指定一条直线,要是有很多条直线我就搞不定了,大家帮我想想办法
发表于 2009-5-27 21:40:54 | 显示全部楼层 来自: 中国台湾
;;; No error check
2 Y7 M/ `0 [; K: J8 m/ G- @# n;;; for test only
* X9 ]" C3 ^6 T, B5 J' u( y(defun C:Test ()
9 D1 e+ |% z2 [   (setq ee (entsel)
# r' R2 c) {3 @+ ]5 N, ~         ee (car ee)
; a' I; y5 Z) F; P- n' l- a        dat (entget ee)
1 d! F( ^3 B/ H9 u+ @         pa (cdr (assoc 10 dat))
& q7 q9 Q+ E% M+ U         pb (cdr (assoc 11 dat))
- G3 A6 _9 n' J   )' p5 j6 D/ y- h5 B3 M
   (command "Erase" "f" pa pb "" "r" ee "")& ~* V0 H3 O( O, y8 [. p
)
 楼主| 发表于 2009-5-30 18:34:08 | 显示全部楼层 来自: 中国江苏无锡
我用的是VBA呀,能不能给VBA代码,详细点的,谢谢了!
发表于 2009-5-30 21:12:01 | 显示全部楼层 来自: 中国

  1. 7 i" A0 [* Y' F$ _! \0 C/ B$ j
  2.     Dim E As AcadEntity, L As AcadLine, P As Variant% S1 \  Q/ b) J5 ?7 ~4 \
  3.     On Error Resume Next
    $ [5 z) M2 G4 f$ H) e/ _
  4.     With ThisDrawing0 G4 M+ n+ ^7 X1 ~. o, z
  5.         Do
    % v, ^2 Y9 P% X: D* y- q  T# B
  6.             .Utility.GetEntity E, P, vbCrLf & "选择直线:"" W9 ?: g; D* k3 J# |
  7.             If Err Then
    + k, J3 E5 g, E3 E) h* A: A
  8.                 Exit Sub
    5 Y9 W5 G9 s" O
  9.             ElseIf E.ObjectName = "AcDbLine" Then4 f; E0 G5 c5 f0 X/ B
  10.                 Exit Do
    , p/ N) T. W7 m3 g
  11.             End If( d$ U2 p$ [9 I) b2 _. c
  12.         Loop
    / o9 h" ^+ q% t* T
  13.         Set L = E
    4 I+ J6 Q" D5 B# d2 C- }+ I
  14.         For Each E In .ModelSpace2 a$ c" Q! _- c/ B
  15.             P = L.IntersectWith(E, acExtendNone)
    7 K% x5 k& c, ]$ M+ N& ]2 o! @
  16.             If UBound(P) >= 2 Then E.Delete
    2 T: v5 N  G$ n5 i. b. W4 L* s
  17.         Next
    ' f9 M$ f* ^: A# k* Y* T) ]
  18.     End With# f$ q7 y: P: t1 l( t7 i
复制代码
 楼主| 发表于 2009-5-31 19:18:21 | 显示全部楼层 来自: 中国江苏无锡
版主你太厉害了,能推荐点资料吗?你是怎么学这VBA的?. P3 H+ x. j; o" U: V
非常感谢
发表于 2009-6-4 16:01:02 | 显示全部楼层 来自: 中国广东东莞
原帖由 SunVei 于 2009-5-27 21:40 发表 http://www.3dportal.cn/discuz/images/common/back.gif
7 P4 n3 Y7 p5 O; f7 \- a# a;;; No error check
4 A' T, d6 I( h, c;;; for test only
) g8 w! _, y* V; J(defun C:Test ()9 c5 e# G# ?( I3 v, l1 `# A8 [2 q+ L
   (setq ee (entsel)/ v1 C: m& U" ^9 `
         ee (car ee)2 h  H. A; ^9 n1 y. c" q
        dat (entget ee) , [$ {' v  E6 U" s. W( U/ I
         pa (cdr (assoc 10 dat)) 4 ^: S; {4 f3 L! u+ i+ d) x; T
         pb (cdr (assoc 11 dat)) 0 [  E8 g3 G$ T" n" P) I
    ...
  j2 R) ?/ I7 M7 l9 }

% A! M" e9 X  H2 m' A. H* k$ j5 |9 \) P9 Z& j5 c2 A
不错的办法,只是如果异面直线的话不也被咔嚓了?
发表于 2009-6-5 15:07:26 | 显示全部楼层 来自: 中国台湾
代码是跟着需求在走的) H7 P  h9 [( a7 E& L
为自己量身定做最顺手 .....
发表于 2009-7-8 10:37:41 | 显示全部楼层 来自: 中国北京
以直线两个端点为对角点的长方形为cross方式选择实体,然后在选择集判断每个实体是否跟直线相交,相交的就删除
发表于 2015-1-9 09:55:09 | 显示全部楼层 来自: 中国广东中山

& e" B# O: E. h: D# _4 v  @版主能不能做成一个文件啊?本人不能这方面的,不过很想用用哦
7 d4 g% L$ a- v) p谢谢
发表于 2015-1-9 15:12:41 | 显示全部楼层 来自: 中国辽宁本溪
就是个栏选呗,没什么
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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