试试这个,巴里,让我知道
注意:如果不希望用户选择对象,只需在以下代码中将模式字符串“_:L”更改为“_X”。
- (defun c:Test (/ *error* v l ss doc)
- ;; Tharwat 20. Aug. 2014 ;;
- ;; Hatching closed objects with Solid pattern ;;
- ;; with respect to the color of the objects ;;
- (defun *error* (x)
- (if v
- (mapcar 'setvar '(HPNAME CMDECHO) v)
- )
- (if (wcmatch (strcase x) "*BREAK*,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " x " **"))
- )
- )
- (setq l (entlast)
- v (mapcar 'getvar '(HPNAME CMDECHO))
- )
- (if (setq ss (ssget "_:L" '((0 . "SPLINE"))))
- (progn (mapcar 'setvar '(HPNAME CMDECHO) '("SOLID" 0))
- (setq l (entlast))
- (vla-startUndomark (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))))
- ((lambda (i / sn c o)
- (while (setq sn (ssname ss (setq i (1+ i))))
- (command "_.-hatch" "S" sn "" "")
- (if (not (eq l (setq o (entlast))))
- (if (setq c (assoc 62 (entget sn)))
- (entmod (append (entget o) (list (cons 62 (cdr c)))))
- (entmod (append (entget o) '((62 . 256))))
- )
- )
- (setq l o)
- )
- )
- -1
- )
- (vla-Endundomark doc)
- )
- )
- (*error* nil)
- )(vl-load-com)
|