找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 867|回复: 2

[原创]:有感而发---面向对象的绘图理念

[复制链接]
发表于 2007-8-2 23:07:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
windows为了规范化和统一标准在其环境下开发的应用程序,把应用程序分为若干的区域(标题栏、菜单栏、工具栏......),符合windows这些标准的程序因为有统一的操作模式,所以易学易用;autocad这么大规模的程序同样也是标准的windows程序,对于初学者,autocad的操作模式因为标准所以很容易就掌握了;一般的规律,套路化的东西往往不是最高效的,autocad也是如此,不过autocad也提供了提高效率的一些有效途径。
面向对象的编程思想很早就出现并被程序员广泛的应用,本人使用autocad已经近5年了,感觉面向对象的思想不仅仅是在编程领域,autocad的绘图技术同样也可吸取面向对象的思想。我也做过一段时间的程序,在编程领域,一个概念就是程序的“焦点”,形象一点就是打开一个对话框时,我们按下TAB键时在对话框控件之间跳动的虚框,我们用autocad绘图的“焦点”就是绘图区域的cad图元,我们的注意力要保持在这个“图元焦点”,才能把有限的精力用在效率上,但是往往为了启动每一个cad命令,我们往往要把“焦点”移动到autocad程序的工具条、菜单栏、命令行上,完成点击后在移动回绘图区域接上中断的绘图任务,虽然autocad有鼠标右键重复上次命令等一些快捷措施,但我们在绘图区域的“图元焦点”,还是被一次次的打断,有一次次的接上,弄得我们很狼狈,很劳累,而绘图的效率也不高。
我个人认为,焦点的转移与切换,是我们的有限精力和体力很大一部分浪费在绘图以外的东西上,是我们绘图效率提高的重要障碍所在;我个人一直再想,如何在注意力一直在绘图区域的前提下完成其他的操作,尽可能小的使我的注意力不被影响,从而我提出了这个面向对象的绘图理念,再多的文字叙述,不如具体的例子更具备说服力,下面我分别举几个具体的例子来对比常规方法和面向对象理念的差距。
1、autocad中最常用的命令莫过于移动和拷贝命令,就拿这两个对比。
(1)、常规做法
把鼠标从绘图区移动到工具条,点击工具条,再把鼠标从工具条移动回绘图区,执行移动或者拷贝操作,这其中,我的鼠标经历了两次移动和一次点击才完成启动相应命令的目的,我们的“焦点”也经历了从绘图区域移出、移回再衔接的过程。
(2)、面向对象做法
  一、夹点法   适用于单个图元的带基点或不带基点(自由)移动、拷贝,直接点击夹点拖动鼠标为移动,拖动鼠标的同时按下ctrl键,首次单击后就是复制功能,如果在首次单击后放ctrl键,接下来的鼠标点击就是自由复制,如果首次单击后继续按下ctrl键,就是等距拷贝,此时的距离就是上次点击移动的那个距离;再者如果同时再按下shift键,就是正交移动或拷贝,移动鼠标的过程中,单击右键,可以开启夹点编辑菜单,一般用来切换夹点编辑的基点。
  二、选择拖动法  适用于单个或者多个图元的自由(无基点和正交功能)移动和拷贝,按下ctrl键为拷贝,否则为移动,选择图元后点击拖动的位置要避开夹点的位置。
2、autocad2006版的dyn(动态输入)特性也体现了面向图元对象的概念,用动态输入代替命令行,可以是我们的注意力(焦点)不必下移到绘图区的下面,直接在图元的位置就可以输入、显示、回应在执行cad命令过程中的交互要求,利用好这一特性对我们提高绘图效率是有很大帮助的。
  3、autocad提供了自定义快捷命令(acad.pgp文件)来避免注意力由绘图区与菜单栏、工具条间的切换,把常用的命令定义成左手键,可以从很大的程度上摆脱焦点的移动切换,这一点想必大家都很熟悉,我就不多说了,关键是建立一套适合自己的左手键。
  4、对那些不好定义成为左手键的命令,或者是不常用的命令,天正给我们提供了一个面向对象的启动命令的方式,那就是右键菜单----在图元的上方(开启cad2006的选择预览)单击右键,会出现根据图元的实体类型和图层而显示的菜单供点击启动,这中方式虽然也要点击两次鼠标再加上一次移动鼠标才能启动特定的命令,好像比(1)中的常规做法的“两次移动和一次点击”差不多的动作,但是还是我强调的,关键是我们的注意力(焦点)一直都在绘图区域的图元,没有受切换注意的痛苦。
  
  
现在,我正在致力于面向对象的绘图理念的研习,通过不断的思考和学习,所得到的体会和实际的绘图经验也逐渐的高效和丰富;autocad本身开放的体系给我们留下了足够的自由行动与思考的空间,同样是一个版本的autocad会随着不同的使用者呈现出不同的效率和水平,只要我们有心并善于思考与探索,每个人都会成为autocad应用或者编程方面的专家,只是每个人的程度不同罢了。
我写这些东西希望起到个抛砖引玉的作用,autocad实际的绘图精髓,相信大家会比我更有体会和感想。
最后一点想说的就是,autocad是个通用的绘图软件,可以说无所不能,但纯cad对付很专业的东西效率太低,针对自己的专业选择一个合适的cad下的二次开发(我搞施工图的建筑用天正建筑和tdcommand、结构用tssd 天正结构)外再加上一些经典的lsp程序作为辅助还有一些自己在实际绘图中的原创(比如我的“数字图层”),再通过自己不断的提高对cad体系结构理解和掌握,才会出现高效完成手头工作的理想状况。
好像别人没有提出过“面向对象绘图理念”,我也想不出更好的名字来表达,暂且就这个叫吧,不妥之处请见谅。
花了些时间,罗罗嗦嗦的说了一些,仅供参考!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-8-3 00:10:50 | 显示全部楼层
赞!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-3 17:46:15 | 显示全部楼层
autocad好学但不容易深入,能针对自己的专业进行一个合适的cad下的二次开发那就更不容易了,希望1楼楼主能给我们带来更多的福音。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-11-14 16:54 , Processed in 0.316424 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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