提问得不清不楚,暂且按照我的理解给你几句代码吧
- ;;获取矩形长宽
- (defun c:tt (/ area di ename gao kuan pts x)
- (setq ename(car(entsel"\n选择一个矩形")))
- (while (or
- (/= "LWPOLYLINE" (_get-dxf ename 0))
- (/= 4 (length(setq pts(_Vertexs ename))))
- (setq di (mapcar '(lambda(a b)(distance a b))pts (cons (last pts)pts))
- kuan(car di)
- gao(cadr di)
- area(try-get-aear ename)
- x(not(equal (* kuan gao) area))
- )
- )
- (setq ename (car(entsel "\n只能选择矩形多段线,请重新选择")))
- )
-
- (princ(strcat"\n长:"(rtos kuan 2 2)",宽:"(rtos gao 2 2)))
- (princ)
- )
- ;;字符串批量替换
- (defun c:tt2 (/ str)
- (setq str "123456123456123456")
- (try-StringReplace str "123" "000")
- )
- ;;;======================================
- ;;;===========以下为内裤部分=============
- ;;;======================================
- (defun _get-dxf (en code / ty)
- (cdr (assoc code (entget en '("*"))))
- )
- (defun _Vertexs (ename / data lst);
- (setq data (entget ename))
- (setq lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) data))
- (mapcar 'cdr lst)
- )
- (defun try-get-aear (en)(vla-get-Area(try-object en)))
- (defun try-StringReplace(str a b);;BY:LLSheng_73
- (if(and(=(type str)'str)
- (apply'and(mapcar'(lambda(x)(=(type x)'str))(setq a(if(=(type a)'list)a(list a)))))
- (apply'and(mapcar'(lambda(x)(=(type x)'str))(setq b(if(=(type b)'list)b(mapcar'(lambda(x)b)a))))))
- (setq str(_strsplit str a nil)
- str(apply'strcat(mapcar'strcat(car str)(mapcar'(lambda(x)(if(=""x)x(nth(vl-position x a)b)))(last str)))))
- str))
- (defun try-ss2EnList(ss / a en lst)
- (setq a -1)
- (if ss
- (while
- (setq en(ssname ss(setq a(1+ a))))
- (setq lst(cons en lst))
- )
- )
- (reverse lst)
- )
- (defun try-lst-div (lst nn / lst2)
- (foreach n lst
- (if (and lst2 (/= nn (length (car lst2))))
- (setq lst2 (cons (append (car lst2) (list n)) (cdr lst2)))
- (setq lst2 (cons (list n) lst2))
- )
- )
- (reverse lst2)
- )
- (defun try-object (en)(if(= 'ename (type en))(vlax-ename->vla-object en)en))
- (defun _strsplit(str splits f / i a b l );;BY:LLSheng_73
- (if f(setq str(vl-list->string(vl-remove 32(vl-string->list str)))))
- (while(<""str)
- (if(vl-remove'nil(mapcar'(lambda(x)(vl-string-search x str))splits))
- (setq i(car(vl-sort(vl-remove'nil(mapcar'(lambda(x)(if(setq l(vl-string-search x str))(cons l x)))splits))
- '(lambda(s1 s2)(<(car s1)(car s2)))))
- a(cons(substr str 1(car i))a)b(cons(cdr i)b)
- str(substr str(+(car i)(strlen(cdr i))1)))
- (setq a(cons str a)b(cons "" b)str"")))
- (list(reverse a)(reverse b)))
|