找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 548|回复: 2

[求助] [求助]:xyp1964兄请进

[复制链接]
发表于 2004-12-19 13:41:18 | 显示全部楼层 |阅读模式

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

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

×
关于偶的一个lisp程序,兄台帮我写过一段,当初的问题已解决,主要是绘制短斜线的时候没把捕捉关了,现重新读你写的程序,发现一团雾水,能否仔细讲解一下其循环过程

[PHP]
;试试下面的:
;短斜线的长度根据用户的要求输入,其值作为下次输入的缺省值。除短斜线外,其余线均改为pline线成为整体。
(defun C:test (/ p1 p2 pa pb ObliqueLength)
  (setq    NO2 (ureal 1 "" "\n短斜线的长度" no2)   ;;;???此处什么时候进入ureal函数,数字 1 的作用是什么
    p1  (getpoint "\n起点 : ")
    p2  (getpoint p1 "\n下一点 : ")
  )
  (setvar"plinewid"0)
  (command "pline" p1 p2)
  (while (setq p2 (getpoint p2 "\n下一点 : "))
    (command p2)
  )
  (command)
  (setq    pa (polar p1 (/ pi 4) (/ no2 2.0))
    pb (polar p1 (* pi 1.25) (/ no2 2.0))
  )
  (command "line" pa pb "")
  (princ)
)
(defun ureal (bit kwd msg def / inp)  :::???bit kwd msg def 这些全局变量的初始值并没有呀
  (if def                                             ;;;???if 就进不去呀?
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
      bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
  )
)

[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-19 16:24:00 | 显示全部楼层
不知能否明白?慢慢看吧!
平常只是用得方便,让解释一番,其实偶也有点晕!呵呵……
[php]
(defun C:test (/ p1 p2 pa pb ObliqueLength)
  (setq        NO2 (ureal 1 "" "\n短斜线的长度" no2)
        p1  (getpoint "\n起点 : ")
        p2  (getpoint p1 "\n下一点 : ")
  )
  (setvar "plinewid" 0)
  (command "pline" p1 p2)
  (while (setq p2 (getpoint p2 "\n下一点 : "))
    (command p2)
  )
  (command)
  (setq        pa (polar p1 (/ pi 4) (/ no2 2.0))
        pb (polar p1 (* pi 1.25) (/ no2 2.0))
  )
  (command "line" pa pb "")
  (princ)
)
;;;解释
;;;以(setq NO2 (ureal 1 "" "\n短斜线的长度" no2))
;;;即bit=1;kwd="";msg="\n短斜线的长度";no2=400为例:
(defun ureal (bit kwd msg def / inp)
  (if def;判断是否存在全局变量NO2
    ;存在全局变量NO2时
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ");(setq msg (strcat "\n" "\n短斜线的长度" "<" (rtos 400 2) ">: "))→"\n\n短斜线的长度<400.000>: "
          bit (* 2 (fix (/ bit 2)));(setq bit (* 2 (fix (/ 1 2))))→0
    )
    ;不存在全局变量NO2时
    (setq msg (strcat "\n" msg ": "));(setq msg (strcat "\n" "\n短斜线的长度" ": "))→"\n\n短斜线的长度: "
  )
  ;initget函数语法:(initget [bits] [string])
  (initget bit kwd);(initget 1 "")阻止用户仅经过按下 Enter 键来回应要求,[string]设为""(空)
  (setq inp (getreal msg));(setq inp (getreal "\n短斜线的长度"))→短斜线的长度(程序暂停,等待用户输入数值)
  (if inp inp def);如果重设了短斜线的长度,就返回其值,否则采用缺省值no2=400
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-23 23:25:47 | 显示全部楼层
几天没来了,呵呵,谢谢了,
偶再体会体会
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 19:23 , Processed in 0.181699 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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