• 我回来了

    2009-08-23

    今天是2009-8-23,查看了之前写的最后一篇日志的时间是:2009-03-21,差不多5个月的时间没有写日志了,很多时候,想写点东西,但是写到一半又停了下来。。。。。

    说说生活方面吧,每天总是觉得很累很累,早上都是要靠着闹钟把自己闹醒,星期一就开始期盼星期六日的到来,周末睡个好觉,基本上周末都是睡到下午1点钟,说出来都觉得不好意思,呵呵,最不想过星期天了,因为第二天就是星期一了,慢慢岁月的到来,O(∩_∩)O~,不过周末一般都会找点节目来充实自己,好好地...
  • 来源 明经通道,版权归原作者所有

    当前AutoCAD的二次开发工具主要有:VisualLisp、VBA和ObjectARX等。其中,VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,但其功能相比ObjectARX有所不足,尤其是对面向对象的功能支持不好。而ObjectARX基于VC平台,在C++的支持下,其功能非常强大,可以很好地运用各种面向对象技术,但其缺点是发开速度比较慢,同时对开发人员的能力要求较高。

        .NET是微软新推出的开发平台,具有众多优点。基于.NET平台对AutoCAD进行二次开发,可充分利用.NET的各种优势,在保证功能强大的前提下大大提高开发速度。

    一、基于.NET的开发

        1..NET API简介

        在新推出的AutoCAD 2006中,Autodesk为其开发增加了.NET API。.NET API提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET、C# 和Managed C++等对AutoCAD进行二次开发。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较理想的AutoCAD二次开发工具。

        2..NET API与传统ObjectARX的主要区别

        .NET API与传统ObjectARX的区别主要源于在.NET环境下开发应用程序与在VC环境下开发应用程序的区别。首先,在VC环境下,程序员需要自己管理内存的申请和释放,而.NET采用了垃圾回收机制,由.NET框架自行判断内存回收的时机并实行回收,从而解决了令C++程序员头痛的内存泄漏问题。也正是由于这个特点,在.NET环境下不能象在C++环境下那样利用析构函数释放其他的资源,需要程序员在程序中显式地释放。在.NET API中,主要通过Dispose来函数进行资源的释放。

        其次,ObjectARX中的各种反应器(Reactor)在.NET API中由外包类映射为各种事件(Event),可通过定义这些事件的响应函数来响应AutoCAD的各种操作。同时对于错误信息的处理也从函数返回值改变为通常异常来处理,使其更好地兼容.NET。由于VB.NET、C#等语言都是完全面向对象的,没有全局函数的概念,所以.NET API将ObjectARX下的全局函数封装为.NET API下的某些对象或对象的属性,如ObjectARX下与用户交互的系列全局函数被封装为CommandLinePrompt类。

        3.使用.NET API

        下面以C#为例,在Microsoft Visual C# 2005 Express Edition Beta平台上,先新建一个Class Library项目,再将AutoCAD2005安装目录下的acdbmgb.dll与acmgb.dll作为引用添加进项目中。这两个文件包含了.NET API中所有的外包类。

        然后在要使用.NET API的类中添加以下语句以引用.NET API的命名空间。需要添加的语句如下:

        using Autodesk.AutoCAD.ApplicationServices;
        using Autodesk.AutoCAD.DatabaseServices;
        using Autodesk.AutoCAD.Runtime;
        using Autodesk.AutoCAD.Geometry;

        这样就可以利用.NET API进行开发了。以下代码可在AutoCAD注册为一个命令“AddLine”,该命令可在当前工作空间中添加一条起点为(0,0,0),终点(200,200,0)的直线。代码如下:

        [CommandMethod ("AddLine")]
        public static void AddLineCmd()
        {
        Database db = HostApplicationServices.WorkingDatabase;//获得当前工作空间的数据库
        BlockTable bt = (BlockTable)db.BlockTableId.Open(OpenMode.ForRead); //获得块表
        BlockTableRecord btr = (BlockTableRecord)bt[BlockTableRecord.ModelSpace].Open(OpenMode.ForWrite); //获得模型空间的块表记录
        Line line = new Line(new Point3d(0, 0, 0), new Point3d(200, 200, 0));//创建一条直线
        try {
        btr.AppendEntity(line);//将直线添加到模型空间中
        line.Close();//关闭该直线
        }
        finally {
        btr.Close();//关闭块表记录
        bt.Close();//关闭块表
        }
        }

        由此可见,上述语句与在VC下的开发非常类似,其过程都是先得到数据库,然后依次打开块表、块表记录,接着添加实体,最后关闭块表、块表记录。值得注意的是finally语句,无论try块中的语句是否发生异常,finally块中的语句都会被执行,从而确保关闭块表和块表记录的操作会被执行。

        写完代码后进行编译,编译完成将得到一个dll文件。在AutoCAD 2006中通过“netload”命令即可选择该dll文件进行加载,加载成功后即可以通过“AddLine”命令执行上述代码。遗憾的是目前的.NET API版本还不支持卸载,若要卸载只能关闭AutoCAD。

        4..NET API的初始化与清除

        在ObjectARX中,“acrxEntryPoint”函数是ARX程序的载入点,程序的初始化和清除均可在该函数中进行。而在.NET API中则首先需要将初始化代码封装在一个类中,同时该类需要压迫实现
        IExtensionApplication接口。该接口包含Initialize与Terminate两个函数。其中Initialize负责加载程序时的初始化操作,Terminate则负责进行卸载程序时的清除操作。代码如下:

    namespace ARXExample {
    public class MyARX : IExtensionApplication {
    ……
    public void Initialize() {
    //初始化操作
    }
    public void Terminate() {
          //清除操作
    }
    ……

    }
    同时,为加快加载速度,可在MyARX.cs的文件头加入以下语句:
    [assembly: ExtensionApplication (typeof (ARXExample.MyARX) ) ]
    [assembly: CommandClass (typeof (ARXExample.MyARX) ) ]

        这样在加载程序时AutoCAD将直接通过MyARX中的Initialize语句进行初始化,同时注册MyARX中的命令。否则,AutoCAD将搜索dll中所有的类以找到实现IExtensionApplication接口的类进行初始化,如找不到则不进行初始化。同样,通过CommandClass属性,AutoCAD也会直接到MyARX类中搜索要注册的命令。当程序中包含的类数目较多时,通过ExtensionApplication和CommandClass这两个属性可显著地加快程序的加载速度。

        5..NET API与COM交互操作

        在目前的.NET API中,其功能与传统的ObjectARX相比有所不及,有相当的ObjectARX函数目前还没有封装到.NET API中,如GetPoint等。但可以通过COM方式使用ActiveX来弥补.NET API的不足。
    增加了COM引用后,程序就可以使用许多VBA中的功能了。以AutoCAD ActiveX中的事件为例,以下代码可以为当前工作空间中所有的图元添加Modified事件:

    Database db = HostApplicationServices.WorkingDatabase;
    BlockTable bt = (BlockTable)db.BlockTableId.Open(OpenMode.ForRead);
    BlockTableRecord btr = (BlockTableRecord)bt[BlockTableRecord.ModelSpace].Open(OpenMode.ForWrite);
    try {
    AcadObject obj;
    //遍历块表记录
    foreach (ObjectId objId in btr) {
        //由ObjectId得到ActiveX中的AcadObject对象
            obj = (AcadObject)((AcadDatabase)db.AcadDatabase).ObjectIdToObject(objId.OldId);
        //为obj添加响应Modified事件
            obj.Modified += new IAcadObjectEvents_ModifiedEventHandler(obj_Modified);
        }
    }
    finally {
        btr.Close();
        bt.Close();
    }
    其中事件响应函数obj_Modified的表示如下所示:
    public static void obj_Modified(AcadObject obj) {
    CommandLinePrompts.Message("object modified!" + obj.ObjectID + "\n");
    }

    二、结论

        本文以C#为例,对基于.NET API的AutoCAD二次开发作了较详细的介绍。.NET API在具有ObjectARX强大功能的同时具有VBA使用方便易用的优点,同时具有C++的强大功能,是较为理想的开发工具。但目前.NET API在某些方面还有些不足,但随着其版本的更新、完善,定会成为众多开发人员的首选工具。

  • Happy Niu Year - [心情日记]

    2009-01-10

    这篇日志应该算是新年的第一篇日志,最近挺忙的,也有点懒,在这里祝大家牛年快乐!!
  • 随想 - [心情日记]

    2008-10-26

    有一天,天爱上了海,可是空气阻隔了他们,他们无法相爱,天哭了,泪水落在海里,即使不能相爱,天也要把灵魂寄托给海,从此海比天蓝...当所有人都在关心你飞的高不高时,只有少数人在关心你飞的累不累.这就是朋友.这周是世界好友周,如果你愿意把这条信息发给你所有的好朋友,也包括我.看看有多少人会回发给你,另外借用你的手帮我摸摸你的头,小声的对自己说;一定要照顾好自己,与人为善,记得健康快乐比任何东西都重要.只有经过了磨难,才知道友谊的可贵.生命中有你,真好! 

    能牵手的时候,...
  • 首先在项目的引用添加:System.Management

    Imports System
    Imports System.Management
    Imports DevExpress

     Dim mc As New ManagementClass("Win32_NetworkAdapterConfiguration")
     Dim nics As ManagementObjectCollectio...
  •     转载之CSDN:【CSDN编译】使用一种特殊的编程语言、编程很牛,单单靠这个并不能说一名程序员/开发者就是优秀程序员/开发者。   快速发展的开发环境使得这个行业比我今天看到的任何一个行业都要发展迅速,这既有积极的一面也有消极的一面:今天的程序员/开发者有很多编程语言、开发工具和开发平台可选,但是建立一个安全、可扩展的环境却变得难了很多;硬件和软件正日新月异地变得更加复杂,但现在学习新技术比过去要难太多了。

     ...
  •   许多男士都有这样逛街的生活经验:声音嘈杂、熙熙攘攘的大街上,热闹非凡,行人如织。每个行人都心无旁骛,行色匆匆。和大多数行人一样,你的目光开始倦怠,你的表情开始漠然。突然,你的眼前一亮,老远就从人堆里,第一眼看到远处走来一位亭亭玉立,玉树临风般的美女,巧笑倩兮,美目盼兮,非常的勾魂摄魄,你突然有了“众里寻她千百度”的感觉,三步并作两步地在人群中穿梭,生怕美女拐了弯,赶上前去,全神贯注,死定着看。与美女擦肩而过后,还禁不住回头多看几眼。美女很快消失在茫茫人海里。你的心理荡起少许的遗憾,脑海里还浮现着美女的倩影,但在如织的人流簇拥下,不得不继续前行,只能期盼下一次养眼的街头艳遇了。

      这就是今天消费者所处的市场环境的形象描述。现在是信息爆炸的时代,消费者每天都要接触大量的来自企业的广告信息,就像站在广告噪声无比嘈杂的“虚拟大街”上,要吸引消费者的注意力是何其困难!如果来自企业的广告信息,对消费者而言,不是第一眼就能注意到的“美女”,那被看第二眼的可能性几乎为零。即使企业的传递的东西再“天生丽质”,如果还不知道“女为知己(消费者)容”,不加粉饰,“素面朝天”的话,被消费者抛弃的可能性几乎是百分之百。

      许多营销人、创意人还没意识到现在的营销环境、广告环境让消费者只能选择“第一眼美女”。营销人、创意人的工作就是满足消费者的需求,创作出成为“第一眼美女”的东西来。如果营销人、创意人还希冀自己传递的东西不是第一眼能打动消费者,而是需要消费者驻足观看、细细品位的, 第二眼比第一眼好看的 “ 第二眼美女 ”或 越看越美的 “ 极品 美女”,这些营销人、创意人就太天真幼稚了,太不了解消费者,太不了解消费环境了。这是出入行的营销人、创意人经常爱犯的错误。

      对营销人、创意人来讲,对营销创意首要的评价标准就是:创意=创忆(创造记忆)。好的创意必须让消费者留下记忆,记住。而且是在第一次接触信息的时候,第一次看的时候,就产生深刻的记忆。“第一眼美女” 就能 达 成 这种境界。

      “第一眼美女”对企业来讲,花费和成本也是最低的。否则就需要高频次的广告投入对消费者进行广告轰炸了。高频次、大手笔的投入,是像宝洁等的大公司才能玩的“富人游戏”,“富人们”可以花钱买消费者的注意力,让消费者驻足,可以推“第二眼美女”或“极品美女”。但对大多数发展中的中小企业来讲,是不敢玩,也玩不起的。

      对大多数营销人、创意人来讲,最容易犯的错误就是以自己的审美标准来打造消费者心目中的“第一眼美女”形象。岂不知消费者对美女的喜好也是“萝卜青菜,各有所爱”:有的喜欢浓妆艳抹;有的喜欢略施粉黛;有的喜欢杨柳细腰;有的喜欢丰腴撩人;有的喜欢眉清目秀;有的喜欢千娇百媚。关键不是营销人喜欢什么,而是消费者、目标顾客喜欢什么。营销人、创意人在文案创作、创意设计、营销策划时,需要时刻谨记的是“传播要以受众为中心”,用目标消费者的审美标准来打造消费者心目中喜爱和认可的“第一眼美女”形象。

  • 引子

      桃子是某报社的记者,入行三年就凭借着自己出众的工做作能力和勤奋的工作态度在单位颇得领导和同事的赞赏。可最近她却有些郁闷,原因是由于报社内部晋升首席记者,呼声、人气极高的桃子意外落选了。原本争强好胜的桃子满心欢喜的作好了迎接新挑战的准备,这下可蔫了。桃子落选的原由很简单,因为报社领导觉得桃子虽然完全具备了做首记的能力,但在记者队伍里面她是最年轻的,选她做首席恐怕难服众心,所以就“照顾”了一下老记者。尽管领导说了很多诸如“你还年轻,机会多的是!”的话,可桃子越琢磨越不是个味儿。一想到前面还排着一大堆“资深”的记者,不知道自己什么时候才能冒出个头,桃子就心灰意懒,做什么都觉得没劲头了,完全失去了往日冲锋陷阵的精气神。

      时下,有很多雇主都抱怨员工职业素养差,不够敬业,挖来的优秀人才没过多长时间就流于平庸,而象上面的现象,在员工中也存在着普遍性。这些看似简单细微的问题却表明了现今中国企业在人力资源开发、培养体系上的一些缺陷。那么是什么影响着员工的敬业度?是什么决定着员工敬业度的高低?要如何才能调动起员工的工作热情和创造力呢?下面的这个调查分析也许能为我们揭示答案。

      敬业度即员工在情感和知识方面对企业的一种承诺和投入,影响这种承诺和投入的因素主要集中在:工作的挑战性、领导管理水平的高低、公司福利待遇的好坏、个人的职业发展机会和空间、公司对员工能力的认可程度、个人职业化程度这六个方面。中国人力资源开发网近期针对影响员工敬业度的这六个主要因素展开了一次专项在线调查。(调查结果见下表)


     

          “员工职业发展机会少”和“直接上级管理水平低”是祸首

      调查结果显示,“员工职业发展机会”和“直接上级管理水平”成为影响员工敬业程度的关键词,在参加调查投票的1382人中,有半数以上人的选择集中在了这两个因素上。

      在调查结果的评论中,网友水莲居的留言有着一定的代表性:“职业发展机会应该是最重要的,年轻人毕竟都会图个未来!”;网友T-L更强调了“职业发展机会”的重要性,他认为:“只有具备职业发展机会,个人与企业才会双赢。否则,不是员工主动走,就是员工不得不走。”

      在参与调查的人中,有很多人是直接从事HR工作的,一位人力资源主管说:“在我所了解的情况中,直接领导的胸怀,管理方式、方法将直接影响个人和团队的成长,影响敬业程度。”

      专家分析:职业发展机会是员工长期的物质与精神的需求,直接上级的管理水平决定着员工工作的人文环境,甚至决定了员工的生活质量,这两个因素是最能概括员工需求的。

      “公司的认可度”比“福利待遇”更重要

      从调查结果可以看出,福利待遇并非是影响员工敬业度乃至决定跳槽的最主要原因,与之相比,公司对员工的认可程度更能激发企业对于员工的向心吸引。18.16%的参与调查者认为如果公司对员工的工作能力、态度、成绩等能正确评估并给予充分的认可,则会大大调动起员工积极的工作态度。对于待遇福利,大多数人认为,这个因素虽然能从一定程度上保障员工的敬业程度,但却并非是决定性因素。一位叫:我本善良的网友留言评论说:“如果员工在公司的工作无法得到认可,那么他将无法对他的工作在感兴趣了,怎么谈得上敬业呢?”

      敬业是“个人职业化程度”的基本要求

      在中人网的调查及评论中,关于“个人的职业化程度”的讨论也非常热烈。六个因素中,其他因素都是从业者对企业客观环境的要求,惟有这个因素是员工对自身主体的要求。

      网友hedgehog认为个人的职业化程度是其他因素产生影响的前提,他说:“敬业的工作态度是个人职业化的基本要求之一,也是实现自身价值的主观条件,是员工以后各种选择(包括职业的选择、对已供职企业的客观认知及对自己的职业生涯规划等)的根本性因素!”

      专家分析:公司的认可程度、公司的待遇福利和工作挑战性都是通过职业发展机会的出现而得到满足,这些问题又需要一个良好的人文环境来支撑,也就是说上级的管理水平又决定着前面这些因素。

      员工敬业度(Engagement)是公司管理需要认真考量的一个重要课题,员工敬业度高的企业,员工与公司恪守的价值观也是高度趋同的。基于对公司为实现其价值观所设定的目标、流程、架构和管理的认同,员工必然愿意主动自发地维系这一基础,并这个过程中发挥自己的最大价值。因此,制定合理的管理体系,才能引导和诱发员工释放出工作热情。

      1.让员工明确该做什么,了解员工需要得到什么

      在企业的价值创造体系中,每一员工都是企业价值的创造者,但不同的部门与职位所承担的责任和创造的价值是不同的。必须给予员工最适合其特点和所长的职责与职位,让他明确该做什么,怎么做;每一个员工都会有所差异,了解不同员工的不同需求,尊重他们的需求,调动起他们的积极性从而使他们创造出更大的价值。

      2.营造良好的人文环境,给予员工充分的支持

      员工有三分之一的时间是在企业度过的,一个有朝气、和谐的环境能够使员工乐于投入其中工作。基于管理体系的保障,使真正有才能的人得到信任并在工作实践和竞争中能获得公正合理的评价,满足员工的成就感。在这个过程中,企业还需要为员工提供各种资源的支持,包括权力的赋予和信任感,这些都是扩张员工工作信心和精力的有效措施。

      3.提升员工的归属感

      员工对于企业发展理念的认同,是建立在“以人为本”的企业文化之上。不断改进对人的管理,刚柔并济的调和管理方式,促使员工达到自我启发式的管理,才能将员工真正融入企业,真正培养和提升员工归属感。

      4.帮助员工不断学习和成长

      员工的能力是随着工作实践和不断学习而持续提高的,朝更高层次的发展必然需要各种专业知识和技能的学习机会。从员工进入企业一开始,就应该提供给员工一个持续学习和成长的环境。帮助员工在企业里的每一个成长阶段都能有明确的追求和奋斗目标,让他们都能看到自己的成长方向和空间,这也是提高员工敬业度的最佳途径。

  • 早上10点多起床,一起床就打开电视,那时候正在直播女子10米气步枪决赛,看到中国选手杜丽正落后,看到我都好紧张啊,可惜其他国家的代表选手的发挥都很出色,杜丽最后仅列第五名,无缘奖牌,不过大家都是知道杜丽尽力了,在种种的压力之下,很多时候很难发挥出自己100%的水平!

    接下来的夺金项目是:女子举重48公斤级的,中国选手陈燮霞以抓举95公斤、挺举117公斤,总成绩212公斤的绝对优势为中国代表团夺取了第一枚金牌。并创造了新的奥运会纪录。

    目前中国拿了1枚金牌,继续加油~~~!!

    奥运加油,北京加油,中国队加油,自己也要加油,嘿嘿!!

  • 1.运行“Regedit”打开注册表编辑器,并依次展开如下子键HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify 找到“lconStreams”和“PastlconsStream”这两个键值项,并将其值删除,然后退出注册表编辑器。
    2.按下“Ctrl+Alt+Del”组合键,打开任务管理...