- 积分
- 1259
- 明经币
- 个
- 注册时间
- 2004-4-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2004-5-16 15:56:00
|
显示全部楼层
我在1998年之前是没有接触过CAD的,只是听说过. 在97年那时, 我买了当时流行的小霸王学习机. 当时不带软驱的. 当时就学习了五笔, 及G-Basic. 后来买了Logo语言学习卡, 在小霸王上学了一阵子的Logo语言. 感觉它能够画图. 可以编程序,按程序就 可以重复性的画图了, 当时也就试验性的画画而已, 也没有什么实用价值. 在98年夏天,就用工资所积累的存款买了一台K6-266电脑,那时,我是一名普通的工人. 因为知道CAD这个
名号, 所以就装了CAD-R14的英文版. 想也认识一下别人口中经常提到的CAD. 当时也不会用, 看着黑黑的屏幕, 我是不知道我要干吗. 后来买
了相关的学习书, 照着书一点一点的 学, 才渐渐地掌握了基本的知识. 只是这个书没有介绍更多的建模知识, 只是介绍了用片面的方式建模
,后来我知道,这还不够,因为它不如实体造形好修改,特别是布尔运算. 而且这本书根本没有提及到LISP语言. 我想当时大概没有多少人懂这个东西吧. 2000年我失业了. 随后的两年没有工作, 待在家里. 在这两年里, 我学了一点Qbasic,及相近的VB, 再又
学了点C语言. 特别是C, 为我学奇怪的LISP打下了基础. 两年后, 通过家人认识了在装饰行业的设计师. 他就用CAD制图的. 这样我就在一家装饰公司里做了一
名绘图员 . 那时, 学CAD就有了目的. 画图的技能是逐步地有了提高. 也是看到来实习的大学生用键盘画图, 我也是按这个方式学会了. 然后在闲时就想了解CAD. 通过帮助文
件, 才知道CAD都配有LISP语言. 因为是英文的, 我就找了CAD-R14的中文版装了一下, 感觉它的稳定性不太好, 时不时的会突然崩掉. 我就把它删了. 当然, 我把中文的帮助文件给留了下来. 照着学LISP. 通过学习, 我是有了一些想法的. 这个中文帮助真的很好, 比英文的帮助上手容易多了.
所以我进一步想, 能不能把国外的优秀的软件的帮助文件也都翻译过来有多好, 这绝不比国家 的863及任何的科技进步的计划都差! 要知道,这相当于是在培养潜在的人才啊. 我的英文确是差了点,
所以我只看中文的帮助.这样想来, 那以英文为主的西方人水平又比我们高了不知有多少啊. (有时我在
想, 不知哪个时候,我们看西方人, 就好比看外星人一样, 从头到脚地不懂了,因为他们太先进了!) 后来,临时性的进入了一家建筑设计院的绘图部. 那时前年的冬天. 他们也用CAD , 也是R14版本的. 知道了他们使用天正的外挂软件. 看着他们做的图,我了解到像门\窗等常用的图形是用块的形式插入的. 这使我有了想法,编程实现这种做法的动力. 这样, 编了专门插入块的Sub, 可在插入时缩放的Sub,可只
限定X轴或Y轴缩放插入的Sub, 以及用鼠标给定三个点画2D门符号的Sub. 做图时确实提高了效率. 插入
块时, 就像是拼音输入法一法方便. 离开设计院后, 仍时不时地编一些程序. 编好了就合并在一起. 再
重新编译一下.这样,我的程序也是多了起来. 我总结了一下, 我所编的不过就是利用现成函数,及现成的
CAD命令,把它们有机的结合起来而已. 就看你想法多不多罢了. 后来,用上了CAD2002. 发现它可以更好地保护我的LISP. 所以我就不用老版本了. 因为听说园方的渲染
软件不错,就安装了园方的8.0 , 其实后来才发现, 它还是不如LightScape出的效果好.在使用园方期间,
我注意到它给CAD带来的变化. 首先是4个视图的绘图界面给了我很深的印象. 还有视图的前裁与后裁,使
视图只关注图形的限定的的空间. 通过查找CAD的帮助, 了解到前裁与后裁就能用DV来实现. 因此我专门
针对此命令编了一个Sub, 这样我在做立体图的时候, 效果跟园方的一样. 还有四个视图, 我是在大量地 了解视口的数据组合后才找到了编程的突破点, 也已经实现了. 还有园方的投影定位, 我也编出相应的
Sub实现了(园方只有Z轴向定位, 而我一并有了X轴向,Y轴向的投影定位). 这些对我做家装的立体效果图
很有帮助. 真的感谢园方, 没有它, 我就不会有触类旁通的想法,虽然我早已经不用园方. 前面说到Logo,我觉得CAD就相当于Logo, 也能编程序, 也能画图. 不过实现的方法不一样罢了. CAD画图
方便,主要是用了鼠标, 还有视图可以平移, 几乎没有绘图的界线. 而Logo, 就差得多了. 想当时我在
Logo里照着书编了一段程序, 早在一年半前我把它用Lisp编好了. 现拿出来分享与大家.
(DEFUN c:abc (/ p1 p2 dist ang delta lenth lenthdelta) (PRINC "请输入角度<0 - 360>: ") (SETQ delta (GETREAL) ang 0 ) (PRINC "\n请输入终止长度 ") (SETQ lenth (GETINT)) (PRINC "\n请输入长度迭增值: ") (SETQ lenthdelta (GETREAL)) (PRINC "\n请输入起始点位置") (SETQ p1 (GETPOINT)) (SETQ dist 0) (WHILE (< dist lenth) (SETQ p2 (user_pxy p1 ang dist 0)) (ENTMAKE (LIST (CONS 0 "line") (CONS 10 p1) (CONS 11 p2))) (SETQ p1 p2) (SETQ ang (+ ang delta)) (SETQ dist (+ dist lenthdelta)) ) ;wend );endfun (DEFUN user_pxy (p1 ang dist distz / px1 py1 pz1 px2 py2 pz2) (SETQ px1 (CAR p1) py1 (CADR p1) pz1 (CADDR p1) px2 (+ px1 (* (COS (* (/ PI 180.0) ang)) dist)) py2 (+ py1 (* (SIN (* (/ PI 180.0) ang)) dist)) pz2 (+ pz1 distz 0.0) ) ;_ End_setq (LIST px2 py2 pz2) );endfun
例1) abc 角度: 121 终止长度: 600 长度迭增值: 3 用鼠标定一点:
例2) abc 角度: 90 终止长度: 600 长度迭增值: 5 用鼠标定一点: |
|