试试这段代码,让我知道你的情况。
- (defun c:Test (/ _Line s l e i e1 e2 p)
- ;; Author: Tharwat Al Shoufi ~ 21.Sep.2013 ;;
- (defun _Line (a b)
- (entmakex (list '(0 . "LINE")
- (cons 10 a)
- (cons 11 b)
- '(8 . "MECH-HVAC-FITTING-RED-pnt")
- )
- )
- )
- (if
- (and (if (tblsearch "BLOCK" "REDUCER")
- t
- (progn
- (alert "Block [REDUCER] is not found <!>")
- nil
- )
- )
- (if (tblsearch "LAYER" "MECH-HVAC-FITTING-RED-pnt")
- t
- (progn
- (alert "Layer [MECH-HVAC-FITTING-RED-pnt] is not found <!>")
- nil
- )
- )
- (progn (princ "\n Select Outer Profile [LWPOLYLINE] :")
- (setq s (ssget '((0 . "LWPOLYLINE")
- (-4 . "<OR")
- (90 . 4)
- (90 . 5)
- (-4 . "OR>")
- )
- )
- )
- )
- )
- (repeat (setq i (sslength s))
- (setq e (entget (ssname s (setq i (1- i))))
- l (mapcar 'cdr
- (vl-remove-if-not '(lambda (u) (eq (car u) 10)) e)
- )
- )
- (if (setq p (vlax-invoke
- (vlax-ename->vla-object (_Line (car l) (caddr l)))
- 'intersectWith
- (vlax-ename->vla-object (_Line (cadr l) (nth 3 l)))
- acExtendnone
- )
- )
- (entmakex (list '(0 . "INSERT")
- (cons 10 p)
- '(2 . "REDUCER")
- '(8 . "MECH-HVAC-FITTING-RED-pnt")
- '(41 . 1.)
- '(42 . 1.)
- '(43 . 1.)
- )
- )
- )
- )
- )
- (princ)
- )
|