QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
5天前
查看: 2947|回复: 13
收起左侧

[已解决] 请问下这个程序出什么问题了

[复制链接]
发表于 2011-5-21 21:43:17 | 显示全部楼层 |阅读模式 来自: 中国广东广州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
本帖最后由 janekou 于 2011-5-23 07:32 编辑 3 w- z" K; _6 o* r
- K% C! w# X6 J2 O+ c
程序怎么出来是一条直线呢?书本也是这样的,谢谢各位指点一下
  1. (defun C:15()
    0 ^  `2 B4 K5 x' Z: ^0 W
  2. (setq pa (getpoint "请输入三角形左下的点:"
    & \+ I, ~- @& S
  3. (setq ww (getreal "\n 输入底边长度:"# P' f& a# R5 X
  4. (setq kk (getreal "\n 输入斜边长度:"
    ; u0 V9 C; ]8 a% r* c2 Q6 _/ I
  5. (setq pb (polar pa 0 ww))
    1 x! W- D# C8 C2 p# g
  6. (setq hh (sqrt (- (* kk kk) (* ww ww))))& _" t1 Z% N' W5 j/ y& f& {0 h

  7. 3 u1 C6 E$ ]& E
  8. (command "pline" pa pb pc "c"  s6 U- q" N% V% V0 C" o
  9. (princ "\n 另一边hh的长度=" (princ hh)
    - u9 d- k3 y) S+ J4 s) b
  10. (setq ang_pb (atan (/ hh ww)))
    ! W: x4 z. m' Y4 z+ n: H6 I
  11. (setq ang_pb (* atan_pb (/ 180 pi)))
    ; G1 C- a0 Y# c- \8 j
  12. (setq ang_pc (- 90 ang_pb))
    4 r1 U# L6 F6 l1 @6 X" s
  13. (princ "\n pb的夹角="
    " p! G: O- t0 j, n. t
  14. (princ ang-pb)
    0 I0 y- L( M# O3 E! h
  15. (princ "度"( |% [+ s7 o4 Q; P# @
  16. (princ "\n pc的夹角=" + D6 U, a0 T( W+ d! o
  17. (princ ang-pc) " }0 T6 N& v1 B2 z
  18. (princ "度"
    ( [6 J3 I( V9 }9 P, I" M% o$ x9 W8 Y, U
  19. )
    - e# j" A7 a5 x/ e0 R* T2 `
  20. (prompt "\n 自动完成 "3 i+ s, `8 e6 V$ r! R6 p. S% c7 R
  21. (prin1)7 ~5 S/ N! J9 z+ X! y6 b9 g3 Q
复制代码
AGZ)G_OQY4~4M]5MJ)LGRRW.jpg
发表于 2011-5-21 22:26:43 | 显示全部楼层 来自: 中国台湾
(setq ang_pb (* atan_pb (/ 180 pi)))
7 N4 M" o+ e7 `(princ ang-pb)
/ e, ~8 U6 Z- t0 N1 v9 K(princ ang-pc)

) U5 x/ P+ P7 q! p9 P: k, W' Q==============, ^1 A% |: M8 z8 q. j

  1. $ e9 l1 c5 J% U" w' ?- r' C
  2. (defun C:15 ()) T$ ~  D  G0 @" Z9 D
  3.   (setq pa (getpoint "请输入三角形左下的点:"))( X- z) C; J8 ]0 Q+ W3 z1 f" l
  4.   (setq ww (getreal "\n 输入底边长度:"))
    " I6 a. e. g  U9 q2 g! a& b
  5.   (setq kk (getreal "\n 输入斜边长度:"))( W) q3 Z9 E: w
  6.   (setq pb (polar pa 0 ww))( ]' G4 u/ K0 j& \
  7.   (setq hh (sqrt (- (* kk kk) (* ww ww))))
    0 q  p7 A2 Q; U2 C
  8.   (setq pc (polar pa (/ pi 2) hh))8 U- B! l5 }4 [7 z* _* R
  9.   
    + }, g' {- ?9 B* o& ?7 u. D
  10.   ;; (setvar "OsMode" 0)  ;捕捉. K" u; t& |( o7 b/ I6 S
  11.   (command "pline" pa pb pc "c")
    4 A* D+ q. |9 p6 X" ~
  12.   (princ "\n 另一边hh的长度=")
    . N% W0 G0 U, Z5 q, v4 D6 T
  13.   (princ hh)8 u) r9 w$ W7 {* c* y
  14.   (setq ang_pb (atan (/ hh ww)))
    + N5 L; K7 ]( J% J
  15.   (setq ang_pb (* ang_pb (/ 180 pi)))
    3 {2 m' D1 M* j9 }% O
  16.   (setq ang_pc (- 90 ang_pb))* D1 P( j+ |& @4 g, E
  17.   (princ "\n pb的夹角=")
    : i& _% ^5 G1 J) J  k0 K7 K4 ~0 G
  18.   (princ ang_pb)  (princ "度")0 F$ d8 o2 ?) f& n9 p4 p+ c. E
  19.   (princ "\n pc的夹角=")  (princ ang_pc)
    ; l, J; `8 `: _) q0 D" N! z( W! B
  20.   (princ "度")$ h$ A. y0 o- J3 B4 |  ^
  21. )3 F1 C" `$ S7 G: ~! n
  22. (prompt "\n 自动完成 ")5 c6 C% H/ p; E; e9 C: L8 k
  23. (prin1)8 l7 W1 y) s! o- Z  U
复制代码

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

 楼主| 发表于 2011-5-22 14:24:01 | 显示全部楼层 来自: 中国广东广州
2# SunVei : S6 P' K1 [; W6 P4 Z
谢谢啦,确实可行啊,麻烦可以指点下出现什么问题了么?
发表于 2011-5-22 14:50:56 | 显示全部楼层 来自: 中国台湾
請比對您的代碼....  h! J0 O# @6 n/ C2 X
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/ \5 w' R; S$ p+ d# Z( X(setq ang_pb (* atan_pb (/ 180 pi)))
( J% z% s4 z$ W0 X1 T2 ^. F(princ ang-pb)5 p, M4 V2 g0 [2 w) `( f
(princ ang-pc)

; t6 H8 ?! i) P. }xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9 J2 P6 W# ~5 e( o/ b' A: F/ n: B( ?
9 q/ b1 n+ g# ~4 }7 h
; `4 V) f0 a* ^& Z, z2 }
发表于 2011-5-22 18:06:25 | 显示全部楼层 来自: 中国辽宁
缺少第7行(计算pc的那一行)
 楼主| 发表于 2011-5-22 20:35:25 | 显示全部楼层 来自: 中国广东广州
5# woaishuijia
. `. F6 U7 m* I4 d; I- T* @  x- G9 _- ]) w
呃。太粗心了,谢谢两位高人啦。
 楼主| 发表于 2011-5-22 23:53:16 | 显示全部楼层 来自: 中国广东广州
5# woaishuijia ! w( h& n. Y! z* w) y5 D" R
再弱弱的问一下,怎么最后的一行有两个“度”的呢?
( O6 j8 H) |5 U! a pb的夹角=41.4096度
1 ?9 y# t. H& _) H" O. U5 {' W pc的夹角=48.5904度"度"
发表于 2011-5-23 02:55:58 | 显示全部楼层 来自: 中国辽宁
按lisp的规矩,函数运行结束后会显示函数的返回值,也就是最后的结果.具体到这个例程,就是最后一行(princ "度")的结果:显示一个字符"度"
! ]( l, v. ?  R6 n9 Q) @! |4 j; h在自定义函数的最后一个右括号之前添加一行(princ),函数的返回值就成为空值了,就不会有多余的显示.
  1. (defun C:15 ()
    ; P+ ]& L2 g) H( ~
  2.   (setq pa (getpoint "请输入三角形左下的点:"))8 n5 Q/ X9 |8 F, y& @: O
  3.   (setq ww (getreal "\n 输入底边长度:"))
    ' A& f0 t6 d2 _; |
  4.   (setq kk (getreal "\n 输入斜边长度:"))$ g+ y0 C* b+ U1 y; V" T
  5.   (setq pb (polar pa 0 ww)), u+ B" O7 q2 s6 d2 f3 `
  6.   (setq hh (sqrt (- (* kk kk) (* ww ww))))* Z( ^/ ]$ b) z( |
  7.   (setq pc (polar pa (/ pi 2) hh))
    3 F6 |7 {- O) u3 W# T6 i( P
  8.   ( G1 F: |5 L7 L; \+ O* ]* y, ^1 ~
  9.   ;; (setvar "OsMode" 0)  ;捕捉
    2 q% f9 f: |0 ]
  10.   (command "pline" pa pb pc "c")
    + [) |. y2 c1 e6 z; P; a0 v
  11.   (princ "\n 另一边hh的长度=")
    / X. }2 F# m/ d5 M. R1 [, r% f
  12.   (princ hh)
    - m1 V" |8 i- ~4 l5 w1 k& X& d% k
  13.   (setq ang_pb (atan (/ hh ww))); h9 j7 c' ^8 Z
  14.   (setq ang_pb (* ang_pb (/ 180 pi)))
    * o  V: A( g, v5 N
  15.   (setq ang_pc (- 90 ang_pb))
    : X6 X8 e, t1 n( J, N/ @) k
  16.   (princ "\n pb的夹角=")
    ; m! E7 j' o, i
  17.   (princ ang_pb)  (princ "度")
      Y" L- I0 e$ ~6 u0 a" m& K
  18.   (princ "\n pc的夹角=")  (princ ang_pc)4 N0 q& A" H, n( {$ q8 [$ x: b7 t
  19.   (princ "度")2 P+ _0 {6 ?# n3 Y' F
  20.   (princ)
    - r; M, \7 x# q% P$ {
  21. )
    0 K% f4 A; C" g5 ~
  22. (prompt "\n 自动完成 ")
    * |, D) w: v% ]/ z: U3 z
  23. (prin1)
复制代码
 楼主| 发表于 2011-5-23 07:31:56 | 显示全部楼层 来自: 中国广东广州
8# woaishuijia 0 d5 U  b: I& ^3 J7 ]: H
都这么晚了,版主不睡啊,辛苦了,问题解决
 楼主| 发表于 2011-5-27 13:19:34 | 显示全部楼层 来自: 中国广东广州
2# SunVei   
% ]6 y! q! f; ?/ _  e* W;; (setvar "OsMode" 0)  ;捕捉
. `2 U8 P6 A3 i3 x请问下一开始的两个分号起什么作用呢?应该可以去掉吧?
发表于 2011-5-27 13:49:56 | 显示全部楼层 来自: 中国台湾
Lisp ....." z7 G) I+ q( C% S0 s; O% `
列首见 ; ---> 跳过这一列) U/ F$ S# O+ P" D! L

/ V, S& n0 }5 G! k( a. O$ Y2 W本例 暂不关闭捕捉0 o2 i3 w6 m- @! x8 B
实务上建议 关闭捕捉
 楼主| 发表于 2011-5-27 14:05:50 | 显示全部楼层 来自: 中国广东广州
11# SunVei
7 }1 u0 X( G* v6 r& \4 \3 z; Y4 n$ @那请问有没有方法可以临时关闭捕捉呢,就是在这个程序运行的时候关闭,如果运行后就恢复?
发表于 2011-5-27 14:11:18 | 显示全部楼层 来自: 中国台湾
 楼主| 发表于 2011-5-27 16:49:23 | 显示全部楼层 来自: 中国广东广州
本帖最后由 janekou 于 2011-5-27 16:52 编辑 ; U' c- n/ M2 o  Q1 {! k& C
& V* a4 z  d" F; ~7 ?8 ]; |% K
看了后,还是有点不懂,请问两个分号也是注释?
: {3 ^  G5 m" m4 I0 a而那个703  (setvar "osmode" 703)是什么意思呢?(如果是0的话应该就是取消全部捕捉了吧)3 x- Z) h' Q+ W9 c4 G% N
还有是怎么设置只临时捕捉的呢?
  1. (defun c:an (/ aa la lb lc sz area lh bb ah ang1 cc )     ;将命令定义为an
    + ]/ K( w' L; \" h: C

  2. 3 K+ }8 {% z# D  `1 }& I7 R6 n
  3. (setq Osnapmode (getvar "OSMODE")                       ;获得当前捕捉模式
    + K# N5 D' p) o. G, z5 T, t: ^
  4. (setvar "OSMODE" 703 )                                    ;设置程序中需要的模式
    # W* }: M( e, y/ `- v4 n8 O! @+ c
  5.      
    2 r; _, z' Y* u) g/ |# a( I
  6.           0 Q# `8 X6 m/ w% Z$ ]
  7. (setq aa (getpoint "选取左下角点:")
    " O* \  v# `% ?# Z5 B
  8. (setq la (getreal "\n 输入底边A的长度:")
    % T* e" d' ]  d
  9. (setq lb (getreal "\n 输入B的长度:")
    3 P5 H1 U1 ]/ ?! g) N
  10. (setq lc (getreal "\n 输入C的长度:")
    & Y+ J* U5 Q- D, q/ i( V* A. l7 p# q' ^
  11. ;貌似下面的叫海伦公式4 R6 l  g% x5 d
  12. (setq sz (/ (+ la lb lc) 2))
    , `8 c' Q% f) }8 I$ x3 l& P
  13. (setq area (sqrt (* sz (- sz la) (- sz lb) (- sz lc))))
    % _5 E, n' |, U, W1 d8 T
  14. (setq lh (/ (* 2 area) la))
    + [" E, P* F, A* F- H

  15. ( L$ A9 m  d# {& x! m7 ]* B
  16. (setq bb (polar aa 0 la))* ?; `. R* O# n7 A; T+ e0 u
  17. (setq ah  (sqrt (- (* lc lc) (* lh lh)))) ! S0 k; B# U% v* u9 w+ T  H9 ?5 u5 q
  18. (setq ang1 (atan (/ lh ah)))       ;ang1弧度值
    * ]% E9 j) w* ?) w) Y
  19. (setq cc (polar aa ang1 lc)). R" F3 v& f3 z6 H* O. S
  20. (command "pline" aa bb cc "c"
    2 ?  u  y/ T( c5 C4 X
  21. ;显示相关信息,可省略6 ~3 S% K( E* r% d: ~& I3 p
  22. (setq ang1 (* ang1 (/ 180 pi)))    ;ang1弧度值转换为十进制角度值1 z& W" ]2 m0 J( a
  23. (princ (strcat "底角度数=" (rtos ang1) "度")% o& h$ X2 p# k* T& F; \; }
  24. ;上一步或者可用(princ "底角度数=" (princ ang1) (princ "度"
    9 U. N! [# v. N1 i0 V
  25. 5 u; G. I3 }& {& ^: D4 i6 [
  26. (setvar "OSMODE" Osnapmode)                                ;恢复初始状态  
    # h% w  ~+ D  J) u. p+ m) W7 f/ O
  27. 3 \  w! C% K  N- P( a
  28. (prin1)
    & C! f- Y+ a" O3 e8 G; `% V( n! h: a" Y
  29. )' {9 c. ~0 C. f
  30. (prompt "哈哈,入门级的水平啊,见笑了"
    5 ]4 j; x8 ~* X
  31. (prin1)
复制代码
貌似这样插入有问题~~
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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