具有z值的二维对象
你好我想知道如何找到哪些是具有z值的2D对象,以及如何避免没有z值的2D对象。 你指的是大于或小于“0”的Z值,不是吗?
如何避免没有Z值的2D对象?停止使用“高程”命令,在操作UCS时要更加小心。远离3D图形。 您需要分析图形中每种类型实体的特性,没有使用简单过滤器的“快速”方法。
例如,测试每个LWD多段线的高程;检查每个平面对象的平面和相对位置。[圆/弧/椭圆/样条线/长波多段线/标注/文字/多行文字];检查三维多段线和直线对象的所有顶点(DXF 10/11);以及点/插入/文字/多行文字等对象的位置(DXF 10)。 假设所有对象都不在“0”的高程,并使用“展平”命令将其返回到该高程。那么你就不必搜索任何东西了。 1.选择所有对象,并使用属性将高程设置为0。(做与展平相同的事情!)
2.使用命名视图“front”,您可以观察YZ平面中的所有对象。。。然后可以看到哪些对象相对于XY平面“出平面”。
“避免”物体是什么意思?为什么?有没有没有没有x值的对象? 看看这是否可以帮助您:
(defun ss=ss1+ss2 ( ss1 ss2 / lst1 n1 lst2 n2 lst n ss )
(setq n1 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss1))) 0 (sslength ss1)))
(repeat n1
(setq lst1 (cons (ssname ss1 (setq n1 (1- n1))) lst1))
)
(setq n2 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss2))) 0 (sslength ss2)))
(repeat n2
(setq lst2 (cons (ssname ss2 (setq n2 (1- n2))) lst2))
)
(if (eq lst1 nil) (setq lst lst2))
(if (eq lst2 nil) (setq lst lst1))
(if (and lst1 lst2)
(progn
(foreach ent lst2
(if (not (member ent lst1)) (setq lst (cons ent lst)))
)
(setq lst (append lst1 lst))
)
)
(setq ss (ssadd))
(foreach ent lst
(ssadd ent ss)
)
ss
)
(defun ss=ss1-ss2 ( ss1 ss2 / lst1 n1 lst2 n2 lst n ss )
(setq n1 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss1))) 0 (sslength ss1)))
(repeat n1
(setq lst1 (cons (ssname ss1 (setq n1 (1- n1))) lst1))
)
(setq n2 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss2))) 0 (sslength ss2)))
(repeat n2
(setq lst2 (cons (ssname ss2 (setq n2 (1- n2))) lst2))
)
(if (eq lst1 nil) (setq lst nil))
(if (eq lst2 nil) (setq lst lst1))
(if (and lst1 lst2) (setq lst (append lst1 lst2)))
(setq ss (ssadd))
(foreach ent lst
(if (and (not (member ent lst2)) (not (member ent (cdr (member ent lst))))) (ssadd ent ss))
)
ss
)
(defun sspointselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "POINT"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(mapcar '(lambda (x) (if (= (car x) 10) (if (equal (cadddr x) 0.0 1e- (ssadd ent ssnew)))) entlst)
)
ssnew
)
(defun sslwpolyselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cdr (assoc 38 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun sspolylineselev0 ( / ssnew ss n entlst ent en tst )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "POLYLINE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(setq en ent)
(while (eq (cdr (assoc 0 (entget (setq en (entnext en))))) "VERTEX")
(mapcar '(lambda (x) (if (= (car x) 10) (if (equal (cadddr x) 0.0 1e- (setq tst (cons T tst)) (setq tst (cons nil tst))))) (entget en))
)
(if (eval (cons 'and tst)) (ssadd ent ssnew))
(setq tst nil)
)
ssnew
)
(defun ssinsertselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "INSERT"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun sslineselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "LINE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e- (equal (cadddr (assoc 11 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun sscircleselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "CIRCLE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun ssarcselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "ARC"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun ssellipseselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "ELLIPSE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e- (equal (cadddr (assoc 11 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun sssplineselev0 ( / ssnew ss n entlst ent tst10 tst11 )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "SPLINE"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(mapcar '(lambda (x) (if (= (car x) 10) (if (equal (cadddr x) 0.0 1e- (setq tst10 (cons T tst10)) (setq tst10 (cons nil tst10))))) entlst)
(mapcar '(lambda (x) (if (= (car x) 11) (if (equal (cadddr x) 0.0 1e- (setq tst11 (cons T tst11)) (setq tst11 (cons nil tst11))))) entlst)
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (eval (cons 'and tst10)) (eval (cons 'and tst11))) (ssadd ent ssnew))
(setq tst10 nil tst11 nil)
)
ssnew
)
(defun ssdimensionselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "DIMENSION"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e- (equal (cadddr (assoc 11 entlst)) 0.0 1e- (equal (cadddr (assoc 12 entlst)) 0.0 1e- (equal (cadddr (assoc 13 entlst)) 0.0 1e- (equal (cadddr (assoc 14 entlst)) 0.0 1e- (equal (cadddr (assoc 15 entlst)) 0.0 1e- (equal (cadddr (assoc 16 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun sstextselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "TEXT"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun ssmtextselev0 ( / ssnew ss n entlst ent )
(setq ssnew (ssadd))
(setq ss (ssget "_X" '((0 . "MTEXT"))))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq entlst (entget (setq ent (ssname ss (setq n (1- n))))))
(if (and (equal (assoc 210 entlst) '(210 0.0 0.0 1.0) 1e- (equal (cadddr (assoc 10 entlst)) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun selallelev0 ( / ss )
(setq ss (ssadd))
(setq ss (ss=ss1+ss2 (sspointselev0) ss))
(setq ss (ss=ss1+ss2 (sslwpolyselev0) ss))
(setq ss (ss=ss1+ss2 (sspolylineselev0) ss))
(setq ss (ss=ss1+ss2 (ssinsertselev0) ss))
(setq ss (ss=ss1+ss2 (sslineselev0) ss))
(setq ss (ss=ss1+ss2 (sscircleselev0) ss))
(setq ss (ss=ss1+ss2 (ssarcselev0) ss))
(setq ss (ss=ss1+ss2 (ssellipseselev0) ss))
(setq ss (ss=ss1+ss2 (sssplineselev0) ss))
(setq ss (ss=ss1+ss2 (ssdimensionselev0) ss))
(setq ss (ss=ss1+ss2 (sstextselev0) ss))
(setq ss (ss=ss1+ss2 (ssmtextselev0) ss))
ss
)
(defun c:selallelev=0 nil
(sssetfirst nil (selallelev0))
(princ)
)
(defun c:selallelev/=0 nil
(sssetfirst nil (ss=ss1-ss2 (ssget "_X") (selallelev0)))
(princ)
)
(princ)
(princ "\nFor selecting all objects in elev=0.0 use : selallelev=0\nFor selecting all objects in elev/=0.0 use : selallelev/=0")
(textpage)
(princ)
您好,M.R。 我以为我是猴子。。。这是一个简单的代码,它对所有2D对象(也包括引线、覆盖、多线、轨迹、区域等)都更有效
(defun ss=ss1-ss2 ( ss1 ss2 / lst1 n1 lst2 n2 lst n ss )
(setq n1 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss1))) 0 (sslength ss1)))
(repeat n1
(setq lst1 (cons (ssname ss1 (setq n1 (1- n1))) lst1))
)
(setq n2 (if (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss2))) 0 (sslength ss2)))
(repeat n2
(setq lst2 (cons (ssname ss2 (setq n2 (1- n2))) lst2))
)
(if (eq lst1 nil) (setq lst nil))
(if (eq lst2 nil) (setq lst lst1))
(if (and lst1 lst2) (setq lst (append lst1 lst2)))
(setq ss (ssadd))
(foreach ent lst
(if (and (not (member ent lst2)) (not (member ent (cdr (member ent lst))))) (ssadd ent ss))
)
ss
)
(defun selallelev0 ( / ss ssnew n ent entA minpt maxpt ) (vl-load-com)
(setq ssnew (ssadd))
(setq ss (ssget "_X"))
(if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list ss)))) (setq n (sslength ss)) (setq n 0))
(repeat n
(setq ent (ssname ss (setq n (1- n))))
(setq entA (vlax-ename->vla-object ent))
(vla-getboundingbox entA 'minpoint 'maxpoint)
(setq minpt (vlax-safearray->list minpoint) maxpt (vlax-safearray->list maxpoint))
(if (and (equal (caddr minpt) 0.0 1e- (equal (caddr maxpt) 0.0 1e-) (ssadd ent ssnew))
)
ssnew
)
(defun c:selallelev=0 nil
(sssetfirst nil (selallelev0))
(princ)
)
(defun c:selallelev/=0 nil
(sssetfirst nil (ss=ss1-ss2 (ssget "_X") (selallelev0)))
(princ)
)
(princ)
(princ "\nFor selecting all objects in elev=0.0 use : selallelev=0\nFor selecting all objects in elev/=0.0 use : selallelev/=0")
(textpage)
(princ)
M.R。
页:
[1]