 - (defun c:t0( / pt_list)
- (setvar "cmdecho" 0)
- (Poly-->PL)
- (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (if (= ss nil)
- (progn
- (alert "请选择多段线!!")
- (c:t0)
- )
- )
- (ent_ss ss)
- (princ)
- )
- (defun Poly-->PL();;二维多段线转多段线
- (princ "\n 二维多段线转多段线<按任意字符跳过>")
- (setq Poly_ss (ssget '((0 . "POLYLINE"))))
- (if Poly_ss
- (progn
- (command "convert" "p" "s" Poly_ss "")
- )
- )
- (princ)
- )
- (defun ent_ss(ent / ss_len n ent_name ent_list ent_len)
- (setq ss_len (sslength ent))
- (setq n 0)
- (repeat ss_len
- (setq ent_name (ssname ent (1- ss_len)))
- (setq ent_list (entget ent_name))
- (setq ent_len (length ent_list))
- (foreach ls_pt ent_list
- (if (= (car ls_pt) 10)
- (setq pt_list (append pt_list (list (cdr ls_pt))))
- )
- )
- (rig pt_list)
- (setq ss_len (1- ss_len))
- )
- )
- ;;=======判断==========
- (defun rig (lst / pt0 pt1 pt2 pt3 ptx1 ptx2 ptx3 pty1 pty1 pty1 a az b bz c cz ay by cy n pt_len)
- (setq pt_len (length lst))
- (repeat pt_len
- (setq pt0 (nth (1- pt_len) pt_list))
- (setq n ( - pt_len 4))
- (if (>= n 0)
- (progn
- (setq pt1 (nth (- pt_len 2) pt_list))
- (setq pt2 (nth (- pt_len 3) pt_list))
- (setq pt3 (nth (- pt_len 4) pt_list))
- (setq ptx0 (car pt0) ptx1 (car pt1) ptx2 (car pt2) ptx3 (car pt3))
- (setq pty0 (cadr pt0) pty1 (cadr pt1) pty2 (cadr pt2) pty3 (cadr pt3))
- (type_P)
- (b_P)
- )
- )
- (setq pt_len (1- pt_len))
- )
- )
- (defun type_P ()
- (setq a (abs (- ptx1 ptx0)) b (abs (- pty2 pty1)) c (abs (- ptx3 ptx2)))
- (setq az (abs (- a 10.5)) bz (abs (- b 10.1)) cz (abs (- c 15.6)))
- (setq ay (abs (- a 1.6)) by (abs (- b 1.1)) cy (abs (- c 0.5)))
-
- (setq d (abs (- pty1 pty0)) e (abs (- ptx2 ptx1)) f (abs (- pty3 pty2)))
- )
- (defun b_P()
- (cond ((and (< az 0.109) (< bz 0.01) (< cz 0.0)) (command "-insert" "*A.dwg" pt0 "" ""))
- ((and (< ay 0.991) (< by 0.01) (< cy 0.01)) (command "-insert" "*B.dwg" pt3 "" ""));块是放在支持路径下面
- ;;(此处省略多次cond判断,和上面2句一样,按需求判断后插入不同名称的块,注意是不同名称。不是同一个块,,,太多了就不写了,我也是临时写的。就是这里插入过程会显示 "所选对象过多")
-
- )
- (princ)
- )
;;;;顺便问一下,插入块名称前面为什么一定要带*,不带就会要求手动选基点/角度。 |