andyding 发表于 2006-4-23 13:46:00

求助各位大侠,请zzxxqq一定进来看看。

<P>各位大侠,帮帮忙。</P>
<P>以下程序为zzxxqq大侠为本人写的,我想再加些功能。就是在执行中程序能记住上次输入的数值,如果不输入就用默认值来运行。谢谢!!!</P>
<P>(DEFUN C:GTT ()<BR>&nbsp; (SETvar "CMDECHO" 0)<BR>&nbsp; (vl-cmdf "_.undo" "_group")<BR>&nbsp; (SETQ OLDOS (GETvar "OSMODE"))<BR>&nbsp; (SETvar "OSMODE" 0)<BR>&nbsp; (command "ucs" "w")<BR>&nbsp; (setq&nbsp;LANGLST&nbsp;'(("CHS"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n输入挂台距离&lt;17.95&gt;:"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n输入挂台宽&lt;3.05&gt;:"&nbsp;&nbsp;&nbsp; "\n输入挂台深&lt;1.0&gt;:"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n选择一条边:"&nbsp;&nbsp;&nbsp;&nbsp; "\n起始点:"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n哪一边?:"<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; ("CHT"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n块珽禯瞒 &lt;17.95&gt; :"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n块珽糴 &lt;3.05&gt; :"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n块珽瞏 &lt;1.0&gt; :"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n匡拒兵娩 :"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n癣﹍翴:"<BR>&nbsp;&nbsp;&nbsp;&nbsp; "\n娩?:"<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (setq LST (cdr (assoc (getvar "LOCALE") LANGLST)))<BR>&nbsp; (SETQ&nbsp;AL1 (/ PI 2)<BR>&nbsp;GTL (GETDIST (nth 0 LST))<BR>&nbsp;GTL (IF&nbsp;(= GTL nil)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17.95<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GTL<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;GTW (GETDIST (nth 1 LST))<BR>&nbsp;GTW (IF&nbsp;(= GTW nil)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.05<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GTW<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;GTD (GETDIST (nth 2 LST))<BR>&nbsp;GTD (IF&nbsp;(= GTD nil)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GTD<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (SETvar "BLIPMODE" 0)<BR>&nbsp; (WHILE (SETQ S1 (ENTSEL (nth 3 LST)))<BR>&nbsp;&nbsp;&nbsp; (SETvar "OSMODE" 1)<BR>&nbsp;&nbsp;&nbsp; (IF&nbsp;(SETQ P1 (GETPOINT (nth 4 LST)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PROGN<BR>&nbsp;(SETvar "OSMODE" 0)<BR>&nbsp;(SETQ DL&nbsp; (ENTGET (CAR S1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT1 (CDR (ASSOC 10 DL))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT2 (CDR (ASSOC 11 DL))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P2&nbsp; (IF (&gt; (DISTANCE PT1 P1) (DISTANCE PT2 P1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT2<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ANG (ANGLE P1 P2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT&nbsp; (GETPOINT P1 (nth 5 LST))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AN1 (ANGLE P1 PT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1&nbsp; (- AN1 ANG)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1&nbsp; (IF (AND (&gt; A1 0) (&gt; A1 PI))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- A1 PI PI)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1&nbsp; (IF (AND (&lt; A1 0) (&lt; A1 (- PI)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (+ A1 PI PI)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A1&nbsp; (IF (&gt; A1 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (+ ANG AL1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- ANG AL1)<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P3&nbsp; (POLAR P1 ANG GTL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P4&nbsp; (POLAR P3 A1 GTD)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P5&nbsp; (POLAR P3 ANG GTW)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P6&nbsp; (POLAR P5 A1 GTD)<BR>&nbsp;)<BR>&nbsp;(COMMAND "ERASE" (CAR S1) "")<BR>&nbsp;(COMMAND "LINE" P1 P3 P4 P6 P5 P2 "")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (command "ucs" "p")<BR>&nbsp; (SETvar "OSMODE" OLDOS)<BR>&nbsp; (vl-cmdf "_.undo" "_end")<BR>&nbsp; (SETvar "CMDECHO" 1)<BR>&nbsp; (PRINC)<BR>)</P>

xyp1964 发表于 2006-4-23 16:29:00

<P>命令: GTT&nbsp; (挂台)</P>
<P></P>

andyding 发表于 2006-4-23 18:10:00

<P>谢谢XYP1964大侠!!!</P>
<P>能否给小弟份源码学习学习?请不吝赐教。</P>

ZZXXQQ 发表于 2006-4-23 18:23:00

<P>程序</P>
<P>&nbsp;</P>

andyding 发表于 2006-4-23 20:06:00

<P>多谢ZZXXQQ大侠!!</P>
<P>运行时:命令: gtt ; 错误: 参数类型错误: stringp 17.95</P>

xyp1964 发表于 2006-4-23 22:41:00


(load "xyp_lib.vlx") ;版本 V.20060314
;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
★1·在acad.lsp中增加(load"xyp_lib")
■2·在每个程序内增加(load"xyp_lib")
■3·在command下,输入(load"xyp_lib")
■4·在菜单.mnl中增加(load"xyp_lib")
■5·将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554
|;
;;; gtt(挂台)
(DEFUN C:GTT ()
(cmdla0)
(SETvar "OSMODE" 0)
(if (null gtl)
    (setq gtl 17.95)
)
(if (null GTW)
    (setq GTW 3.05)
)
(if (null GTD)
    (setq GTD 1.0)
)
(SETQ AL1 (/ PI 2)
GTL (UDIST 7 "" "\n输入挂台距离<直接输入或鼠标点取>" GTL nil)
GTW (UDIST 7 "" "\n输入挂台宽<直接输入或鼠标点取>" GTW nil)
GTD (UDIST 7 "" "\n输入挂台深<直接输入或鼠标点取>" GTD nil)
)
(WHILE (SETQ S1 (ENTSEL "\n选择一条边: "))
    (SETvar "OSMODE" 1)
    (IF (SETQ P1 (GETPOINT "\n起始点: "))
      (PROGN
(SETvar "OSMODE" 0)
(SETQ DL(ENTGET (CAR S1))
       PT1 (CDR (ASSOC 10 DL))
       PT2 (CDR (ASSOC 11 DL))
       P2(IF (> (DISTANCE PT1 P1) (DISTANCE PT2 P1))
      PT1
      PT2
    )
       ANG (ANGLE P1 P2)
       PT(GETPOINT P1 "\n哪一边?: ")
       AN1 (ANGLE P1 PT)
       A1(- AN1 ANG)
       A1(IF (AND (> A1 0) (> A1 PI))
      (- A1 PI PI)
      A1
    )
       A1(IF (AND (< A1 0) (< A1 (- PI)))
      (+ A1 PI PI)
      A1
    )
       A1(IF (> A1 0)
      (+ ANG AL1)
      (- ANG AL1)
    )
       P3(POLAR P1 ANG GTL)
       P4(POLAR P3 A1 GTD)
       P5(POLAR P3 ANG GTW)
       P6(POLAR P5 A1 GTD)
)
(COMMAND "ERASE" (CAR S1) "")
(xyp-mklaco "挂台" 4)
(COMMAND "LINE" P1 P3 P4 P6 P5 P2 "")
      )
    )
)
(command "ucs" "p")
(cmdla1)
)
(princ"命令: GTT(挂台)")
(princ)

ZZXXQQ 发表于 2006-4-23 23:15:00

andyding发表于2006-4-23 20:06:00static/image/common/back.gif
多谢ZZXXQQ大侠!!
运行时:命令: gtt ; 错误: 参数类型错误: stringp 17.95


<P>改过的程序:</P>
<P><BR>&nbsp;</P>

andyding 发表于 2006-4-24 23:46:00

多谢两位大侠!!!
页: [1]
查看完整版本: 求助各位大侠,请zzxxqq一定进来看看。