本帖最后由 sicky111 于 2013-5-16 16:47 编辑
这段程式在2004、2012、2013下测试都没有问题;在2008下测试,到了trim那里会出问题,程式不能继续运行下去,但是在2008下单节测试时又是OK的,非常奇怪,研究了两天,都没办法找出症结所在,请求高手指点一下。
 - (defun c:tt ()
- (vl-load-com)
- (setq osm (getvar "osmode"))
- (setvar "osmode" 0)
- (setvar "CMDECHO" 0)
- (setq ent (car (entsel "\n选择一个物体:")))
- (tt_main)
- (command ".rectang" "none" pt1 "none" pt2)
- (setq obj (vlax-ename->vla-object (entlast)))
- (vla-offset obj 5)
- (vla-delete obj)
- (setq ent (entlast))
- (tt_main)
- (setq pt3 (polar pt1 0 a)
- pt4 (polar pt2 pi a)
- )
- (command ".fillet" "R" 3 ".fillet" "P" "L")
- (command ".trim" "L" "" (polar pt2 (* pi 1.25) 1.2426) "")
- (command ".line" (polar pt2 pi 3) (polar pt2 (* pi 1.5) 3) "")
- (command ".pedit" ent "J" (entlast) "" "")
- (setvar "osmode" osm)
- (setvar "CMDECHO" 1)
- (princ)
- )
- (defun xd_GetObjectBoundingBox (ename / ll ur)
- (vla-GetBoundingBox (vlax-ename->vla-object ename) 'll 'ur)
- (list
- (vlax-safearray->list ll)
- (vlax-safearray->list ur)
- )
- )
- (defun tt_main ()
- (setq pt (xd_GetObjectBoundingBox ent)
- pt1 (car pt)
- pt2 (cadr pt)
- mpt (mapcar '(lambda (a b) (/ (+ a b) 2)) pt1 pt2)
- a (fix (abs (- (car pt1) (car pt2))))
- b (fix (abs (- (cadr pt1) (cadr pt2))))
- pt1 (polar (polar mpt pi (* a 0.5)) (* pi 1.5) (* b 0.5))
- pt2 (polar (polar mpt 0 (* a 0.5)) (* pi 0.5) (* b 0.5))
- )
- )
|