- (DEFUN TEST( / ename1 ename2 rad basrad enlast PT1 PT2 ang ang1 ang2 ptc)
- (setq ename1 (entsel "\n请选择对象1")
- ename2 (entsel "\n请选择对象2")
- rad (getreal "\n请输入切线长:")
- )
- (if (and rad ename1 ename2 (not (eq ename1 ename2)))
- (progn
- (setq basrad (getvar"filletrad"))
- (setvar "filletrad" 1)
- (command ".fillet" ename1 ename2)
- (setq enlast (entlast) DXF (ENTGET ENLAST))
- (if (= "ARC" (CDR (ASSOC 0 DXF)))
- (PROGN
- (SETQ PT1 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 50 DXF)) (CDR (ASSOC 40 DXF))))
- (SETQ PT2 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 51 DXF)) (CDR (ASSOC 40 DXF))))
- (command "_.erase" enlast "")
- (setq ang1 (CDR (ASSOC 50 DXF)) ang2 (CDR (ASSOC 51 DXF)))
- (if (> ang1 ang2)
- (setq ang1 (- ang1 (* pi 2.0)))
- )
- (setq ang (/ (- ang2 ang1) 2))
- (setvar "filletrad" (/ rad (/ (sin ang) (cos ang))))
- (command ".fillet" ename1 ename2)
- )
- (setvar "filletrad" basrad)
- )
- )
- )
- (princ)
- )
|