路基水泥搅拌桩(CLRCLE)坐标导出并编号 ,73哥函数- (defun makepl(argments);;argments==>(list pts 闭合标志 全局宽度 线宽 图层 颜色 厚度 线型)pts以后可省略
- (entmakex(append(mapcar'cons'(0 100 100 43 370 8 62 39 6)(append'("LWPOLYLINE""AcDbEntity""AcDbPolyline")(cddr argments)))
- (cons(cons 90(length(car argments)))
- (cons(cons 70(if(cadr argments)(cadr argments)0))(mapcar'(lambda(x)(cons 10 x))(car argments)))))))
- (defun poinpl(p pt);;:点是否在指定点表内
- (equal(abs(apply'+(mapcar'(lambda(x y)(rem(-(angle x p)(angle y p))pi))pt(cons(last pt)pt))))pi 1e-8))
- (defun plinexy(e)
- (mapcar'cdr(vl-remove-if'(lambda(x)(/=(car x)10))(entget e)))
- )
- (defun SsgetW(arg / a);;选择指定矩形区域内(不限屏幕范围)
- (ssget"X"(apply'append(list'((-4 . "<and")(-4 . ">=,>="))
- (setq a(list(car arg)(cadr arg))
- a(mapcar'(lambda(x)(mapcar x a))'(car cadr))
- a(mapcar'(lambda(y)(cons 10(mapcar'(lambda(x)(apply y x))a)))'(min max))
- a(list(car a)'(-4 . "<=,<=")(cadr a)))
- (cddr arg)
- '((-4 . "and>")))))
- )
- (defun SsgetCP(arg / a i pt s b);;根据多线段图元名或者其坐标点表进行(ssget"CP"...)但不限屏幕范围
- (if(listp(setq a(car arg)))
- (setq pt a a(vlax-ename->vla-object(makepl(list pt))))
- (setq pt(plinexy a)a(vlax-ename->vla-object a)))
- (if(setq i -1
- s(SsgetW(append(mapcar'(lambda(x)(mapcar'(lambda(y)(apply x y))
- (mapcar'(lambda(x)(mapcar x pt))'(car cadr))))'(min max))(cdr arg)))
- s(if(SSMEMB(vlax-vla-object->ename a)s)(ssdel(vlax-vla-object->ename a)s)s))
- (repeat(sslength s)
- (setq i(1+ i)e(ssname s i))
- (if(not(or(>(vlax-safearray-get-u-bound(vlax-variant-value(vla-intersectwith(vlax-ename->vla-object e)a 0))1)1)
- (poinpl(cdr(assoc 10(entget e)))pt)))
- (setq b(cons e b)))))
- (if(listp(car arg))(vla-Delete a))
- (foreach a b(setq s(ssdel a s)))s)
- (defun SsgetWP(arg / a i pt s b);;根据多线段图元名或者其坐标点表进行(ssget"WP"...)但不限屏幕范围
- (if(listp(setq a(car arg)))
- (setq pt a a(vlax-ename->vla-object(makepl(list pt))))
- (setq pt(plinexy a)a(vlax-ename->vla-object a)))
- (if(setq i -1
- s(SsgetW(append(mapcar'(lambda(x)(mapcar'(lambda(y)(apply x y))
- (mapcar'(lambda(x)(mapcar x pt))'(car cadr))))'(min max))(cdr arg)))
- s(if(SSMEMB(vlax-vla-object->ename a)s)(ssdel(vlax-vla-object->ename a)s)s))
- (repeat(sslength s)
- (setq i(1+ i)e(ssname s i))
- (if(or(>(vlax-safearray-get-u-bound(vlax-variant-value(vla-intersectwith(vlax-ename->vla-object e)a 0))1)1)
- (not(poinpl(cdr(assoc 10(entget e)))pt)))
- (setq b(cons e b)))))
- (if(listp(car arg))(vla-Delete a))
- (foreach a b(setq s(ssdel a s)))s)
- ;;;
- (defun maketext (zb gd / cld )
- (setq cld (polar zb (* 0.25 pi) (* 2 gd) ))
- (entmake (list
- '(0 . "LINE")
- '(67 . 0)
- '(8 . "0")
- (list 10 (car zb) (cadr zb) 0)
- (cons 11 cld )
- '(210 0.0 0.0 1.0)
- )
- )
- ;;;
- (entmake (list
- '(0 . "LINE")
- '(67 . 0)
- '(8 . "0")
- (cons 10 cld)
- (cons 11 ( polar cld 0 (* 10 gd)) )
- '(210 0.0 0.0 1.0)
- )
- )
- ;;;;
- (entmake (list
- '(0 . "text")
- (list 10 (+ (car cld) gd) (car(cdr cld)) )
- (cons 40 gd)
- (cons 1 ( strcat "X=" (rtos (cadr zb) 2 3)))
- '(50 . 0)
- )
- )
- (entmake (list
- '(0 . "text")
- (list 10 (+ (car cld) gd)
- (- (car(cdr cld)) (+ gd (/ gd 3)) )
- )
- (cons 40 gd)
- (cons 1 (strcat "Y="(rtos (car zb) 2 3)))
- '(50 . 0)
- )
- )
- (princ)
- )
- ;
- (defun maketext1 (zb gd / cld )
- (setq cld (polar zb (* 0.25 pi) (* 2 gd) ))
- (entmake (list
- '(0 . "LINE")
- '(67 . 0)
- '(8 . "0")
- (list 10 (car zb) (cadr zb) 0)
- (cons 11 cld )
- '(210 0.0 0.0 1.0)
- )
- )
- ;;;
- (entmake (list
- '(0 . "LINE")
- '(67 . 0)
- '(8 . "0")
- (cons 10 cld)
- (cons 11 ( polar cld 0 (* 10 gd)) )
- '(210 0.0 0.0 1.0)
- )
- )
- ;;;;
- (entmake (list
- '(0 . "text")
- (list 10 (+ (car cld) gd) (car(cdr cld)) )
- (cons 40 gd)
- (cons 1 ( strcat "X=" (rtos (/ (cadr zb) 1000) 2 3)))
- '(50 . 0)
- )
- )
- (entmake (list
- '(0 . "text")
- (list 10 (+ (car cld) gd)
- (- (car(cdr cld)) (+ gd (/ gd 3)) )
- )
- (cons 40 gd)
- (cons 1 (strcat "Y="(rtos (/ (car zb) 1000) 2 3)))
- '(50 . 0)
- )
- )
- (princ)
- )
- ;货物分两组(样品 库存)
- (defun lst->2lst(lst / lst1 lst2)
- (setq lst1 '() lst2 '())
- (foreach a lst
- (if (member a lst2)
- (setq lst1 (cons a lst1))
- (setq lst2 (cons a lst2))
- )
- )
- (cons (reverse lst2) (reverse lst1))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:gczbh1 (/ p qianzhui blc zg ss i lstt e kkkk ptlst ff sjzb xx ee zhuobiao lst )
- (setq blc (getint "\n请输入比例尺1:"))
- (setvar 'userr1 blc);设置比例尺
- (setq zg(* 0.002 blc));字高
- (setq ss (SsgetWP (list(car (entsel))'(0 . "circle") )) )
- (setq i 0)
- (setq lst '())
-
-
- (repeat (sslength ss)
- (setq insert_name (ssname ss i))
- (setq sjzb (cdr (assoc 10(entget insert_name))))
-
- ;(setq e(get_inpoint insert_name))
-
- (setq lst (append lst (list sjzb)))
-
- (setq i (1+ i))
- )
- ;(setq ptlst (HH:ssPts:Sort lst "xyz" 0.0))
- ;@树櫴希德 点表按照特定点逆时针排序~
- (setq p (getpoint "\n指定排序方向"))
- (setq qianzhui (getstring "\n请输入前缀:"))
- ;(setq ptlst(mapcar 'cdr (vl-sort (mapcar 'cons (mapcar '(lambda(x) (angle x p)) lst) lst) '(lambda (x y) (< (car x) (car y))))))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (setq ptlst (vl-sort (car (lst->2lst (reverse lst)))
- ;以下根据x坐标对表排序
- '(lambda (e1 e2)
- (< (car e1) (car e2) )
- (= (angle e1 p)) ) ) )
- ;;;;;;;;;;;;;;;;;-----------------------------------
- (initget "1 2")
- (prompt "\n坐标是否缩小1000倍:")
- (setq kkkk (getkword "\n 1. 不用缩小1000倍 \ 2. 缩小1000倍:<1>"))
- (if (= kkkk nil) (setq kkkk "1"))
- (setq ii 1)
- (setq ff (open (getfiled "请输入要保存的数据文件名" "" "dat" 1) "w"))
- ( cond ((= kkkk "1")
- (progn
- (foreach n ptlst
- (entmake (list '(0 . "text") (cons 10 n) '(7 . "HZ") (cons 40 (* 1 zg))(cons 1 (strcat qianzhui (rtos ii 2 0)) )))
- (maketext n (* 1 zg))
- (write-line (strcat qianzhui (vl-princ-to-string ii)"," ","(vl-princ-to-string (car n)) ","(vl-princ-to-string (cadr n))","(vl-princ-to-string (caddr n))
- ) ff)
-
- (setq ii (1+ ii))
- ) (close ff) ))
- ( (= kkkk "2")
- (progn
- (foreach n ptlst
- (entmake (list '(0 . "text") (cons 10 n) '(7 . "HZ") (cons 40 (* 1000 zg))(cons 1 (strcat qianzhui (rtos ii 2 0)) )))
- (maketext1 n (* 1000 zg))
- (write-line (strcat qianzhui (vl-princ-to-string ii)"," ","(vl-princ-to-string (/ (car n) 1000)) ","(vl-princ-to-string (/ (cadr
- n) 1000))","(vl-princ-to-string (/ (caddr n) 1000))
- ) ff)
-
- (setq ii (1+ ii))
- ) (close ff)
- )
- )
-
- )
-
-
- )
|