首页 产品简介 动画演示 公司简介 应用软件 联系方法 新闻和事件 论坛  


超越 CAD 潮流

HiWayCAD简介

HiWayCAD 是一个基于网络服务的独立式,两维,工程设计 CAD(Computer Add Design), GIS(Graphic Information System) 应用软件。 因为它是用最新技术和数年来追求完美的学术探索,疑难攻关,所以,有着诸多的亮点,展示出下一代CAD的基本架构。 至今,HiWayCAD仍是一个学术项目,而不是一个商业品牌。既然谈不上在商言商,HiWayCAD就可以自由地发挥其艺术想象力,精雕细做,尽善尽美。

更多特性请浏览动画演示.

但愿这个软件可以造福大众,用于CAD学习,学术交流活动以及商业应用。

.NET 解决方案

如今,IT技术已经发展到了.NET阶段: 新开发的软件定会首选用.NET来做业已存在的软件早晚也会升级到.NET

什么是.NET 平台

微软公司 的.NET是基于虚拟机的工作平台。.NET被设计成为支持开发独立于操作平台的应用软件的计算机语言。所有.NET的组件都独立于任何操作平台和机器物理硬件。实际上它们可以运行在任意物理机和任意具有.NET框架的操作系统上。 .NET的核心组件是“通用语言运时” (CLR)系统,它提供了虚拟的运行环境(物理机和操作系统)并管理任意基于.NET的应用软件全部执行。在.NET上微软公司开发了一套完整的结构,用于视窗应用软件(WinForm),数据存取(ADO.NET), 网络应用软件(.NET remoting),视窗应用组件(Assemblies),分布式应用软件(.NET remoting)和更重要的是基于XML网络服务器。

HiWayCAD是.NET 软件

.NET的核心是C#,它是在人类已有经验的精华的基础上再加上革命性的创新。.NET的风格不是一种时尚,它的精髓标志着软件应用和开发商的水平。

由于C# 或多或少地与其它语言不同,这在某种意义上来说,也是一种挑战。

HiWayCAD是.NET应用软件。如果用户机不能运行HiWayCAD,就一定是没有CLR系统,那么,可以到微软公司的网站上取下载,是免费的。

HiWayCAD的框架设计

在这个世界上,也许曾经有过成千上万的CAD软件,但即使是使用同样的技术并能达到同样的结果,它们的用户界面和操作性能也会有相当大的差别。在这方面,HiWayCAD所追求的是尽善尽美。下表所示为HiWayCAD创造性的特色:

·         “VS.NET”风格框架,现代理念,精巧设计

·        用具有记忆功能的对话框代替某些主流软件上常用的命令行输入法,方便用户进行参数浏览,验证,尤其是返回重做,只要修改其中某个参数即可, 而如果是命令行输入法,就必须重复所有的参数。在这里,对话框列阵拷贝和对话框旋转拷贝都是很好的例子


·        在对话框里做出输入参数的模拟图形演示,使得数字变得即形象又逼真。对话框旋转和对话框旋转拷贝即是很好的例子


·        特性鼠标:从实践中体验到,用户绘图时只盯着鼠标,很少光顾提示栏里的信息, 诚然,强制用户“左右逢源”或是“两者兼顾”也是十分荒唐的。有鉴于此,HiWayCAD设计了50多个特性鼠标,属同一分类的鼠标有相同的热点图案, 但有别于不同功能,下标图案亦不尽相同


·        声控:口述指令来代替鼠标及键盘操作,是未来软件发展的方向之一。鉴于目前硬件水平还不过关,这项技术仍处于试验阶段。


·        音频导航:是本软件的亮点之一,是前述“特性鼠标”的升级。CAD的特点是持久的人机交互,尤其对于复杂操作,单靠视窗底部的“状态栏”文本提示是不够的, HiWayCAD还设计出了另外一种用户选择,即运用“多线程”技术把这个提示文本给读出来,而且声音也可由用户选择。


·        网络服务:是未来软件发展的方向之一。某些动态或大量信息如参考资料,论坛等不能做进软件里,也不适合放在网站上,而“网络服务”成为最佳选择。

从另一方面说,“网络服务”也是软件自动更新的唯一手段:软件设计成为“后绑定”(Late Bound)式组件,亦即动态联接库文件“*.dll”,如果有补丁,就更新该组件,并上载到“网络服务器”, 当用户启动HiWayCAD时如果已经联网,系统就会自动比较所有组件的版本,如果自己的版本号小于“网络服务器”上的,就会提示(或不提示)用户相应信息,如用户认可, 系统就会自动下载补丁组件,并替换现有的组件。这个新的技术革命,改变了软件设计的传统思想。

假设做预制构件的施工图设计,用户首先需要确定预制构件的品牌和规格编码,然后是详细数据,包括外形尺寸。这些数据不能驻留在应用软件里, 因为构件的修订,增减规格编码随时有可能发生。虽然利用生产厂家的网站可以获得最新资料,但网络服务可以做的更多更好。比如, 可以在应用软件里浏览不同厂家的产品,选中其中一个拖拽到图板上制定位置,它就会自动调整就位,并且由于它具有所有详细数据,制作概算, 预算和结算都可以实现自动化。

作为HiWayCAD应用程序的一部分,有些“水晶报表”驻留在“网络服务器”上,根据用户各自的实际需要,提供广泛的服务。例如上述制作概算, 预算和结算,由于.NET支持“水晶报表”,使图文并茂的报表自动化成为可能。


·        错误报告:当计算过程出现被除数是零的时候,系统弹出对话框来提示用户是否通知开发人员。 如果用户认可,仅需按一下OK键,该错误的系统描述精确信息和作为附件的工作文件“TEST.hwc”及日志文件“TEST.log”会同时发往开发商。 工作文件显示出错时的工作状态。日志文件象飞机里的“黑匣子”,记录了工作文件从开始到出错时的所有操作步骤。下图所示为开发人员接到的错误报告电子邮件。

这个具有创造性的发现给软件测试和质量保证工作带来了新的生存空间和定义。


·        DXF文件: DXF(Data eXchange Formate)文件是标准的ASCII代码,设计用来在不同的CAD之间交流信息的。它由一系列标识符和值组成, 所以它属于旧式设计,必须借助翻译来阅读,而且很难表达复杂结构的数据。HiWayCAD采用标准的XML文件格式,解决了所有上述问题。另外, 这种XML文件格式还可以看作工作文件*.hwc的可读版本,用于直接的数据分析,比如,文件间的行与行之间的比较。


·        动画的帮助文件: 用语言来解释一个图形特性往往是很困难的,总不如用图像来得更真切,但更好的方法是动画,因为动画来自于真实的环境,可以一步步地讲述一个真实的故事。

人们理解用语言来描述的图形特性是在大脑里编织一幅幅动画。有时候这种动画是很不可靠的。那么,实现物理动画来代替语言就可以省去这些靠不住的想象。而且物理动画会绝对的可靠。

用传统的WinHelp技术很容易制作帮助文件,但它远不如现代的HtmlHelp功能强大。HtmlHelp的工作方式很象是一个完整的网站,所以它也可以分享网络资源。 HiWayCAD就是充分利用了这个特色,并不主张长篇大论,而是精于语言,重点动画。实际上这很简单,因为动画不是本地资源,只是给出它的网络地址就够了。

用动画来解释图形特性,比通常的语言解释要清晰的多。


·        节点选择: HiWayCAD定义了一个新的“框式选取”法则:在传统的左上到右下右上到左下实体选择法之外,又定义了左下到右上右下到左上节点选择法。 与实体选择法不同的是节点选择法只显示节点选择标志,而没有加亮实体本身。 这个特性在“尺寸线”和“拉伸”命令中有其有用。比如“拉伸”命令,传统CAD无法表示选择了哪些节点,尤其是在大规模选择时,会造成不必要得困惑。


·        节点拖拽: HiWayCAD加强了节点拖拽功能:保持原有几何属性不变。比如拖拽一个成角度的矩形的一个节点,传统CAD直接移动那个节点,其结果就不再是矩形了而是一个闭合折线。 HiWayCAD不仅移动那个节点,而且还移动那两个毗邻节点,以继续保持其原有的矩形属性。如果确实只想移动那一个点也是可行的,但要师出有名,名正言顺。方法是,用一个简单命令先把那个矩形转变成闭合折线,再拖拽那个节点就可以了。


·        功能强大的“层管理器”: “树状”结构的“层管理器”: 定义的层用“树状”结构来进行组织编排。拖拽法可以任意重组结构。可以进行“树状”结构的节点操作。列表施行“原位编辑”。

与绘图板双向沟通互动: 1. 改变一个曾定义会在绘图板面立即反映出来。 2. 从“层管理器”中选取一个层,在图面上选图素,那么,该图素的“层”定义就会更新; 3. 发出热点菜单中寻找层定义命令,该层在“层管理器”的位置就会被加亮,如果是闭合的状态,也会自动打开。如果找不到这个层,系统会发出相应的信息。这个功能在大规模绘图中非常有用。

用*.XML文件格式输入输出部分或全部层定义。内容包含材料或构件定义。由此可以用“水晶报表”来做专业报表,如概算,预算,结算等...

可扩展性:真正面向对象结构:所有各类图形成员定义的类(CLASS)都是工作类CGraph的继承类, 工作类CGraph是虚拟基础类CGraphBase以及其它一些接口(INTERFACE)的继承类, 而CGraphBase又是.NET基础类object和接口ICloneable的继承类。这样一来,图形成员的扩展可以是现有图形成员类的子类, 亦可以是工作类CGraph的子类,而所有宏观定义的功能块都会自动保留。

企业级版本

至此,所有的讨论都是面向公众的普及型版本,所以它必须做得尽量简单。企业级版本是面向企业企业的版本, 所以它必须具有非常强大的功能。

智能化:在系统等待期间,多线程将会被启动,自动评估下一个操作的若干可能性,自动准备好相应的数据。

操作性:对于大型绘图,屏幕刷新往往消耗大量成本,从而降低运行速度。为解决这个问题,参照上面所述,在系统等待期间, 多线程将会被启动,自动产生屏幕影像并置于内存储器当中。这样一来,屏幕刷新只是一次性绘制屏幕影像, 而不必考虑重新绘制所有图素,就好像根本不消耗时间似的。

兼容性:能够输入和输出一些主流CAD软件的文档。

报表:水晶报表业已成为行业标准,亦将被用于HiWayCAD之中,但至今这还是个选项,因为用户的要求很难统一成一个标准。

视窗系统剪切板的支持:将会使本软件中页与页之间,或是跨应用程序的信息交流成为可能。

成功之本

要成就如此规模的复杂至极的工程软件,最关键的因素是要有一个精通各种所涉及专业技术的,并近乎疯狂的追求者。

1. 应用与开发合二为一

在软件公司,通常由于应用与开发的专业隔阂,软件开发人员不懂应用专业,那么,企业内部的跨专业合作就会成为必然。虽然隔行如隔山, 但即使软件开发人员懂一丁点应用专业,他也会被提升为管理人员,久而久之,他最多只能勉强保留一个专业。事实上, 精通应用与开发两专业知识的人少之又少。

庆幸的是HiWayCAD的作者正是这样一位精通应用与开发两专业知识的人。作者具有多年的CAD制图职业, 若干年CAD开发以及CAD二次开发的工作经验。并且作为软件开发人员,作者从来就是企业中开发应用高新技术的先驱者。

2.化积木为金字塔

在一个软件开发团队里,由于每个开发人员的技术经验不同,通常分成初级,中级和高级,那么就必须分工协作,以老带少。团队规模越大, 分工也就越细。分工后的小组或个人各有各的任务,各有各的产品。这些功能不同,风格各异的产品最终被拼装成一个完整的应用软件。 这样的拼装常常会是大问题的隐患。有些拼装的例子很容易识别,比如在某些大牌软件中,有些功能是视窗式的对话框, 而另一些功能则是DOS式的命令行。

如果把这种分工协作形象地比作搭积木,那么HiWayCAD的模式就好比是金字塔,因为它是一个完整的模块,统一的功能和风格。 HiWayCAD的数据结构是完全“面向对象”的,其工作类是所有继承子类的基础类,在基础类中定义了所有继承子类中通用功能的虚拟表达式。 用户界面只要访问这个基础类的虚拟表达式,系统就会自动引导它去它该去的地方,即目标子类:
class CBaseClass{public virtual void GetName(){};}
class CSubClass : CBaseClass {public override void GetName(){};}
CBaseClass cb = new CSubClass ();
cb. GetName();

但如果某个功能的应用是唯一的,没必要在基础类中定义虚拟表达式,而只是把它独立定义在子类中,那么, 用户界面访问这个功能是就要注明它的所在:
class CBaseClass;
class CSubClass : CBaseClass {public void GetName(){};}
CBaseClass cb = new CBaseClass ();
((CSubClass)cb). GetName();

由于这种模式好比金字塔结构,我们不妨就叫它金字塔,用以区别搭积木的模式。

3.追求完美

作为雇员在公司里工作,商业利益往往是最高准则,为了完成任务,各种大小不同的敷衍行为在所难免。 常见的一种现象是软件升级只考虑作用户界面而绝然不顾背后的运行逻辑。比如,软件最初是用Fortran语言写的纯DOS界面, 后来改用VB做成Windows界面,而其后台支持系统仍然保留原来的Fortran语言代码。

这种情况决不会在HiWayCAD中出现。HiWayCAD用的是最新的C#技术,完全没有混合语言的现象,当然除了些必要的C++代码,但它们是API, 属于C#的设计范围。

4. 追求辉煌

在公司里工作,一个程序员的任务充其量不过是完成领导交给的任务,无论你是否喜欢这个任务,也不管你是否有更好的解决方法,所以对任务的热情也就无从谈起。

HiWayCAD的领导者就是开发者其本人,上述矛盾自然不存在。这种“合二为一”有如“人神合一”,开发并放大了两方面最积极的因素。

HiWayCAD是着眼于学术和市场两方面的,作者的目标是领导学术的新潮流和引导市场的新认同。基于这些期盼,有些功能模块被更新了一遍又一遍。 HiWayCAD的作者为此而自豪,但若是在公司里工作,这样的反复修订会被视为责任性失误。

因为HiWayCAD梦寐以求的是最高成就,这种诱惑力存在于生命中每一个日日夜夜。随着开发进度一步步接近目标,热情也就会随之一步步升高, 甚至会达到狂热。这种诱惑力在公司办公室是决不会有的。

对于这般不可思议的“鬼斧神工”般工程,可以理解,没有极其艰苦的奋斗和狂热的追求精神是绝对不可能的。

5.庞大开支

综上所述,大型软件如HiWayCAD,若是在常规软件公司制作,其开销恐怕不只千百万美元以及数年的时间。尽管开销甚巨, 谁敢保证有把握把HiWayCAD比下去呢。


亮点

比较同类领导性产品 (LCAD)

分类 HiWayCAD 同类领导性产品 CAD
技术上挑战同类领导产品
  1. 变色阴影无色彩和波纹限制
  2. "层"以树状结构管理
  1. 变色阴影色彩有限制, 无波纹
  2. "层"分组管理
层管理器
  1. "层"管理包含材料信息
  2. 原地编辑
  3. "树"节点编辑可作用于子节点
  4. 用拖拽来编辑"树"结构
  5. "层"输出/输入XML
数据通信
  1. XML: W3C 国际标准, 最新技术
  2. 可以描述"树"等复杂结构
  3. 副效应: 工作文件可以比较
  1. DXF: AutoCAD 规则, 80 年代技术水平
  2. 不可以描述"树"等复杂结构
  3. 工作文件不能进行比较
编码
  1. .NET 兼容
  2. 自主代码, 从零做起, 扩展时可编辑核心组件
  1. 不兼容 .NET
  2. 二次开发不可触及核心组件
面向对象的设计
  1. 执行代码小于5兆字节
  2. 代码最大限度重复使用, 没有重码, 废码
  3. 专业化编码: 干净, 整齐, 规范化注释
    执行代码大于150兆字节
工程设计人员
  1. 代码由一人承担, 保证内部完整性和标准的统一性
  2. 外部界面风格的一至性
  1. 代码由多人多次积累而成
  2. 界面风格的命令行与对话框混合存在
用户界面
  1. 有记忆力, 可重复使用的对话框
  2. 显示成比例, 真实物理特性的图形"预览"
  3. 极为丰富的显示工作状态的光标
  4. 声音导航
  5. 变色跟踪线
  6. 目标闪烁
  1. 非记忆性对话框
  2. 命令行, 特别是缩写命令, 非用户友好界面
  3. 少许普通光标
  4. 无声音效果
  5. 跟踪线与实体线混淆
  6. 没有闪烁
网络服务
  1. 是未来软件发展的方向, 走在时间的前面
  2. 拖拽"网络服务"组件到绘图中包含了组件的几何和物理数据集
  3. 在"甩掉图板"后又将"甩掉设计手册"
  4. 利用C#所支持的"水晶报表"实现报表自动化: 如工程概算, 预算, 结算等
出错报告
    在.NET框架里, 出错的编程信息会节约大量找错时间, 避免出错现象不能重演的窘境
DLL 的后绑定
  1. 在案.NET里, DLL 即可以在编译时完成连接, 也可以在编译之后再连接
  2. DLLs 有选择地下载以构成不同的版本或不同的专业软件包
  3. 发布补丁简化为更换DLL文件
  4. 版本升级也是一样, 更换EXE或DLL文件
二次开发
  1. 可自选组件组合, 实现"有用的一个不少, 没用的一个不多"的"量身定做"
  2. 没有二次开发库. 常规.NET技术足矣
  3. 与核心模块融为一体
  1. 核心模块太大, 非期望的东西太多, 造成混淆
  2. 依赖专用二次开发库, 需要额外花费精力去学习
  3. 与核心模块界限分明, 并受到开发库的限制与制约
具有动画的联机帮助
  1. 简短的功能描述
  2. 强化的动画演示
  3. 非自有动画,而是指向互联网,分享网站资源
  1. 沉长的功能描述
  2. 无动画演示