[求助]四边长度及一条对角线的任意四边形如何做?
本帖最后由 作者 于 2010-8-8 12:19:07 编辑 <br /><br /> <p><font color="#ff0000">由于考虑欠周全,当时只考虑了一种情况。其实是有两种情况的。浪费了<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">nonsmall的时间和精力。。。不好意思。</font></font></p><p><font color="#ff0000">看下有哪位贵人可以相助呀,和<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">nonsmall对话框输出模式也差不多的就最好了。</font></font></p>
<p><font color="#ff0000">只要输入4个边及 对角线1 或 对角线2 两种情况都可以输出图形。</font></p>
<p></p>
<p> </p> 希望在一条命令行上同时输入5个数字,数字与数字用逗号分开,这样便于检查有没有输错数据。 ;帮你做个对话框
;nonsmall 作品:对话框自动连接程序
(defun c:tt();此部分是测试代码用
(Form1_load)
)
(defun Form1_load( / dcl_id Dialog_Return key keys Dcl_File)
(vl-load-com)
(setq dcl_id (load_dialog (setq Dcl_File (Write_Dcl))));对话框加载
(vl-file-delete Dcl_File);加载后删除DCL文件
(setq Dialog_Return 2)
(while (> Dialog_Return 1) ;循环控制对话框是否结束
(new_dialog "Form1" dcl_id);建立窗体
;-->-->-对话框初始化->-->--
(setq keys '("Text1" "Text2" "Text3" "Text4" "Text5" "accept" "cancel"));列表全部控件名称
(foreach key keys;全部控件的初始化
(if (eval (read (strcat key "_bak"))) (set_tile key (eval (read (strcat key "_bak")))));控件内容
(action_tile key "(Action_Form1_Keys $key $value)");点击动作
)
;--<--<-对话框初始化完成-<--<--
(setq Dialog_Return (start_dialog));开启对话框(用户可见)
)
(unload_dialog dcl_id);退出时卸载对话框
(princ);防止函数回显
)
(defun Action_Form1_Keys (key value) ;全部控件的点击动作触发
(print (list key value))(print "*-------*");测试代码 用后删除
(cond
((= key "accept") ;{确认按钮}
(Get_Form1_Data)
(done_dialog 1);对话框退出返回主函数 传递给Dialog_Return值为1
)
((= key "cancel") ;{取消按钮}
(done_dialog 0);对话框退出返回主函数 传递给Dialog_Return值为0
)
)
)
(defun Get_Form1_Data( / key);临时生成Dcl文件 返回文件名
(foreach key keys
(set (read (strcat key "_bak")) (get_tile key));每个控件都赋给一个变量 用于下次开启初始化
)
)
(defun Write_Dcl( / Dcl_File file str)
(setq Dcl_File (vl-filename-mktemp nil nil ".Dcl"))
(setq file (open Dcl_File "w"))
(foreach str '(
"/*nonsmall 作品: */"
""
"Form1:dialog"
"{"
" label = \"任意四边形\";"
" :edit_box"
" {"
" key = \"Text1\" ;"
" label = \"边1\" ;"
" width = 15.75 ;"
" height = 1.2375 ;"
" }"
" :edit_box"
" {"
" key = \"Text2\" ;"
" label = \"边2\" ;"
" width = 15.75 ;"
" height = 1.2375 ;"
" }"
" :edit_box"
" {"
" key = \"Text3\" ;"
" label = \"边3\" ;"
" width = 15.75 ;"
" height = 1.2375 ;"
" }"
" :edit_box"
" {"
" key = \"Text4\" ;"
" label = \"边4\" ;"
" width = 15.75 ;"
" height = 1.2375 ;"
" }"
" :edit_box"
" {"
" key = \"Text5\" ;"
" label = \"对角线\" ;"
" width = 15.75 ;"
" height = 1.2375 ;"
" }"
"ok_cancel ;"
"}"
)
(write-line str file))
(close file)
Dcl_File
)
<p>试了下,不知为什么生成不了</p> <p>没有插入点</p> <font face="Verdana" color="#61b713"><b>寻nonsmall大哥呀!!!</b></font> <p>在(unload_dialog行之后加上:</p>
<p>(if (= Dialog_Return 1) (progn</p>
<p>;在这里写上你要画图的指令</p>
<p>))</p>
<p>就行了。</p> 小生愚钝,还是搞不出来。CAD界面上没有图。
原来: (unload_dialog dcl_id);退出时卸载对话框
改为:
(unload_dialog dcl_id);退出时卸载对话框
(if (= Dialog_Return 1)(progn tt)) <p>坐等高人帮忙。。。</p>
<p>最好<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">nonsmall有时间也</font>过来帮忙啦。。哈哈</p> <p><font face="Verdana"> 对角线的第一个端点记为P1,另一个端点记为P3,四边形的确保另外两顶点分别记为P2和P4,<br/>并确保P1→P2→P3→P4为逆时针排列,P1→P2的长度为边长值1,P2→P3的长度为边长值2,<br/>P3→P4的长度为边长值3,P4→P1的长度为边长值4,P1→P3的长度为对角线长,加载附件中<br/>的rysbx程序,在命令行中键入rysbx后,输入<br/> 边长值1,边长值2,边长值3,边长值4,对角线长<br/>再指定<br/> 对角线的第一点P1,对角线所在方向线(对角线P1→P3上任意一点或其延长任意一点)<br/>即可得求的四边形。</font></p>
页:
[1]
2