 - ;========================================================================
- (defun C:3DSPIRAL (/ olderr ocmd oblp nt bp hg vg sr lp)
- (setq olderr *error*
- *error* myerror)
- (setq ocmd (getvar "cmdecho"))
- (setq oblp (getvar "blipmode"))
- (setvar "cmdecho" 0)
- (initget 1) ; bp must not be null
- (setq bp (getpoint "\nCenter point: "));起始圈圆心
- (initget 7) ; nt must not be zero, neg, or null
- (setq nt (getint "\nNumber of rotations: "));弹簧圈数
- (initget 7) ; sr must not be zero, neg, or null
- (setq sr (getdist bp "\nStarting radius: "));起始圈半径
- (initget 1) ; cf must not be zero, or null
- (setq hg (getdist "\nHorizontal growth per rotation: "));每圈的水平增量,为0时绘出的弹簧粗细均匀
- (initget 3) ; cf must not be zero, or null
- (setq vg (getdist "\nVertical growth per rotation: "));每圈的垂直增量,也就是相邻两个圈的距离
- (initget 6) ; lp must not be zero or neg
- (setq lp (getint "\nPoints per rotation <30>: "));每圈上设置多少个点,点越多越接近圆。默认值30
- (cond ((null lp) (setq lp 30)))
- (cspiral nt bp hg lp sr vg)
- (setvar "cmdecho" ocmd)
- (setvar "blipmode" oblp)
- (setq *error* olderr) ; Restore old *error* handler
- (princ)
- )
- ;==========================================================================
- (defun myerror (s) ; If an error (such as CTRL-C) occurs
- ; while this command is active...
- (if (/= s "Function cancelled")
- (princ (strcat "\nError: " s))
- )
- (setvar "cmdecho" ocmd) ; Restore saved modes
- (setvar "blipmode" oblp)
- (setq *error* olderr) ; Restore old *error* handler
- (princ)
- )
- ;======================================================================
- (defun cspiral (ntimes bpoint hfac lppass strad vfac
- / ang dist tp ainc dhinc dvinc circle dv)
- (setvar "blipmode" 0) ; turn blipmode off
- (setvar "cmdecho" 0) ; turn cmdecho off
- (setq circle (* 3.1415926535 2))
- (setq ainc (/ circle lppass))
- (setq dhinc (/ hfac lppass))
- (if vfac (setq dvinc (/ vfac lppass)))
- (setq ang 0.0)
- (if vfac
- (setq dist strad dv 0.0)
- (setq dist 0.0)
- )
- (if vfac
- (command "_3dpoly") ; start spiral ...
- (command "_pline" bpoint) ; start spiral from base point and...
- )
- (repeat ntimes
- (repeat lppass
- (setq tp (polar bpoint (setq ang (+ ang ainc))
- (setq dist (+ dist dhinc))
- )
- )
- (if vfac
- (setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
- dv (+ dv dvinc)
- )
- )
- (command tp) ; continue to the next point...
- )
- )
- (command "") ; until done.
- (princ)
- )
请问这里面的:
(initget 1)
(initget 7)
(initget 7)
(initget 1)
(initget 3)
(initget 6)
有什么作用?
|