明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2704|回复: 1

新手问题(急等)

[复制链接]
发表于 2011-12-5 14:24:43 | 显示全部楼层 |阅读模式
本帖最后由 qcw911 于 2011-12-5 14:26 编辑

     ;20111205 qiuw1
(defun err (s)    ;
  (if (and (/= s "console break")
    (/= s "Function cancelled")
    (/= s "quit/exit abort")
      )
    (progn (setvar "osmode" oldos)
    (setvar "cmdecho" oldcmd)
    (setq *error* olderr)
    (command "UNDO" "E")
    (princ (strcat "\n出错退出:" s))
    )
  )
)
(defun mid (pts pte)   ;
  (setq p1x (car pts))
  (setq p1y (cadr pts))
  (setq p2x (car pte))
  (setq p2y (cadr pte))
  (setq px (/ (+ p1x p2x) 2))
  (setq py (/ (+ p1y p2y) 2))
  (setq mpt (list px py))
)
(defun make_line (pts pte)  ;
  (command "line" pts pte "")
)
(defun make_line_ang (pt ang)  ;
  (setq
    pts pt
    pte (polar pts (+ s_ang ang) (/ Stair_width (cos (dtor 30))))
  )
  (make_line pts pte)
)
     ;
(defun dtor (ang) (/ (* ang PI) 180))
(defun c:lt (/)
  (command "undo" "BE")
  (setq oldos (getvar "osmode")
oldcmd (getvar "cmdecho")
oldlay (getvar "CLAYER")
olderr *error*
*error* err
  )
  (setvar "cmdecho" 0)
  (setvar "clayer" oldlay)
  (setq pt1 (getpoint "\nonepoint:"))
  (setq pt2 (getcorner pt1 "\ntowpoint:"))
  (setq dist_pt1_pt2 (distance pt1 pt2))
  (setq s_ang (angle pt1 pt2))
  (setq Stair_width (* dist_pt1_pt2 (sin (- s_ang (dtor 90)))))
  (setq pt3 (polar pt2 0 Stair_width))
  (setq Stair_heigth (* dist_pt1_pt2 (cos (- s_ang (dtor 90)))))
  (setq s_ang 0)
  (setq pt (polar pt2 (+ s_ang (dtor 315)) (* Stair_width (sqrt 2))))
;;;  (command "circle" pt 30 "")
  (if (> Stair_width 800.0)
    (progn
      (setq Stepping_width 200.0)
    )
    (setq Stepping_width 227.5)
  )
  (setq dist_pt3_pt (distance pt3 pt))
  (setq dist_pt3_pt1 (distance pt3 pt1))
  (setq Bench_DN (/ (- dist_pt3_pt1 dist_pt3_pt 120) Stepping_width))
(progn
    (setq pt1 (polar pt (+ s_ang (* 1.5 pi)) 60)
   pt2 (polar pt1 (+ s_ang pi) Stair_width)
    )
    (make_line pt1 pt2)
    (setq
      pt4 (polar pt1 (+ s_ang (* 1.5 pi)) (* Bench_DN Stepping_width))
    )
    (command "circle" pt3 30 "")
    (setq n 0)
    (repeat Bench_DN
      (setq pt5 (polar pt4 (+ s_ang (* 0.5 pi)) (* n Stepping_width))
     pt6 (polar pt5 (+ s_ang pi) Bench_width)
      )
      (make_line pt5 pt6)
      (setq n (1+ n))
    )
)




)

测试的时候说repeat有问题
不知道是为什么
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-12-5 14:59:39 | 显示全部楼层
请先试
   (setq n 0)
    (setq Bench_DN (fix (abs Bench_DN)))   ; Add this line
    (repeat  Bench_DN
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-10 20:56 , Processed in 0.181576 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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