对不起,所有的帖子!
还有一个更新:
- (defun c:pdis (/ oldlay cCurve cBlock txtpnt index ent dPt1 dPt2 blkDist blklist txt)
- (defun makelay (x)
- (if (not (tblsearch "Layer" x))
- (progn
- (setvar "cmdecho" 0)
- (command "-layer" "m" x "")
- (setvar "cmdecho" 1)
- ) ;_ end progn
- (setvar "CLAYER" x)
- ) ;_ end if
- ) ;_ end defun
- (defun Make_Text (txt_pt txt_val)
- (entmake
- (list '(0 . "TEXT")
- '(8 . "TEXT")
- (cons 10 txt_pt)
- (cons 40 2.5)
- (cons 1 txt_val)
- '(50 . 0.0)
- '(7 . "STANDARD")
- '(71 . 0)
- '(72 . 0)
- '(73 . 0)
- ) ; end list
- ) ; end entmake
- ) ;_ end defun
- (vl-load-com)
- (setq oldlay (getvar "clayer"))
- (if
- (and
- (setq cCurve (entsel "\nSelect curve to measure > "))
- (member (cdr (assoc 0 (entget (car cCurve))))
- '("LINE" "POLYLINE" "LWPOLYLINE" "SPLINE" "ARC" "CIRCLE" "ELLIPSE")
- ) ;_ end member
- ) ; end and
- (progn
- (while
- (and
- (setq cBlock (ssget '((0 . "INSERT"))))
- (setq txtpnt (getpoint "\nSelect Point for Table > "))
- ) ;_ end and
- (makelay "TEXT")
- (setq index (1- (sslength cBlock))
- blklist "\n"
- txt 1
- ) ;_ end setq
- (while (not (minusp index))
- (setq ent (entget (ssname cBlock index))
- dPt1 (cdr (assoc 10 ent))
- dPt2 (vlax-curve-getClosestPointTo (car cCurve) dPt1)
- blkDist (distance dPt1 dPt2)
- ) ;_ end setq
- (setq blklist (strcat (rtos (car dPt1) 2 1)
- ","
- (rtos (cadr dPt1) 2 1)
- " <---> "
- (rtos blkDist 2 1)
- ) ;_ end strcat
- ) ;_ end setq
- (Make_Text (polar txtpnt (* pi 1.5) (* 3.5 txt)) blklist)
- (setq index (1- index)
- txt (1+ txt)
- ) ;_ end setq
- ) ; end while
- ) ;_ end while
- ) ;_ end progn
- (princ "\n<!> Empty selection or this isn't a Curve (line, polyline, etc.) <!> ")
- ) ; end if
- (setvar "clayer" oldlay)
- (princ)
- ) ;_ end defun
|