| 给排水系统图实时窗口的CAD开发技术 |
作者:本站收集 论文来源:相关网站 点击数: 更新时间:2006-12-9 【VIVI收藏】 摘要:江南建筑>给排水系统图实时窗口的CAD开发技术
|
|
中图分类号: TP311 文献标识码: C 文章编号:1000-4602(2000)05-0036-03
Auto
CAD提供的多窗口技术是建立在严格的投影原理基础上的,故不能随意修改、生成各窗口图形。在建筑给排水工程CAD系统中,在一窗口进行管线平面图设计,欲在另一窗口中实时生成刚布置管线的系统轴测图,这样就必须获得所有窗口的控制权,即用户在一窗口中进行操作,创建一个实体A,程序员利用实体A的图形数据,在其他窗口中生成不同实体来表达实体A的不同形态。由于给排水平面图的坐标系如图1所示,而系统图的坐标系如图2所示,系统图坐标系的获得想通过用“VPOINT”设置视点是绝对不可能的,而且平面图向系统图转化不是完全由投影关系决定的。因此,直接利用Auto
CAD提供的窗口操作技术不能解决以上问题。


可见,改进Auto CAD的多窗口显示技术是完善给排水CAD系统开发的一个重要课题
。在多窗口建筑消防CAD系统中,作者成功地改造了Auto CAD多窗口显示技术,满足了设计要求。
1 多视窗控制技术
改进多窗口显示技术主要有两种方法: ① 创建您自己的窗口。采用Auto
CAD提供的ADS接口,用C编程,去创建自己独立的窗口。然后,调用Auto
CAD的绘图、编辑命令或函数来绘图。这种方法工作量很大,而且还要考虑到自己编制的窗口与Auto
CAD的接口,影响了Auto CAD的使用效率,不太实用。 ② 直接改造Auto
CAD的窗口。采用“MVIEW”窗口(注意一定不能采用“VPORTS”窗口,因为该窗口达不到您的目的),将每一窗口分成显示层和非显示层,冻结非显示层,解冻显示层。在程序中将对窗口的控制转向对不同层的控制,这样就把问题简化了。但是,由于在任一窗口中都存在显示层与非显示层,在该窗口中想对非显示层上的实体进行选取、编辑、控制就显得有点力不从心了,好在Auto
CAD提供了“CVPORT”这一系统变量,利用它就可以“遥控”每一窗口。到此,就较好地解决了多视窗中对每一窗口的控制技术。这种方法工作量小,全部采用内嵌的AUTOLISP编程,是Auto
CAD的内部处理,较实用。而且,每一视窗中均可以直接利用Auto
CAD的“ZOOM”、“PAN”进行局部缩放、漫游,视窗的大小调整、视窗搬移均可很简单地由程序来控制实现,若干视窗还可以部分重叠,不必平行设置。 多视窗系统创建、控制的程序框图如图3所示。

2 多视窗系统窗口的调整
多视窗系统尽管具有直观、形象的特点,但是由于该系统占用了窗口空间,使得主窗口变小、视图变小,影响了视觉。因此,有时需要对副窗口进行搬移、大小调整,甚至将多窗口系统转向单窗口系统。 ① 窗口搬移 用“(VPORTS)”函数可以返回多视窗系统的窗口配置,其结果是一个复合表。如某系统窗口配置用“(VPORTS)”返回为下表: ((2 (0.0 0.0115385)
(16.878 5.18077)) (3 (0.0 5.18077) (16.878 9.0)) (1 (0.0 0.0) (16.9589 9.0)) ) 由上表可见,该多视窗系统返回了三个窗口句柄号。假设主窗口的句柄号为“2”,一副窗口为“3”,若要对副窗口“3”进行搬移,程序如下: (defun
c:movewin(/p pl) (command
“pspace”);进入纸空间 (setq p (getpoint “/n
请点取要移动的起始点:”));点取移动的基点 (while p (setq pl
(getpoint“/n 请点取移动的终止点:”));点取移动的终点 (command “move”
“c”;用“CROSS”方式选取窗口 (caddr (assoc 3
(vports)));窗口右上角坐标 (caddr (assoc 3
(vports))); “”p pl ) (setq p(getpoint“/n
请点取要移动的起始点:”));若不满意可再次搬移 );结束“while”循环 (command
“mspace”);进入实体模型空间 (command
“ucsicon”“all”“off”);将各窗口UCS图标关闭 (princ) ) ② 窗口大小调整 再以上述多视窗系统为例,若要对窗口“3”大小作调整,程序如下: (defun
c:dragwin(/p pl) (command
“pspace”);进入纸空间 (setq pl (getcorner(cadr(assoc 3
(vports)))“/n 请拖动窗口到合适大小:”)) (while
pl (command“stretch”“c”;用“CROSS”方式选取窗口及拖动范围 (list(-(car(setq
p(caddr(assoc 3(vports)))))0.05)(-(cadr
p)0.05)) (list(+(car p)0.05)(+(cadr
p)0.05)) “”p pl ) (setq
pl(getcorner(cadr(assoc 3(vports)))“/n
请拖动窗口到合适大小:”)) );结束whiler循环 (command“mspace”);进入实体模型空间 (setvar“cvport”3);激活副窗口 (command“zoom”“e”) (command“zoom”“0.8x”) (command“ucsicon”“all”“off”);关闭UCS图标 (princ) ) ③ 单视窗与多视窗转化 利用“CVPORT”这一系统变量可以激活某窗口,利用“TILEMODE”可以进行单视窗与多视窗间相互转化。如下程序可以实现由多视窗向单视窗转化: (defun
c:mtos() (setvar“cvport”2) (setvar“tilemode”1) (command“zoom”“e”) (command“zoom”“0.8x”) (princ) )
3 结语
将多窗口技术应用于给排水CAD软件包中,在主窗口进行管线平面布置,在副窗口形成其系统图,即每布置一条管线,便同时在副窗口形成相应的系统图,这样可直观、形象地反映出设计成果,减轻设计难度,而且若有错误能及时发现并修改,以防中途设计一步错误而引起大的返工,从而提高了设计效率。但是直接利用Auto
CAD提供的窗口操作技术不能解决以上问题,在多窗口建筑消防CAD系统中,作者成功地改造了Auto
CAD多窗口显示技术,在副窗口实时形成管线的系统图。因此将多窗口技术应用于给排水CAD较件包中,必将增强软件的实用性。
电话:0516-3888951-2273 E-mail:zhfxu@cumt.edu.cn
收稿日期:1999-11-16
|
|
|
|
[江南建筑>给排水系统图实时窗口的CAD开发技术] 论文录入:admin 责任编辑:admin |
 |
|
| 上一篇论文: 旋转式滗水器的开发设计 |
下一篇论文: 用测试软件检测曝气设备的性能 |