QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
请大家帮忙看看这个功能能否实现.我想要的效果是在图中我画一条直线,当我点一个删除按钮然后提示让我选择一条直线,之后与这条直线相交的所有对象都删除了,不与之相交的对象保留.谢谢了
 楼主| 发表于 2009-5-27 19:39:39 | 显示全部楼层 来自: 中国江苏无锡
我只能实现与直线相交的都删除但不能指定一条直线,要是有很多条直线我就搞不定了,大家帮我想想办法
发表于 2009-5-27 21:40:54 | 显示全部楼层 来自: 中国台湾
;;; No error check
* O1 k+ [% X! Z& t6 O; T" m9 t  h;;; for test only: o8 E9 i2 \& \4 H! q) k/ _
(defun C:Test ()
) u8 z) R$ i. |& z- j   (setq ee (entsel)7 v: w! U5 t- V0 @
         ee (car ee)
+ N# O. q5 O+ X. {! Y/ J1 Q; q; H        dat (entget ee) , t( k- V3 `. W8 W0 W
         pa (cdr (assoc 10 dat)) & U) u+ o5 Q$ E
         pb (cdr (assoc 11 dat)) . @' T' V' m3 H2 Q7 n5 `
   )
- H# M( L: {- ?& y$ ^" ~  o   (command "Erase" "f" pa pb "" "r" ee "")$ _6 w  S$ y2 D; i& u9 p
)
 楼主| 发表于 2009-5-30 18:34:08 | 显示全部楼层 来自: 中国江苏无锡
我用的是VBA呀,能不能给VBA代码,详细点的,谢谢了!
发表于 2009-5-30 21:12:01 | 显示全部楼层 来自: 中国
  1. ; u  [4 X6 O& I+ \& I7 }! [* U$ t. H
  2.     Dim E As AcadEntity, L As AcadLine, P As Variant  {: ?/ |! }) _" {8 d2 H- a
  3.     On Error Resume Next
    & {! x' N/ X4 o: Z
  4.     With ThisDrawing. M; |! D. Y, S+ u- l
  5.         Do% {5 P* z9 S. e& i0 \
  6.             .Utility.GetEntity E, P, vbCrLf & "选择直线:"
    - Q+ y9 R: X- j( H, m( u# _$ @) c
  7.             If Err Then% F% s! e. g$ b" X' U
  8.                 Exit Sub) d) h+ Z, D0 ~+ w5 S  g0 t
  9.             ElseIf E.ObjectName = "AcDbLine" Then
    $ {/ N5 M6 ]" n
  10.                 Exit Do. L% v: M; t& g9 Q4 S3 l) e+ @
  11.             End If
    ! U; Z4 ^: ^5 k: O4 C
  12.         Loop( u' ?5 S) P% L* i  I( K
  13.         Set L = E
    & v  l- P4 k" B, r
  14.         For Each E In .ModelSpace8 B. B( F2 \) W
  15.             P = L.IntersectWith(E, acExtendNone)
    0 H' z, E) H- [/ s& h: l) t) ]
  16.             If UBound(P) >= 2 Then E.Delete+ x! k0 X4 G; e, X2 N: H
  17.         Next
    , j2 `0 R- u2 t. p6 g/ a
  18.     End With7 r2 S. w' X- G+ s# B
复制代码
 楼主| 发表于 2009-5-31 19:18:21 | 显示全部楼层 来自: 中国江苏无锡
版主你太厉害了,能推荐点资料吗?你是怎么学这VBA的?8 V% G  B' A1 T( i% f+ U6 m
非常感谢
发表于 2009-6-4 16:01:02 | 显示全部楼层 来自: 中国广东东莞
原帖由 SunVei 于 2009-5-27 21:40 发表 http://www.3dportal.cn/discuz/images/common/back.gif
& k$ Y- w3 |0 e/ y;;; No error check( E3 }0 z6 ]1 {- u5 g3 }4 H
;;; for test only3 m$ A: b2 r( N
(defun C:Test (); M. L) l0 z) s" K" n
   (setq ee (entsel)
) E/ K% G; C! p$ `) a$ V         ee (car ee)# J$ a$ A5 ]# G  l
        dat (entget ee) , H' `. ^5 N. m
         pa (cdr (assoc 10 dat))
- w* o2 z. n" {5 _- @" ^         pb (cdr (assoc 11 dat))
  J. ]# S3 z9 z2 W    ...

1 l+ p+ M4 S; k+ z# I7 W* m6 h6 U/ c, c
& \+ U) E0 ^) {  d, j' s/ _9 }' B/ D% [. `8 I
不错的办法,只是如果异面直线的话不也被咔嚓了?
发表于 2009-6-5 15:07:26 | 显示全部楼层 来自: 中国台湾
代码是跟着需求在走的- l+ I" r- m5 O6 A- B% j$ C  o
为自己量身定做最顺手 .....
发表于 2009-7-8 10:37:41 | 显示全部楼层 来自: 中国北京
以直线两个端点为对角点的长方形为cross方式选择实体,然后在选择集判断每个实体是否跟直线相交,相交的就删除
发表于 2015-1-9 09:55:09 | 显示全部楼层 来自: 中国广东中山

! o0 f" U1 S5 b版主能不能做成一个文件啊?本人不能这方面的,不过很想用用哦
* l$ i0 F, l; B* [谢谢
发表于 2015-1-9 15:12:41 | 显示全部楼层 来自: 中国辽宁本溪
就是个栏选呗,没什么
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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