首先将Excel文件另存为csv格式,以便能够使用以下程序进行选择,因为GetField函数不支持其他Excel格式。
其次,试试这个程序,让我知道
- (defun c:test (/ ss s f o ex x)
- ;; Tharwat 08.01.2014 ;;
- (cond
- ((not (setq
- ss
- (ssget
- "_X"
- (list '(0 . "INSERT") '(66 . 1) (cons 410 (getvar 'CTAB)))
- )
- )
- )
- (alert "No Attributed Blocks found in drawing !!")
- )
- ((and (setq f (getfiled "Select Excel file :"
- (getvar 'DWGPREFIX)
- "csv"
- 16
- )
- )
- (setq o (open f "r"))
- )
- (read-line o)
- (while (setq x (read-line o))
- (setq l (cons (if (setq ex (vl-string-search
- ";"
- x
- )
- )
- (substr x
- 1
- ex
- )
- x
- )
- l
- )
- )
- )
- (close o)
- (setq s (ssadd))
- (repeat (setq i (sslength ss))
- (mapcar '(lambda (a)
- (if (member (vla-get-textstring a) l)
- (ssadd sn s)
- )
- )
- (vlax-invoke
- (vlax-ename->vla-object
- (setq sn (ssname ss (setq i (1- i))))
- )
- 'getattributes
- )
- )
- )
- )
- )
- (sssetfirst nil s)
- (princ)
- )
|