明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2448|回复: 13

请教一个巨简单的问题

  [复制链接]
发表于 2004-3-18 13:13:00 | 显示全部楼层 |阅读模式
刚开始用lisp,请教一个巨简单的问题,就是我用dcl编的对话框里面有两个popuplist,"compn"和"comdn"我要让他实现当我选择compn的时候comdn的内容也随之变化
 楼主| 发表于 2004-3-18 13:19:00 | 显示全部楼层
还有,如何取出popuplist的具体值
发表于 2004-3-18 13:55:00 | 显示全部楼层
1、在compn的动作函数里改变comdn的值,至于怎样定义和使用动作函数,以及怎样在程序中改变控件的值,可以参考帮助文件,有详细的介绍,而且还有例子。


2、不可以,你只能做一个与其内容对应的表,然后根据返回的索引值从表中取得
 楼主| 发表于 2004-3-18 15:46:00 | 显示全部楼层
(action_tile "ComPN" (setq PN ( get_tile "ComPN")))好像没什么用啊?不管我怎么点,pn返回的都是"0"
发表于 2004-3-18 16:43:00 | 显示全部楼层
应该不会,你把程序和DCL文件给出来看看
发表于 2004-3-18 17:03:00 | 显示全部楼层
各位高手,小弟想问一下,cad2004有没有修改快捷键的acad.pgp,如果有,那文件在哪呢?谢谢!
 楼主| 发表于 2004-3-18 19:01:00 | 显示全部楼层
...(setq Pressure_list '("0.6MPa" "1.0MPa" "1.6MPa" "2.5MPa" "4.0MPa")) ... ...(action_tile "ComPN" "function1" ) (defun function1()
(
(setq PN ( get_tile "ComPN"))
(setq ff (open "c:/soo.txt" "a"))
(prin1 (nth (atoi PN) Pressure_list) ff)
(close ff)
)
)
dcl没有问题,popuplist的key是compn,这里我就是先想把这个compn里面的内容取出来,放进"c:/soo.txt"里面看看对不对
发表于 2004-3-18 19:08:00 | 显示全部楼层
不是你问你有没有问题,按你说的,我做出来是正确的,而你说不对,我就没什么好说的,只能看你的程序,看问题出在哪儿?为什么却这么费劲,不肯写出来? 看你的function1函数,函数内的头尾加两个括号是做什么的,想象,LISP中,括号的头一项是函数名,后面的是参数,这样你的头一项(setq PN ( get_tile "ComPN"))
返回的肯定是一个整数,就是要以整数作为函数名了,就象(1 ...)这样能正确吗
 楼主| 发表于 2004-3-18 19:18:00 | 显示全部楼层
呵呵,我才刚开始写, (defun c:fg( / dcl_id)
(setq ep (getstring "\n法兰类型: "))
(setq basepoint (getpoint "\n基点: "))
(setq dcl_id(load_dialog "tmp.dcl"))
(defun dtr (a)
(* pi (/ a 180.0))
) (defun setpoint(basepoint pointx)
(foreach '+' ponitx basepoint)
) (defun addline()
(setq startpoint(list 12 13))
(setq endpoint(list 0 0))
(if (=(tblobjname "LAYER" "3") nil)
(progn
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(6 . "CONTINUOUS") ;线型
'(62 . 3) ;颜色
'(70 . 0) ;图层状态
(cons 2 "3") ;图层名
)
)
)
) (command "line" startpoint endpoint "")
) (defun function1()
(
(setq PN ( get_tile "ComPN"))
(setq ff (open "c:/soo.txt" "a"))
(prin1 pn ff)
(prin1 (nth (atoi pn) Pressure_list) ff)
(close ff)

)
)

(setq Pressure_list '("0.6MPa" "1.0MPa" "1.6MPa" "2.5MPa" "4.0MPa"))
(new_dialog "SO" dcl_id)
(start_list "ComPN" 3)
(mapcar 'add_list Pressure_list) ;("0.6MPa" "1.0MPa" "1.6MPa" "2.5MPa" "4.0MPa"))
(end_list)
(action_tile "ComPN" "function1" )
(set_tile "TxtD" "90")
(set_tile "TxtC" "14")
(set_tile "TxtR" "3")
(set_tile "TxtH" "22")
(set_tile "Txtb" "2")
(set_tile "Txtd" "41")
(set_tile "Txtf1" "2")
(set_tile "Txtf2" "4")
(set_tile "Txtf3" "3")
(set_tile "TxtW" "24")
(set_tile "TxtX" "34")
(set_tile "TxtY" "35")
(set_tile "TxtZ" "23")
(set_tile "TxtK" "60")
(set_tile "TxtL" "14")
(set_tile "Txtn_LowerCase" "4")
(mode_tile "FrmFrongView" 1)
(action_tile "ChkFrontView" "(mode_tile \"FrmFrongView\" (- 1 (atoi $value)))")
(start_dialog)
(addline)
(unload_dialog dcl_id)
(princ)
)
DCL:SO : dialog{
label="法兰参数";
:row{
:row{
:boxed_row{
label="法兰类型";
:column{
:radio_button{
label="FF";
key="optFF";
}
:radio_button{
label="M";
key="optM";
}
:radio_button{
label="FM";
key="optFM";
}
}
:column{
:radio_button{
label="RF";
key="optRF";
}
:radio_button{
label="T";
key="optT";
}
:radio_button{
label="G";
key="optG";
}
}
} }
:row{
:column{
:popup_list{
label="公称压力PN";
key="ComPN";
}
:popup_list{
label="公称通径DN";
key="ComDN";
}
:edit_box{
label="法兰外径D";
key="TxtD";
}
:edit_box{
label="法兰厚度C";
key="TxtC";
}
:edit_box{
label="圆角半径R";
key="TxtR";
}
}
:column{
:edit_box{
label="法兰厚度H";
key="ComH";
}
:popup_list{
label="法兰内径B1";
key="ComB1";
}
:popup_list{
label="法兰颈(N)";
key="TxtN";
}
:edit_box{
label="坡口宽度b";
key="Txtb";
}
}

}
:boxed_row{
label="密封面尺寸";
:column{
:edit_box{
label="d";
key="Txtd_Lowercase";
}
:edit_box{
label="f1";
key="Txtf1";
}
:edit_box{
label="f2";
key="Txtf2";
}
:edit_box{
label="f3";
key="Txtf3";
}

}
:column{
:edit_box{
label="W";
key="TxtW";
}
:edit_box{
label="X";
key="TxtX";
}
:edit_box{
label="Y";
key="TxtY";
}
:edit_box{
label="Z";
key="TxtZ";
}

}
}
}
:row{
:row{
:boxed_row{
label="预览";
:image{

}
}
}
:row{
:boxed_column{
:edit_box{
label="螺栓孔中心圆直径(K)";
key="TxtK";
}
:edit_box{
label="螺栓孔直径(L)";
key="TxtL";
}
:edit_box{
label="螺栓孔数量(n)";
key="Txtn_lowercase";
}
}
}
:row{
:column{
:boxed_row{
label="出图选项";
:toggle{
label="主视图";
key="ChkFrontView";
}
:toggle{
label="俯视图";
key="ChkTopView";
}
}
ok_cancel;
}
:column{
:boxed_row{
label="出图选项";
key="FrmFrongView";
:row{
:column{
:radio_button{
label="正视图";
key="OptSurface";
}
}
:column{
:radio_button{
label="剖面";
key="OptSection";
}
}
}
:row{
:popup_list{
label="剖面线角度";
key="LblSectionAngle";

}
:popup_list{
label="剖面线比例";
key="LblSectionScale";

}
}
}
} }
}
//ok_cancel;
}
我的东西才刚开始做,我就在这里学习visuallisp,就在处理这个对话框的时候没办法往下做了,
发表于 2004-3-18 19:29:00 | 显示全部楼层
你的程序真的就是——(action_tile "ComPN" (setq PN ( get_tile "ComPN")))好像没什么用啊?不管我怎么点,pn返回的都是"0"


这个问题吗?


在我这里它根本就不能执行,首先foreach那里错了,还有我8楼说的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 19:39 , Processed in 0.184368 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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