《给排水系统图实时窗口的CAD开发技术》由会员分享,可在线阅读,更多相关《给排水系统图实时窗口的CAD开发技术(3页珍藏版)》请在金锄头文库上搜索。
1、1给排水系统图实时窗口的 CAD 开发技术摘要:将多窗口技术应用于给排水 CAD 软件包中,在主窗口进行管线平面布置,在副窗口实时形成其系统图,这样可以提高软件的容错性和设计效率。本文详细讨论了多窗口 CAD 系统的实现技术。 关键词:建筑给排水 CAD 软件 排水工程 CAD 系统中,在一窗口进行管线平面图设计,欲在另一窗口中实时生成刚布置管线的系统轴测图,这样就必须获得所有窗口的控制权,即用户在一窗口中进行操作,创建一个实体 A,程序员利用实体 A 的图形数据,在其他窗口中生成不同实体来表达实体 A 的不同形态。由于给排水平面图的坐标系如图 1 所示,而系统图的坐标系如图 2 所示,系统图
2、坐标系的获得想通过用“VPOINT”设置视点是绝对不可能的,而且平面图向系统图转化不是完全由投影关系决定的。因此,直接利用 Auto CAD 提供的窗口操作技术不能解决以上问题。 可见,改进 Auto CAD 的多窗口显示技术是完善给排水 CAD 系统开发的一个重要课题 。在多窗口建筑消防 CAD 系统中,作者成功地改造了 Auto CAD 多窗口显示技术,满足了设计要求。1 多视窗控制技术改进多窗口显示技术主要有两种方法:2 创建您自己的窗口。采用 Auto CAD 提供的 ADS 接口,用 C 编程,去创建自己独立的窗口。然后,调用 Auto CAD 的绘图、编辑命令或函数来绘图。这种方法
3、工作量很大,而且还要考虑到自己编制的窗口与 Auto CAD 的接口,影响了Auto CAD 的使用效率,不太实用。 直接改造 Auto CAD 的窗口。采用“MVIEW”窗口(注意一定不能采用“VPORTS”窗口,因为该窗口达不到您的目的),将每一窗口分成显示层和非显示层,冻结非显示层,解冻显示层。在程序中将对窗口的控制转向对不同层的控制,这样就把问题简化了。但是,由于在任一窗口中都存在显示层与非显示层,在该窗口中想对非显示层上的实体进行选取、编辑、控制就显得有点力不从心了,好在Auto CAD 提供了“CVPORT”这一系统变量,利用它就可以“遥控”每一窗口。到此,就较好地解决了多视窗中对
4、每一窗口的控制技术。这种方法工作量小,全部采用内嵌的 AUTOLISP 编程,是 Auto CAD 的内部处理,较实用。而且,每一视窗中均可以直接利用 Auto CAD 的“ZOOM”、 “PAN”进行局部缩放、漫游,视窗的大小调整、视窗搬移均可很简单地由程序来控制实现,若干视窗还可以部分重叠,不必平行设置。多视窗系统创建、控制的程序框图如图 3 所示。 2 多视窗系统窗口的调整多视窗系统尽管具有直观、形象的特点,但是由于该系统占用了窗口空间,使得主窗口变小、视图变小,影响了视觉。因此,有时需要对副窗口进行搬移、大小调整,甚至将多窗口系统转向单窗口系统。 窗口搬移用“(VPORTS)”函数可以
5、返回多视窗系统的窗口配置,其结果是一个复合表。3如某系统窗口配置用“(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
6、 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) 窗口大小调整再以上述多视窗系统为例,若要对窗口
7、“3”大小作调整,程序如下:(defun c:dragwin(/p pl)(command “pspace”);进入纸空间(setq pl (getcorner(cadr(assoc 3 (vports)“/n 请拖动窗口到合适大小:”)4(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
8、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“tilemo
9、de”1)(command“zoom”“e”)(command“zoom”“0.8x”)(princ)3 结语将多窗口技术应用于给排水 CAD 软件包中,在主窗口进行管线平面布置,在副窗口形成其系统图,即每布置一条管线,便同时在副窗口形成相应的系统图,这样可直观、形象地反映出设计成果,减轻设计难度,而且若有错误能及时发现并修改,以防中途设计一步错误而引起大的返工,从而提高了设计效率。但是直接利5用 Auto CAD 提供的窗口操作技术不能解决以上问题,在多窗口建筑消防 CAD系统中,作者成功地改造了 Auto CAD 多窗口显示技术,在副窗口实时形成管线的系统图。因此将多窗口技术应用于给排水 CAD 较件包中,必将增强软件的实用性。