首页> 资源> 论文>正文

给排水系统图实时窗口的CAD开发技术

论文类型 技术与工程 发表日期 2000-05-01
来源 《中国给水排水》2000年第5期
作者 许志芳,王耀才,黄树成
关键词 建筑给排水 CAD 软件
摘要 将多窗口技术应用于给排水CAD软件包中,在主窗口进行管线平面布置,在副窗口实时形成其系统图,这样可以提高软件的容错性和设计效率。本文详细讨论了多窗口CAD系统的实现技术。

许志芳 王耀才 黄树成
(中国矿业大学,江苏 徐州 221008)

  摘 要:将多窗口技术应用于给排水CAD软件包中,在主窗口进行管线平面布置,在副窗口实时形成其系统图,这样可以提高软件的容错性和设计效率。本文详细讨论了多窗口CAD系统的实现技术。
  关键词:建筑给排水; CAD; 软件
  中图分类号: TP311
  文献标识码: C
  文章编号:1000-4602(2000)05-0036-03

  Auto CAD提供的多窗口技术是建立在严格的投影原理基础上的,故不能随意修改、生成各窗口图形。在建筑给排水工程CAD系统中,在一窗口进行管线平面图设计,欲在另一窗口中实时生成刚布置管线的系统轴测图,这样就必须获得所有窗口的控制权,即用户在一窗口中进行操作,创建一个实体A,程序员利用实体A的图形数据,在其他窗口中生成不同实体来表达实体A的不同形态。由于给排水平面图的坐标系如图1所示,而系统图的坐标系如图2所示,系统图坐标系的获得想通过用“VPOINT”设置视点是绝对不可能的,而且平面图向系统图转化不是完全由投影关系决定的。因此,直接利用Auto CAD提供的窗口操作技术不能解决以上问题。

t3601.gif (716 字节)

t3602.gif (982 字节)

  可见,改进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所示。

t3701.gif (16050 字节)

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

论文搜索

发表时间

月热点论文

论文投稿

很多时候您的文章总是无缘变成铅字。研究做到关键时,试验有了起色时,是不是想和同行探讨一下,工作中有了心得,您是不是很想与人分享,那么不要只是默默工作了,写下来吧!投稿时,请以附件形式发至 paper@h2o-china.com ,请注明论文投稿。一旦采用,我们会为您增加100枚金币。