本帖最后由 q3_2006 于 2013-12-29 14:08 编辑
275437962 发表于 2013-12-29 13:50 
你的程序没有改好,还存在一些问题,结果你还要增加明经币,你觉得你这样子做如何,问题提了那么长时间, ...  - (defun c:tt ( / a ang bnm e en i la len n pe pm ps pts ss sse ssl)
- (vl-load-com)
- (vl-cmdf "undo" "be")
- (if (setq bnm (getstring "\输入块名:"))
- (progn
- (setq len (getdist "\n输入被替换直线的长度:"))
- (setq ang (getangle "\n输入被替换直线的角度:"))
- (setq r (getreal "\n输入虚拟圆的半径:"))
- (setq ss (ssget '((0 . "line"))))
- (setq i -1 ssl (ssadd))
- (while (setq en (ssname ss (setq i (1+ i))))
- (setq len1 (Vlax-Get (Vlax-Ename->Vla-Object en) 'Length )
- ang1 (Vlax-Get (Vlax-Ename->Vla-Object en) 'Angle )
- )
- (if (and (= len1 len) (= ang1 ang))
- (ssadd en ssl)
- )
- )
- (setq n -1)
- (while (setq e (ssname ssl (setq n (1+ n))))
- (progn
- (setq ps (Vlax-Get (Vlax-Ename->Vla-Object e) 'StartPoint )
- pe (Vlax-Get (Vlax-Ename->Vla-Object e) 'EndPoint )
- pm (mapcar '* '(0.5 0.5 0.5) (mapcar '+ ps pe))
- la (Vlax-Get (Vlax-Ename->Vla-Object e) 'Layer )
- )
- (command "circle" pm r)
- (setq a (entlast))
- (setq pts (divpts a 500))
- (setq sse (ssget "cp" pts))
- (command "erase" a sse "")
- (setvar "clayer" la)
- (command "-insert" bnm pm "" "" "")
- (vlax-for X
- (vla-item (vla-get-blocks
- (vla-get-activedocument (vlax-get-acad-object))
- )
- bnm
- )
- (setq el (cons (vlax-vla-object->ename X) el))
- )
- (mapcar '(lambda (x) (VLA-PUT-COLOR (Vlax-Ename->Vla-Object x) 0))el)
-
- )
- )
- )
- )
- (command "_.regen")
- (vl-cmdf "undo" "e")
- )
- (defun divpts (ename n / ename endparam i nparam pt ptlst startparam)
- (setq startparam (vlax-curve-getstartparam ename)
- endparam (vlax-curve-getendparam ename)
- nparam (/ (- endparam startparam) n)
- i -1
- ptlst '()
- )
- (while (<= (setq i (1+ i))
- n
- )
- (setq pt (vlax-curve-getpointatparam ename (* i nparam))
- ptlst (cons pt ptlst)
- )
- )
- (reverse ptlst)
- )
|