试试这个:
- (defun c:DimTwo(/ aDoc Space pl ReFL pt pt2 ss)
- (vl-load-com)
- (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
- (setq Space
- (if (= 1 (getvar "CVPORT"))
- (vla-get-PaperSpace aDoc)
- (vla-get-ModelSpace aDoc)
- )
- )
- (prompt "\nSelect Polyline:")
- (if (and
- (setq Pl (ssget ":E:S:L" '((0 . "LWPOLYLINE"))))
- (progn (prompt "\nSelect Reference Line:")
- (setq RefL (ssget ":E:S:L" '((0 . "*LINE"))))
- )
- )
- (progn
- (setq RefL (vlax-ename->vla-object (ssname RefL 0)))
- (foreach pt (mapcar
- 'cdr
- (vl-remove-if-not
- '(lambda (x) (= (car x) 10))
- (entget (ssname pl 0))
- )
- )
- (vla-addDimRotated
- space
- (vlax-3d-point (append pt '(0.0)))
- (vlax-3d-point
- (setq pt2 (vlax-curve-getclosestpointto RefL pt))
- )
- (vlax-3d-point
- (mapcar (function (lambda (a b) (/ (+ a b) 2.))) pt pt2)
- )
- 1.57079633
- )
- )
- )
- )(princ)
- )
希望这有帮助 |