求助各位大侠,请zzxxqq一定进来看看。
<P>各位大侠,帮帮忙。</P><P>以下程序为zzxxqq大侠为本人写的,我想再加些功能。就是在执行中程序能记住上次输入的数值,如果不输入就用默认值来运行。谢谢!!!</P>
<P>(DEFUN C:GTT ()<BR> (SETvar "CMDECHO" 0)<BR> (vl-cmdf "_.undo" "_group")<BR> (SETQ OLDOS (GETvar "OSMODE"))<BR> (SETvar "OSMODE" 0)<BR> (command "ucs" "w")<BR> (setq LANGLST '(("CHS" "\n输入挂台距离<17.95>:"<BR> "\n输入挂台宽<3.05>:" "\n输入挂台深<1.0>:"<BR> "\n选择一条边:" "\n起始点:"<BR> "\n哪一边?:"<BR> )<BR> ("CHT"<BR> "\n块珽禯瞒 <17.95> :"<BR> "\n块珽糴 <3.05> :"<BR> "\n块珽瞏 <1.0> :"<BR> "\n匡拒兵娩 :"<BR> "\n癣﹍翴:"<BR> "\n娩?:"<BR> )<BR> )<BR> )<BR> (setq LST (cdr (assoc (getvar "LOCALE") LANGLST)))<BR> (SETQ AL1 (/ PI 2)<BR> GTL (GETDIST (nth 0 LST))<BR> GTL (IF (= GTL nil)<BR> 17.95<BR> GTL<BR> )<BR> GTW (GETDIST (nth 1 LST))<BR> GTW (IF (= GTW nil)<BR> 3.05<BR> GTW<BR> )<BR> GTD (GETDIST (nth 2 LST))<BR> GTD (IF (= GTD nil)<BR> 1.0<BR> GTD<BR> )<BR> )<BR> (SETvar "BLIPMODE" 0)<BR> (WHILE (SETQ S1 (ENTSEL (nth 3 LST)))<BR> (SETvar "OSMODE" 1)<BR> (IF (SETQ P1 (GETPOINT (nth 4 LST)))<BR> (PROGN<BR> (SETvar "OSMODE" 0)<BR> (SETQ DL (ENTGET (CAR S1))<BR> PT1 (CDR (ASSOC 10 DL))<BR> PT2 (CDR (ASSOC 11 DL))<BR> P2 (IF (> (DISTANCE PT1 P1) (DISTANCE PT2 P1))<BR> PT1<BR> PT2<BR> )<BR> ANG (ANGLE P1 P2)<BR> PT (GETPOINT P1 (nth 5 LST))<BR> AN1 (ANGLE P1 PT)<BR> A1 (- AN1 ANG)<BR> A1 (IF (AND (> A1 0) (> A1 PI))<BR> (- A1 PI PI)<BR> A1<BR> )<BR> A1 (IF (AND (< A1 0) (< A1 (- PI)))<BR> (+ A1 PI PI)<BR> A1<BR> )<BR> A1 (IF (> A1 0)<BR> (+ ANG AL1)<BR> (- ANG AL1)<BR> )<BR> P3 (POLAR P1 ANG GTL)<BR> P4 (POLAR P3 A1 GTD)<BR> P5 (POLAR P3 ANG GTW)<BR> P6 (POLAR P5 A1 GTD)<BR> )<BR> (COMMAND "ERASE" (CAR S1) "")<BR> (COMMAND "LINE" P1 P3 P4 P6 P5 P2 "")<BR> )<BR> )<BR> )<BR> (command "ucs" "p")<BR> (SETvar "OSMODE" OLDOS)<BR> (vl-cmdf "_.undo" "_end")<BR> (SETvar "CMDECHO" 1)<BR> (PRINC)<BR>)</P> <P>命令: GTT (挂台)</P>
<P></P> <P>谢谢XYP1964大侠!!!</P>
<P>能否给小弟份源码学习学习?请不吝赐教。</P> <P>程序</P>
<P> </P> <P>多谢ZZXXQQ大侠!!</P>
<P>运行时:命令: gtt ; 错误: 参数类型错误: stringp 17.95</P>
(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)
andyding发表于2006-4-23 20:06:00static/image/common/back.gif
多谢ZZXXQQ大侠!!
运行时:命令: gtt ; 错误: 参数类型错误: stringp 17.95
<P>改过的程序:</P>
<P><BR> </P> 多谢两位大侠!!!
页:
[1]