自从了解了vsto和sc(SmartClient)技术后,对以前Win32的二次开发技术,再也没有一点兴趣。对Office VBA, AutoCAD lisp, VBA, PowerBuilder PoserScript, MapInfo MapBasic 的开发,简直室深恶痛绝,希望一切能够想VSTO那样,做的那么简洁优美强大。
第一次接触Excel,是在测量数据处理中。但那时不会用,看着同事进行平差,两下子就搞定了。我摸索了一会儿,感觉到Excel很适合二次开发,就想是在二维表格哈桑进行数组运算。看了一下VBA,我马上便了个平差数据处理和水泥沙石头级配的小程序。再后来虽然一直想继续用VBA开发写使用的计算程序(测量平差数据处理,财务数据处理,以及各种表格计算),但感觉到VBA IDE很呆板,资源稀缺,编程模式别扭,一直没有深入。
再学AutoCAD的时候,很看不起它,就想我一直看不起VisualFoxpro,VBA,JavaScript一样,我找遍了每一个角落,也找不出一点有技术含量的吸引我眼球的模特级东东。花了几天时间,照着一本机械制图书,画了一些漂亮的艺术图案和机械零件图之后,在也没有仔细去研究过AutoCAD。然后学VisualLisp程序设计:我一样的讨厌的脚本技术。但是,不得不说的是:虽然我不肯能大量使用这门语言(除非进行一些改革:例如前缀表达式,因为我搞工程比较多,大部分的时间都是科学计算,用前缀太累了),我还是学到了一些从别的语言那里学不来的思想:表。原来,广义表结构,可以实现所有的数据结构和算法(虽然有开发效率和运行效率的问题),完全不同的编程模型,与传统的Basic,C,C++,Fortran,Pascal,Java.C#思维差别很大,也许,以后搞人工智能,有会用到这门语言(和Prolog)。我在上课的时候跟旁边的同学说,我要编一个程序,改变前缀表示法。我首先想到刚学的编译原理,用语法分析,词法分析技术,应该是比较自然的事情,所以我考虑用C++来编写,采用Tree数据结构,但与lisp调用有麻烦。 我认真看了几天的VisualLisp基本知识。最后决定用Lisp来编写。本来,我认为是一个不算很复杂的程序,(因为学了一点编译原理,数据结构(Stack),算法都相好了),但是最后还是花了一个星期才编完,点那我认为那功能还是算满强大的,不仅可以翻译简答的算术和函数表达式,还可以翻译符合数学规则的所有的缩写形式(例如2在数学上表示2×a的2a,就能正确翻译成(× 2 a),这在我所见任何语言中,都没有这个功能,带点原创性。这个程序编完之后,我感觉到lisp只适合研究,不适合开发,尤其是快速开发,而且我当时想到,我可以自己编写一门语言mylisp,把lisp语言中的一些不完美的地方,全部换成自己的语法。我想假设如果AutoCAD一直不提供一个合适的快速开发环境,仅仅式一些vba,lisp,objectArx,这类的低级技术,在我需要的时候,我会真的自己去开发一门我自己的lisp变种XieLisp。
伴随时间的流逝,历史也在前进。
远在昆山的同学让我给编AutoCAD程序,一个简单的sin函数绘制程序,一个缓和曲线绘制和一个横断面绘制程序。那个缓和曲线绘制程序,我用lisp编了一晚上,也没搞定(也不是搞不定,我只要写lisp语句,心里就很生气,很委屈,很不情愿:妈的,我会十几种语言,却要不得不用我最讨厌的看不起的那个)。最后我想还是用C++或者C#,但是同学说有必须用AutoCAD绘制。没办法,我只好上网下载一个AutoCAD,自己慢慢写,就算式死一回(反正痛苦了好几回了)。那也怪,一下子找到了一个网站,提供AutoCAD2006,那下载速度也太快了,311M,竟然几分钟就down下来了。我还真不敢相信!安装的时候,看见要安装提示要安装组件,一确定,竟然式.net framework,可把我给乐坏了。这说明,AutoCAD2006本省即使不基于.net framework,至少也支持.net 二次开发。我马上上网摆度一下AutoCAD .net,果然找到了这方面的资料:Autodesk官方网站 C#开发资料。
我看了一下,很熟悉,醇正的.net语法,而不是象ESRI吹牛dotnet实际上用的是P/Invoke技术(从那以后,我再也不用ESRI的产品,不去关注这个世界上自我吹嘘的老大,我看不起他)。照着便了一个class library,测试了,太好了,我真是爱死它了。
马上就可以用这项技术,可以大大减轻我的工作量,期待已久的技术,能不激动吗?
激动人心的AutoCAD .net开发技术
相关文章:

Linux Shell简介
目录 版权信息前言第一篇:超级工具/Terminals,xterms 和 Shells 一、超级工具二、为了说明 shell ,这里需要一些背景知识。 1、Terminals, xterms 与 Shells2、终端(Terminals)3、xterms4、Shells 三、Shel…

浙大博士130页论文,教你用人工智能挑西瓜
作者 | 神经小姐姐来源 | HyperAI超神经(ID:HyperAI)【导读】要问什么水果和夏天最搭,答案一定是西瓜。作为西瓜生产与消费大国,中国在 2018 年以全世界 20% 的人口消耗掉全世界 70% 的西瓜,人均 100 斤。如…

一些要注意的地方
1、tomcat启动一直保持在starting状态时,最简单的原因就是时间过短,将时间变长就可以了。若还不能解决时,还可能就是端口号被占用了。通过netstat -nao | findstr ""可以看到占用你所使用的端口号的进程id,然后通过tasklist | find…

NEON在Android中的使用举例
1、 打开Eclipse,File-->New-->AndroidApplication Project-->Application Name:Hello-Neon, Project Name: Hello-Neon,Package Name:com.hello_neon.android, Minimum Required SDK:API 9:Android 2.3(Gingerbread),Next-->去掉Create custom launch…

Android中的JSON详细总结
1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从…

新一届最强预训练模型上榜,出于BERT而胜于BERT
作者 | Facebook AI译者 | Lucy编辑 | Jane出品 | AI科技大本营(ID: rgznai100)【导读】预训练方法设计有不同的训练目标,包括语言建模、机器翻译以及遮蔽语言建模等。最近发表的许多论文都使用了微调模型,并预先训练了一些遮蔽语…

Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例
1、 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机; 2、 从 https://developer.android.com/tools/sdk/ndk/index.html下载android-ndk32-r10-linux-x86.tar.bz2; 3、 将android-ndk32-r10-linux-x86.tar.bz2拷贝到Ubuntu的/home/spring/NE…

Neon Intrinsics各函数介绍
#ifndef __ARM_NEON__ #error You must enable NEON instructions (e.g. -mfloat-abisoftfp -mfpuneon) to use arm_neon.h #endif/*(1)、正常指令:生成大小相同且类型通常与操作数向量相同的结果向量; (2)、长指令:对双字向量操作数执行运算…

ubuntu bind9 配置简单记录
ubuntu bind9 配置简单记录ubuntu版本:Ubuntu 12.04.2bind9安装:apt-get install bind9bind9配置文件目录:/etc/bindbind9主要配置文件:named.conf.local以及对应db配置1,主服务器配置:rootubuntu:/etc/bin…

不止最佳长论文,腾讯AI在ACL上还有这些NLP成果
编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导语】7 月 31 日晚,自然语言处理领域最大顶会 ACL 2019 公布了今年的八个论文奖项,其中最佳长论文的获奖者被来自中国科学院大学、中国科学院计算技术研究所、腾讯 We…

python中package机制的两种实现方式(转载)
当执行import module时,解释器会根据下面的搜索路径,搜索module1.py文件。 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/local/lib/python) 事实上,模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。 sys…

Magento如何使用和设置CookieSession
2019独角兽企业重金招聘Python工程师标准>>> 给大家介绍两个Magento的核心对象-Mage_Core_Model_Cookie & Mage_Core_Model_Session 首先介绍Mage_Core_Model_Cookie,这个对象主要是用来设置Cookie的,里面主要下列方法&#x…

AI+DevOps正当时
随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,…

clientdataset 用法
影响ClientDataSet处理速度的一个因素TClientDataSet是Delphi开发数据库时一个非常好的控件。有很强大的功能。我常常用ClientDataSet做MemoryDataSet来使用。还可以将ClientDataSet的数据保存为XML,这样就可以做简单的本地数据库使用。还有很多功能就不多说了。在使…

用vs2010编译vigra静态库及简单使用举例
1、 从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz,并加压缩到D:\soft\vigra,生成vigra-1.10.0文件夹; 2、 从http://www.cmake.org/cmake/resources/software.html下载CMake并安装; …

39个超实用jQuery实例应用特效
2019独角兽企业重金招聘Python工程师标准>>> 1.Contextual Slideout:上下文滑动特效 2.Revealing Photo Slider:图片幻灯片特效 3.Fancy Box:魔幻盒 4.Scrollable:滚动特效 5.Flip:翻转特效,实现4个方向…

Android.mk和Application.mk文件语法规范说明及举例
以下英文内容摘自:http://www.kandroid.org/ndk/docs/OVERVIEW.html The Android NDK is a set of tools that allows Android application developers to embed native machine code compiled from C and/or C source files into their application packages.NDK d…

ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API
本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API。 新建项目,选择"ASP.NET MVC 4 Web应用程序"。 选择"基本"项目模版。 在Controllers文件夹下添加一个名称为"TestController"的空API控制器。 在引用文件夹中多了以下…

滴滴自动驾驶部门成立独立公司,CTO张博兼任新公司CEO
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:8 月 5 日,滴滴出行官方微信公众号发文,宣布旗下自动驾驶部门升级为独立公司。目前,新成立公司的名称还未曝光,但据官方介绍将专注于自动驾驶…

在ASP.NET MVC下实现树形导航菜单
在需要处理很多分类以及导航的时候,树形导航菜单就比较适合。例如在汽车之家上: 页面主要分两部分,左边是导航菜单,右边显示对应的内容。现在,我们就在ASP.NET MVC 4 下临摹一个,如下: 实现的效…

mongodb学习笔记6--杂项与补充
2019独角兽企业重金招聘Python工程师标准>>> 1。适用场景:持久化缓存层,高效的时效性,用于对象和Json数据的存储,高伸缩性的场景,大尺寸,低价值的数据存储。 不适用:高度事务性的场景…

GraphSAGE:我寻思GCN也没我厉害!
作者 | 郭必扬来源 | SimpleAI(ID:SimpleAI_1)众所周知,2017年ICLR出产的GCN现在是多么地热门,仿佛自己就是图神经网络的名片。然而,在GCN的风头中,很多人忽略了GCN本身的巨大局限——Transductive Learnin…

CxImage的编译及简单使用举例
1、 从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码; 2、 解压缩后,以管理员身份打开CxImageFull_vc10.sln工程,在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteC…

如何使用好android的可访问性服务(Accessibility Services)
原文:http://android.eoe.cn/topic/android_sdk * 主题* Manifest声明和权限 可访问性服务声明 可访问性服务配置 AccessibilityService方法 获得事件细节 示例代码 主要的类*AccessibilityService AccessibilityServiceInfo AccessibilityEvent AccessibilityReco…

自动驾驶人的福音!Lyft公开Level 5部署平台Flexo细节
作者 | Mathias Gug等,Lyft Level 5 软件工程师译者 | Lucy编辑 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:经过一年半的 bootstrapping(一种再抽样统计方法),Lyft 让 Level 5 实现区分非常…

Cygwin的安装及在Android jni中的简单使用举例
Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnussolutions公司开发的自由软件。Cygwin是许多自由软件的集合,Cygwin的主要目的是通过重新编译,将POSIX系统上的软件移植到Windows上。Cygwin包括了一套库,该库在win32系统…

university, school, college, department, institute的区别
这些个词没有太大区别,有时候有些词是可以通用的,而有些用法则是随着地域时间的不同而变迁。一般说来,college译作“学院”,它是university (综合性大学)的一个组成部分,例如,一所综…

XML简介及举例
可扩展标记语言(eXtensibleMarkup Language,简称XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言&#…

关于事务的传播特性和隔离级别的问题
REQUIRED:业务方法需要在一个事务中运行。如果方法运行时,已经处在一个事务中,那么加入到该事务,否则为自己创建一个新的事务。 NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为…

[Big Data - Kafka] kafka学习笔记:知识点整理
一、为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2.冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的&q…