查看: 2752|回复: 15

求教:封头的程序原文件

[复制链接]
koalabear 发表于 2004-5-23 18:33 | 显示全部楼层 |阅读模式
封头的程序以前在论坛里面看到一个封头的程序,能否请主人共享一下源代码。假若不能共享,能否告知一下下面的问题:



在变程的时候如何获取里面原有的数据。例如:offset第一次运行的时候显示:指定偏移距离或 通过,但是第二次运行的时候就显示你上次的数值.当然这是系统变量的原因.我想知道不是系统变量如何实现.谢谢告知.





[此贴子已经被2443725于2004-5-23 16:51:01编辑过]

swaywood 发表于 2004-5-24 04:40 | 显示全部楼层
这不是什么系统变量的原因,只是有些变量在程序运行退出后,仍然存在而已,cad一旦退出就没有了
回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-24 20:13 | 显示全部楼层
不过,还可以用图形词典,但我觉得没必要……

回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-24 21:54 | 显示全部楼层
楼上各位,谢谢回答,我也知道是全局变量,但是我不知道怎么获取出来,不如第一次运行需要判断是否存在该变量,如不存在输入数值,要是存在直接赋值.
回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-25 06:25 | 显示全部楼层
正是楼上所说
回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-26 04:26 | 显示全部楼层
                 (if (= nil TT) (setq tt (getreal "\n高度&lt;高度&gt;:"))<BR>                                                                 (setq s (princ (strcat "\n高度&lt;" (rtos TT) "&gt;:")))<BR>                 )


麻烦大虾看看格式对吗?我怎么运行不了,麻烦哪位指点一下。

回复 支持 反对

使用道具 举报

xiaping 发表于 2004-5-26 04:38 | 显示全部楼层
(= nil TT) 应该改为 (=         TT nil),或者(if not TT。
回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-27 01:18 | 显示全部楼层
呵呵没注意,谢谢了.

回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-27 05:47 | 显示全部楼层
(defun c:jszl(/ i s a0 a1 tz en1 x sm ac)<BR>        (setvar "cmdecho" 0)<BR>        (setvar "blipmode" 0)<BR>        (princ "\n选取数字")<BR>        (setq ss (ssget))<BR>        (setq i 0)<BR>        (setq S 0)<BR>        (setq SM 0)<BR>        (repeat (sslength ss)<BR>         (setq ssn (ssname ss i))<BR>         (setq ssdata (entget ssn))<BR>         (setq sstyp (cdr (assoc 0 ssdata)))        <BR>         (if (= sstyp "TEXT") <BR>                         (progn<BR>        (setq SM (1+ SM))<BR>                                                 (setq txt (cdr (assoc 1 ssdata)))<BR>                 (setq X (atof txt))<BR>                 (setq S (+ S X))<BR>                                 )<BR>         )                                                 ;if结束括号<BR>         (setq i (1+ i))                                                                 <BR>        )<BR>                 (if (= SCL nil) (setq scl (getreal "\n高度&lt;高度&gt;:"))<BR>                                         (progn         (setq scl (strcat "\n高度&lt;" (rtos scl) "&gt;:")))<BR>                 )


                 (command "text" A0 "" 0 (strcat "所选" (rtos SM 2) "个数据的和是=" (rtos S 2 1)))<BR>        (setq en1 (entlast))<BR>                                 (command "scale" en1 "" A0 scl)<BR>(prin1)<BR>)<BR>(prompt"\n命令提示符&lt;&lt;jszl&gt;&gt;")<BR>(prin1)


这是我自己的一个求和的程序,源程序是教程上的一个程序,我修改了一下,就成这模样了,按照楼上的意思照样不能运行,哪位大虾试试.看看怎么改就好了.小弟先谢了.

回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-27 06:08 | 显示全部楼层
搞不清楚你要干什么,A0是什么东西?
回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-27 06:14 | 显示全部楼层
你这个小程序问题倒不少,A0 还有 SCL都有问题,为什么那样做?
回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-27 06:32 | 显示全部楼层
(defun c:jszl(/ i s a0 a1 tz en1 x sm ac)<BR>        (setvar "cmdecho" 0)<BR>        (setvar "blipmode" 0)<BR>        (princ "\n选取数字")<BR>                         (SETQ I 0 S 0)<BR>        (setq ss (ssget '((0 . "TEXT"))))<BR>        (repeat (sslength ss)<BR>         (setq ssn (ssname ss i))<BR>         (setq ssdata (entget ssn))<BR>                                                 (setq txt (cdr (assoc 1 ssdata)))<BR>                 (setq X (atof txt))<BR>                 (setq S (+ S X))<BR>         (setq i (1+ i))                                                                 <BR>                                 )<BR>                         (SETQ AL (strcat "所选" (rtos I 2) "个数据的和是=" (rtos S 2 1)))<BR>                         (ALERT AL)<BR>        )<BR>
回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-27 17:09 | 显示全部楼层
不好意思,a0是文字的输入点,没注意给删掉了。

回复 支持 反对

使用道具 举报

 楼主| koalabear 发表于 2004-5-27 17:19 | 显示全部楼层
还有斑竹没看明白我的问题,我主要的问题是关于如何输入scl,第一次加载程序scl为空,这时需要提醒输入,当再次运行程序的时候获取这个scl数值,当需要修改的时候修改,不需修改的时候不用修改,直接按空格键就可以了。其他的程序纯粹是一个载体.主要还是检验                 (if (= SCL nil) (setq scl (getreal "\n高度&lt;高度&gt;:"))<BR>                                         (progn         (setq scl (strcat "\n高度&lt;" (rtos scl) "&gt;:")))<BR>                 )这部分程序.

回复 支持 反对

使用道具 举报

swaywood 发表于 2004-5-27 20:15 | 显示全部楼层
(defun c:test (/ tmp)<BR>         (if (= SCL nil)<BR>                         (setq scl (getreal "\n高度&lt;高度&gt;:"))<BR>                         (progn (setq tmp scl)<BR>                         (if (setq scl (getreal "\n高度"))<BR>                                         ()<BR>                                         (setq scl tmp)<BR>                         )<BR>                         )<BR>         )<BR>         (princ)<BR>)


       

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [加入论坛]

本版积分规则

化工技术网- 赠人玫瑰 手有余香 ( 苏ICP备14035884号 )

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