明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1516|回复: 2

[讨论]一段可绘出弹簧的代码,中间有几个不明白的地方

[复制链接]
发表于 2006-4-17 21:43:00 | 显示全部楼层 |阅读模式
  1. ;========================================================================
  2. (defun C:3DSPIRAL (/ olderr ocmd oblp nt bp hg vg sr lp)
  3.   (setq olderr  *error*
  4.         *error* myerror)
  5.   (setq ocmd (getvar "cmdecho"))
  6.   (setq oblp (getvar "blipmode"))
  7.   (setvar "cmdecho" 0)
  8.   (initget 1)                         ; bp must not be null
  9.   (setq bp (getpoint "\nCenter point: "));起始圈圆心
  10.   (initget 7)                         ; nt must not be zero, neg, or null
  11.   (setq nt (getint "\nNumber of rotations: "));弹簧圈数
  12.   (initget 7)                         ; sr must not be zero, neg, or null
  13.   (setq sr (getdist bp "\nStarting radius: "));起始圈半径
  14.   (initget 1)                         ; cf must not be zero, or null
  15.   (setq hg (getdist "\nHorizontal growth per rotation: "));每圈的水平增量,为0时绘出的弹簧粗细均匀
  16.   (initget 3)                         ; cf must not be zero, or null
  17.   (setq vg (getdist "\nVertical growth per rotation: "));每圈的垂直增量,也就是相邻两个圈的距离
  18.   (initget 6)                         ; lp must not be zero or neg
  19.   (setq lp (getint "\nPoints per rotation <30>: "));每圈上设置多少个点,点越多越接近圆。默认值30
  20.   (cond ((null lp) (setq lp 30)))
  21.   (cspiral nt bp hg lp sr vg)
  22.   (setvar "cmdecho" ocmd)
  23.   (setvar "blipmode" oblp)
  24.   (setq *error* olderr)               ; Restore old *error* handler
  25.   (princ)
  26. )
  27. ;==========================================================================
  28. (defun myerror (s)                    ; If an error (such as CTRL-C) occurs
  29.                                       ; while this command is active...
  30.   (if (/= s "Function cancelled")
  31.     (princ (strcat "\nError: " s))
  32.   )
  33.   (setvar "cmdecho" ocmd)             ; Restore saved modes
  34.   (setvar "blipmode" oblp)
  35.   (setq *error* olderr)               ; Restore old *error* handler
  36.   (princ)
  37. )
  38. ;======================================================================
  39. (defun cspiral (ntimes bpoint hfac lppass strad vfac
  40.                 / ang dist tp ainc dhinc dvinc circle dv)
  41.   (setvar "blipmode" 0)               ; turn blipmode off
  42.   (setvar "cmdecho" 0)                ; turn cmdecho off
  43.   (setq circle (* 3.1415926535 2))
  44.   (setq ainc (/ circle lppass))
  45.   (setq dhinc (/ hfac lppass))
  46.   (if vfac (setq dvinc (/ vfac lppass)))
  47.   (setq ang 0.0)
  48.   (if vfac
  49.     (setq dist strad dv 0.0)
  50.     (setq dist 0.0)
  51.   )
  52.   (if vfac
  53.     (command "_3dpoly")               ; start spiral ...
  54.     (command "_pline" bpoint)         ; start spiral from base point and...
  55.   )
  56.   (repeat ntimes
  57.     (repeat lppass
  58.       (setq tp (polar bpoint (setq ang (+ ang ainc))
  59.                       (setq dist (+ dist dhinc))
  60.                )
  61.       )
  62.       (if vfac
  63.           (setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
  64.                 dv (+ dv dvinc)
  65.           )
  66.       )
  67.       (command tp)                    ; continue to the next point...
  68.     )
  69.   )
  70.   (command "")                        ; until done.
  71.   (princ)
  72. )
请问这里面的:
  (initget 1)        
  (initget 7)         
  (initget 7)                 
  (initget 1)            
  (initget 3)                       
  (initget 6)   
有什么作用?
发表于 2006-4-18 10:04:00 | 显示全部楼层

1(位0)

阻止用户仅经过按下  Enter  键来回应要求

2(位1)

阻止用户仅经过键入 0 值来回应要求

4(位2)

阻止用户仅通过键入负值来回应要求

 楼主| 发表于 2006-4-18 20:27:00 | 显示全部楼层

明白了  谢谢老顽童    (我是杨过哦,哈哈  以后是

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-20 01:43 , Processed in 0.241702 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表