找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 465|回复: 0

[文章]:3d弹簧编程例子!!!

[复制链接]
发表于 2004-6-7 00:50:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(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.141596235 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)
)

;;;
;;;       Interactive spiral generation
;;;

(defun C:SPIRAL (/ olderr ocmd oblp nt bp cf 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 3)                         ; cf must not be zero, or null
  (setq cf (getdist "\nGrowth per rotation: "))
  (initget 6)                         ; lp must not be zero or neg
  (setq lp (getint "\nPoints per rotation <30>: "))
  (cond ((null lp) (setq lp 30)))
  (cspiral nt bp cf lp nil nil)
  (setvar "cmdecho" ocmd)
  (setvar "blipmode" oblp)
  (setq *error* olderr)               ; Restore old *error* handler
  (princ)

)

;;;
;;;       Interactive spiral generation
;;;

(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: "))
  (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>: "))
  (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)

)

;;; --------------------------------------------------------------------------;
(princ "\n\tC:SPIRAL and C:3DSPIRAL loaded. ")
(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 05:31 , Processed in 0.497624 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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