(defun
c:pdim(/ plSet pLlst vLst vLst0 vLst1 oldOsn cAng cDis cPt index)
(princ
"\n<<< Select LwPolyline for dimensioning >>> ")
(if(setq
plSet(ssget '((0 . "LWPOLYLINE"))))
      (progn
            (setq index -1
                    oldOsn(getvar "OSMODE")
            )
            (setq pLlst(vl-remove-if 'listp
(mapcar 'cadr(ssnamex plSet))))
            (setvar "OSMODE" 0)
            (setvar "CMDECHO" 0)
            (foreach pl pLlst
                  (setq vLst(mapcar 'cdr
(vl-remove-if-not '(lambda(x)(= 10(car x)))(entget pl)))  
                          reg (ssname plSet (setq index (1+ index)))
                  ); end setq
                  ;(print vLst) ;original points
list
                  (if (and(= (car (nth 0
vLst))(car (nth (1- (length vLst)) vLst)))
                              (= (cadr (nth 0
vLst))(cadr (nth (1- (length vLst)) vLst)))
                        )
                        (setq vLst1 vLst)
                        ;(progn
                              (if (= (cdr (assoc
70 (entget reg))) 1)
                                    (progn                                    
                                          (setq
vLst1 vLst)
                                          (setq
vLst0 (list (car(nth 0 vLst))(cadr(nth 0 vLst))))
                                          (setq
vLst1 (reverse (cons vLst0 (reverse vLst1))))
                                    )
                                    (setq vLst1
vLst)
                              )
                        ;)
                  )
                  ;(print vLst1) ;after check
points list
                  (while(< 1(length vLst1))
                        (setq cAng(angle(car
vLst1)(cadr vLst1))
                                cDis(/(distance(car vLst1)(cadr vLst1))2)
                                cPt(polar (polar(car vLst1)cAng cDis) (+
cAng(/ pi 2)) (* 2 (getvar "DIMTXT")))
                        ); end setq
                        (command
"_.dimaligned"(car vLst1)(cadr vLst1) cPt)
                        (setq vLst1(cdr vLst1))
                  ); end while
            ); end foreach
            (setvar "OSMODE" oldOsn)
            (setvar "CMDECHO" 1)
    ); end progn
); end if
(princ)
); end of
c:pdim
 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น