QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
请大家帮忙看看这个功能能否实现.我想要的效果是在图中我画一条直线,当我点一个删除按钮然后提示让我选择一条直线,之后与这条直线相交的所有对象都删除了,不与之相交的对象保留.谢谢了
 楼主| 发表于 2009-5-27 19:39:39 | 显示全部楼层 来自: 中国江苏无锡
我只能实现与直线相交的都删除但不能指定一条直线,要是有很多条直线我就搞不定了,大家帮我想想办法
发表于 2009-5-27 21:40:54 | 显示全部楼层 来自: 中国台湾
;;; No error check) m$ W8 Y4 Y* G! g
;;; for test only) m5 }1 w- A9 w1 t+ A& ?8 J7 B
(defun C:Test ()
4 R7 Z6 u  o9 Q( p2 X; s   (setq ee (entsel)* u$ I2 p& e( L! L5 ?: j2 S3 k; `8 u
         ee (car ee)
# \$ J+ V, n/ f  l) f5 J& L        dat (entget ee) 6 u; d+ G' g7 ]; V% s
         pa (cdr (assoc 10 dat))
- a5 @+ g9 d) _  z  l  R         pb (cdr (assoc 11 dat)) ! L8 T$ y) R! r3 i( ]
   )
7 U$ i# E. {: D) C1 H( P. h   (command "Erase" "f" pa pb "" "r" ee ""); l  {- f; v) K+ D6 A* ]5 c8 F1 X
)
 楼主| 发表于 2009-5-30 18:34:08 | 显示全部楼层 来自: 中国江苏无锡
我用的是VBA呀,能不能给VBA代码,详细点的,谢谢了!
发表于 2009-5-30 21:12:01 | 显示全部楼层 来自: 中国
  1. 3 u" v5 R- q" f2 ~$ R
  2.     Dim E As AcadEntity, L As AcadLine, P As Variant
    7 n. Y* T- B9 {& w, M# N" O
  3.     On Error Resume Next0 y6 q2 u2 i4 P2 p" t
  4.     With ThisDrawing  q* }5 j7 Q' a) v2 a- Z
  5.         Do4 L7 O  \# @5 S( D1 q5 x
  6.             .Utility.GetEntity E, P, vbCrLf & "选择直线:"" M- P. x- F& i, v
  7.             If Err Then
    & E: K0 A, K5 Z% Z  K
  8.                 Exit Sub
      }( H$ r) X) v/ H: m$ B
  9.             ElseIf E.ObjectName = "AcDbLine" Then
    2 O7 `* |3 S/ W: f7 `& t) T2 q
  10.                 Exit Do
    , \9 R: s! J, D* v6 M" k: @- C' y1 T
  11.             End If
    5 \0 r) _, f0 y) D* A9 k5 r
  12.         Loop& _+ Y" p' b! \# p2 b0 V
  13.         Set L = E* {+ v: U7 z* R  p
  14.         For Each E In .ModelSpace8 {& w( E# F5 c3 Z5 t" D& `% E, u
  15.             P = L.IntersectWith(E, acExtendNone)+ u3 J0 M( K& {3 }$ d
  16.             If UBound(P) >= 2 Then E.Delete
    6 l; w( I& ]" {% }) a/ I3 {6 V
  17.         Next
    2 ?) X& y* L7 `7 w
  18.     End With+ u- c9 p3 n( b( X1 L* q
复制代码
 楼主| 发表于 2009-5-31 19:18:21 | 显示全部楼层 来自: 中国江苏无锡
版主你太厉害了,能推荐点资料吗?你是怎么学这VBA的?6 |. f. }+ b7 M  M" K" ~2 o4 ]6 \/ `
非常感谢
发表于 2009-6-4 16:01:02 | 显示全部楼层 来自: 中国广东东莞
原帖由 SunVei 于 2009-5-27 21:40 发表 http://www.3dportal.cn/discuz/images/common/back.gif
- G: v* W8 e9 X$ R;;; No error check  k* q  ]8 n& u; _2 s, y. Q
;;; for test only
; O& C% G: I. P/ u(defun C:Test ()
% ]; W  b% x9 K; j   (setq ee (entsel)
  a; [$ G5 o% T! N  d$ Z6 Z* z6 s- P         ee (car ee)+ Y3 X' u  N2 T2 V3 M# M
        dat (entget ee)
7 P2 V! J5 A/ n) H         pa (cdr (assoc 10 dat))
% k6 T2 K& z5 e$ ~; {         pb (cdr (assoc 11 dat)) 4 e' O+ T* ~! z- H
    ...

. X- T. m! }$ C$ G. a/ T& E1 f2 b$ h1 g

' j! F3 h  V  b- t不错的办法,只是如果异面直线的话不也被咔嚓了?
发表于 2009-6-5 15:07:26 | 显示全部楼层 来自: 中国台湾
代码是跟着需求在走的
/ k4 ?1 B- r/ c) R- ~  {为自己量身定做最顺手 .....
发表于 2009-7-8 10:37:41 | 显示全部楼层 来自: 中国北京
以直线两个端点为对角点的长方形为cross方式选择实体,然后在选择集判断每个实体是否跟直线相交,相交的就删除
发表于 2015-1-9 09:55:09 | 显示全部楼层 来自: 中国广东中山
: W) F+ K0 Y4 i; n; p
版主能不能做成一个文件啊?本人不能这方面的,不过很想用用哦0 B/ I+ A% v( I
谢谢
发表于 2015-1-9 15:12:41 | 显示全部楼层 来自: 中国辽宁本溪
就是个栏选呗,没什么
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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