本帖最后由 wowan1314 于 2013-8-28 12:14 编辑
A A - (defun c:t11 nil
- (mapcar''((x)
- (mapcar''((x)
- (mapcar''((y)(vl-cmdf ".break" y "f" x "@"))
- (cdr(reverse(mapcar 'cadr (ssnamex (ssget "_c" x x)))))
- )
- )
- x
- )
- )
- (mapcar''((x)(list (vlax-curve-getendpoint x)(vlax-curve-getstartpoint x)))
- ('((x)(if (= 1 (length x))x(cdr(reverse x))))
- (mapcar 'cadr (ssnamex (ssget '((0 . "L*LINE")))))
- )
- )
- )
- )
 - ;;构建锁定图层过滤表
- (defun t11 ( / lays lst)
- (setq lst (list (cons -4 "OR>"))
- lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
- )
- (vlax-map-collection
- lays
- '(lambda (x)
- (if (= (vla-get-lock x) :vlax-true)
- nil
- (setq lst (cons (cons 8 (vla-get-name x) ) lst))
- )
- )
- )
- (cons (cons -4 "<OR") lst)
- )
 - ;;构建锁定图层过滤表
- ;;用法 (ssget (t12))
- (defun t12 ( / lay lst)
- (setq lay (tblnext "LAYER" t))
- (if (= (cdr (assoc 70 lay)) 0)
- (setq lst (list (cons 8 (cdr(assoc 2 lay))) (cons -4 "OR>")))
- (setq lst (list (cons -4 "OR>")))
- )
- (while (setq lay (tblnext "LAYER"))
- (if (= (cdr (assoc 70 lay)) 0)
- (setq lst (cons (cons 8 (cdr(assoc 2 lay))) lst))
- )
- )
- (cons (cons -4 "<OR") lst)
- )
 - ;;CAD2004得到填充面积(CAD06以上版本 已经有面积的属性了)
- (defun c:t11 (/ e s)
- (if (setq e (entget(car(entsel))
- )
- )
- (progn
- (setq s (cdr(reverse(mapcar 'cdr (cdr(vl-remove-if '(lambda(x)(/= 10 (car x)))e))
- )
- )
- )
- )
- (apply 'command (cons "pline" s))(command "C")
- (rtos (vla-get-area(vlax-ename->vla-object(entlast)))2))
- )
- )
 - ;;多段线顶点表
- (defun t1 (e)
- (mapcar
- 'cdr(vl-remove-if
- '(lambda(x)(/= (car x) 10))
- (entget e)
- )
- )
- )
- ;;包围盒四角点坐标(左下逆时针)
- (defun t2 (e / ll ur p2 p4)
- (vla-getboundingbox (vlax-ename->vla-object e) 'll 'ur)
- (setq ll(mapcar 'vlax-safearray->list (list ll ur))
- p2 (list (caadr ll) (cadar ll))
- p4 (list (caar ll) (cadadr ll))
- )
- (list (car ll) p2 (cadr ll) p4)
- )
 - ;求表的交集(t1 (list l1 l2 . . .))
- (defun t1 (lst)
- (setq l1 (car lst) ll (cdr lst))
- (mapcar
- '(lambda(a)
- (mapcar
- '(lambda(b)
- (if (member b a) nil (setq l1 (vl-remove b l1))
- )
- )
- l1
- )
- )
- ll
- )
- l1
- )
;;变量监视用以简单的定位函数出错的位置. - ;;变量监视函数,如果出错。则输出->出错信息及各变量的赋值情况。
- ;;用法 在程序开始处(aa:ever-err '(各个变量名。。))即可.
- ;;程序不出错就没有变量赋值情况。
- (defun aa:ever-err (lst )
- (setq *olderr* *error* *error* aa:evererr1 *监视变量表* lst)
- )
- (defun aa:evererr1 (x )
- (princ x)
- (aa:ever-err2 *监视变量表*)
- (setq *error* *olderr* *olderr* nil *监视变量表* nil)
- )
- (defun aa:ever-err2 (*监视变量表*)
- (mapcar
- '(lambda(e1 e2)
- (princ (strcat "\n" e1 " = "))
- (prin1 (eval e2))
- )
- (mapcar 'vl-princ-to-string *监视变量表*)
- *监视变量表*
- )
- )
- ;; 1/监视变量
- (defun c:t11 ( / a b c d e f)
- (aa:ever-err '(a b c d e f))
- (setq a 1 b 2 c "3" d 4 e 5 )
- (exit)
- (setq f '(1 2 34))
- )
 - ;;标注的两边长
- (defun c:t11 nil
- (mapcar
- '(lambda(x)
- (entmake
- (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension")
- (cons 10 (car x))
- '(70 . 33) '(1 . "") '(100 . "AcDbAlignedDimension")
- (cons 13 (car x)) (cons 14 (cadr x))
- )
- )
- (entmake
- (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension")
- (cons 10 (cadr x))
- '(70 . 33) '(1 . "") '(100 . "AcDbAlignedDimension")
- (cons 13 (cadr x)) (cons 14 (caddr x))
- )
- )
- )
- (mapcar
- '(lambda(a)
- (mapcar 'cdr
- (vl-remove-if
- '(lambda (b)
- (/= (car b) 10)
- )
- (entget a)
- )
- )
- )
- (vl-remove-if-not
- '(lambda(c) (= (type c) 'ename))
- (mapcar
- 'cadr
- (ssnamex (ssget '((0 . "LWPOLYLINE")(70 . 1))
- )
- )
- )
- )
- )
- )
- )
 - (defun c:t11 (/ PP P1 P2 SS EN ENO I A)
- (princ "\n选择矩形")
- (setq ss (ssget ":l:s" '((0 . "*lwpolyline"))))
- (if ss
- (progn
- (setq i -1)
- (while (setq en (ssname ss (setq i (1+ i))))
- (vla-offset (vlax-ename->vla-object en) 100)
- (setq eno (entlast)
- A 1
- )
- (repeat 2
- (set (read (strcat "P" (itoa A)))
- (mapcar 'cdr
- (vl-remove-if
- '(lambda (b)
- (/= (car b) 10)
- )
- (entget (if (= A 1)
- en
- eno
- )
- )
- )
- )
- )
- (setq A (1+ A))
- )
- (mapcar
- '(lambda (a b)
- (entmake (list '(0 . "line") (cons 10 a) (cons 11 b)))
- )
- P1
- P2
- )
- )
- )
- )
- (princ)
- )
 - ;;提取属性块指定属性值
- ;(T12 '("日期" "你妈" "项目负责人") EN)
- ;用vla-GetAttributes
- ;(vlax-safearray->list(vlax-variant-value(vla-GetAttributes (vlax-ename->vla-object (car(entsel))))))
- (defun t12 (lst en / att atlst)
- ;(if (= :vlax-true (vla-get-hasattributes VLA)) );检查EN合法性
- (setq
- att
- (mapcar
- '(lambda(x)
- (cons (vla-get-tagstring x)(vla-get-textstring x))
- )
- (vlax-invoke (vlax-ename->vla-object en) 'getattributes)
- )
- atlst
- (cons
- (apply
- 'list
- (mapcar
- '(lambda(x)
- (assoc x att)
- )
- lst
- )
- )
- atlst
- )
- )
- )
- ;图签为属性块的提取目录程序
- (defun c:t11 (/ ss a en att th tm mllst)
- (setq ss (ssget '((0 . "INSERT") (66 . 1))) a -1);选中属性块,可再加块名区别
- (if ss
- (while (setq en (ssname ss (setq a (1+ a))
- )
- )
- (setq
- att
- (mapcar
- '(lambda(x) (cons (vla-get-tagstring x)(vla-get-textstring x))
- )
- (vlax-invoke (vlax-ename->vla-object en) 'getattributes)
- )
- )
- (if (and (setq th(assoc "图号" att))(setq tm(assoc "图名" att))
- )
- (setq mllst (cons (cons th tm) mllst))
- )
- )
- )
- ;(if mllst (排序后写出目录))
- )
 - ;;=============={ 返回表m-n之间的所有元素 }===============
- ;;测试: (T66 3 5 '(2334 556 33 44 66 77 22))==> (33 44 66)
- (defun t66 (n m lst / a lst1)
- (setq a 0)
- (vl-member-if
- '(lambda(x) (if (<= n (setq a (1+ a)) m)
- (setq lst1 (cons x lst1))
- )
- (if (> a m) t)
- )
- lst
- )
- (reverse lst1)
- )
- ;;=============={ 返回表第N个元素之后的所有元素 }=================
- ;;测试: (T6 3 '(2334 556 33 44 66 77 22))==> (44 66 77 22)
- (defun t6 (n lst / a nlst l)
- (setq a 0 l (length lst))
- (if (< n (* l 0.65))
- (setq nlst (vl-member-if '(lambda(x)(setq a (1+ a)) (< n a) ) lst))
- (vl-member-if '(lambda(x)(setq l (1- l) nlst (cons x nlst)) (<= l n) ) (reverse lst))
- )
- nlst
- )
|