• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺談LISP的二次開發(fā)在CAD中的應(yīng)用

      2016-11-16 07:49:09王佳卿祝啟祥史曉忠
      城市道橋與防洪 2016年10期
      關(guān)鍵詞:圖幅二次開發(fā)程序設(shè)計

      王佳卿,祝啟祥,史曉忠

      (無錫市政設(shè)計研究院有限公司,江蘇無錫 214072)

      淺談LISP的二次開發(fā)在CAD中的應(yīng)用

      王佳卿,祝啟祥,史曉忠

      (無錫市政設(shè)計研究院有限公司,江蘇無錫 214072)

      主要介紹了通過利用Lisp語言開發(fā)程序,在AUTOCAD的工作環(huán)境中進行二次開發(fā),以達到提高工作效率的目的。

      LISP語言;CAD二次開發(fā);函數(shù)語言;開發(fā)環(huán)境

      1 概述

      LISP語言(計算機程序設(shè)計語言)是一種通用的高級計算機程序設(shè)計語言,在人工智能領(lǐng)域內(nèi)被廣泛應(yīng)用,甚至長期處于一個壟斷地位。眾所周知的,LISP是計算機領(lǐng)域第一個函數(shù)式的高級計算機程序設(shè)計語言,是為人工智能設(shè)計服務(wù)的語言,有別于B、C語言等命令式程序設(shè)計語言和Java、C++、C#等面向?qū)ο笳Z言。

      LISP語言是一種函數(shù)式程序設(shè)計語言,所以,對于LISP語言而言,在程序編寫的過程中,函數(shù)所有運算都能以函數(shù)作用于參數(shù)的方式來實現(xiàn)。

      有別于一般的命令式的語言程序,LISP語言幾乎不用所謂的變量以及特定的賦值語句,通過對遞歸的函數(shù)的調(diào)用,來實現(xiàn)重復(fù)的過程,因此,在LISP語言的編寫過程中很少使用到循環(huán)模式。

      LISP是古老的函數(shù)語言,弱類型,動態(tài)推斷,其代碼本身就是各種列表。每一個表項均可以儲存任何類型的數(shù)據(jù),如數(shù)字、函數(shù)、符號或一個子表等,在編碼時,可以隨時操作以更新列表。

      LISP核心的操作符只有7個操作符:quote、atom、eq、car、cdr、cons、cond。前三者quote、atom、eq用于符號的推斷,car、cdr、cons操縱表格;cond負責分支判斷。這種簡潔定義,非常接近圖靈機原型的純函數(shù)式語言,是現(xiàn)代語言完全無法比擬的。

      LISP語言最大的相對缺點就是運行效率低下。原始定義簡潔的缺點使得大型開發(fā)工程變得困難,自底層到高層,自二維表查詢到面向?qū)ο?,使用者需要嵌入更多的函?shù)來實現(xiàn),致使LISP眾多方言的衍生。

      VISUAL LISP是AUTOCAD自身自帶的一個集成的可視化autolisp開發(fā)環(huán)境[1],早期的AUTOLISP程序的編輯,是首先使用記事本等文本編輯工具進行編輯操作,然后在autocad的環(huán)境中進行加載和調(diào)試,過程比較繁瑣,不是很人性化。但是,從autocad 2000的版本開始,就開始自帶了集成的開發(fā)環(huán)境:VISUAL LISP。作為一個開發(fā)工具,Visual LISP具有一個完整的集成開發(fā)環(huán)境(IDE),其中包括了編譯器、調(diào)試器和其他的必要的工具,可以實時進行調(diào)試AUTOLISP的命令。

      2 工程實例

      某市某地鐵N號線一期工程整體呈西北-東南走向,線路全長約30 km,均為地下線。地形修測項目修測范圍為線路中心線兩側(cè)各150 m,在測繪范圍內(nèi)進行1:500地形圖測量,修測面積約15 km2。該項目最終完成1:500地形圖451幅(50 cm×50 cm),分幅圖的分幅原點坐標為(0,0),分幅圖圖名以東坐標和北坐標的千公里數(shù)命名,圖名如3428.00-487.25、3428.00-487.50等。經(jīng)業(yè)主驗收后,交付設(shè)計單位做設(shè)計底圖使用。在設(shè)計單位使用的過程中,設(shè)計單位提出:由圖1接圖表示意圖可知,由于一共有451幅圖紙,15 km2,而實際的使用過程中不需要全部圖幅打開,全部圖幅打開,占用計算機內(nèi)存太大,能否實現(xiàn)即插即用,即需要哪幾幅圖紙就打開哪幾幅圖紙,不需要就刪除。由于一共有451幅圖紙,如果純粹是人工在文件夾內(nèi)尋找圖幅一幅幅打開,十分浪費時間,且操作麻煩。為了解決這一問題,編寫了如下程序:

      (SETQ PT(GETPOINT" 請選擇要插入標準圖幅的位置:"))

      (setq X0(atoi(rtos(cadr Pt)2 0)))

      (setq Y0(atoi(rtos(car Pt)2 0)))

      (setq old_cmd(getvar"cmdecho"))

      (setq old_Unit(getvar"insunits"))

      (setvar"insunits"0)

      (setvar"cmdecho"0)

      (VL-LOAD-COM)

      (setqAcadObject(vlax-get-acad-object)

      AcadDocument(vla-get-ActiveDocument Acadobject)

      mSpace(vla-get-ModelSpace Acaddocument)

      )

      (setq MainPath(vla-get-Path AcadDocument))

      (setq Path1500(strcat MainPath"\Mapxc\"))

      (princ Path1500)

      (setq X2(rtos(/(/X0 250)4)2 0))

      (setq Y2(rtos(/(/Y0 250)4)2 0))

      (princ"wjq")

      (princ X2)

      (setq X3(rtos(/(/X0 250)4.00)2 2))

      (setq Y3(rtos(/(/Y0 250)4.00)2 2))

      (setq X4(substr X3 6))

      (setq Y4(substr Y3 5))

      (setq Path1500(strcat Path1500 X2"."X4"-" Y2"."Y4".dwg"))

      (princ Path1500)

      (setq Check1(findfile Path1500))

      (progn

      (command

      "Insert"path1500"0,0""1""1""0"

      )

      )

      )

      (if(=nil check1)

      (progn

      式(2)中的相互作用參數(shù)αij對于DPD模擬至關(guān)重要.根據(jù)著名的Flory-Huggins理論[30]可以表示為

      (setvar"insunits"old_unit)

      (setvar"cmdecho"old_cmd)

      (alert"該區(qū)域目前尚沒有標準圖幅!")

      (exit)

      )

      )

      (setvar"insunits"old_unit)

      (setvar"cmdecho"old_cmd)

      )

      該程序的整體思路是:首先,用GETPOINT獲得鼠標當點位置的X、Y值,但是,用GETPOINT指令獲得的數(shù)據(jù)是一個字符串,即含有X、Y坐標數(shù)值的字符串,要用rtos、cadr、car指令分別獲得X坐標與Y坐標的百公里整數(shù)數(shù)值。然后,通過rtos、substr指令,分別求出當前鼠標所在位置應(yīng)該所處的圖幅號,最終的圖幅號通過strcat指令,將多個字符串合并成一個字符串,然后,用findfile指令在分幅圖所存放的文件夾內(nèi)進行匹配,如果匹配成功,則插入匹配成功的對應(yīng)的圖幅,如果匹配失敗,則說明當前點所在的位置沒有標準圖幅,則返回"該區(qū)域目前尚沒有標準圖幅!"

      通過該程序,圓滿解決了設(shè)計單位提出的問題,滿足了設(shè)計單位對地形圖即插即用的要求,得到了業(yè)主和設(shè)計單位的肯定。

      圖1 接圖表示意圖

      3 結(jié) 語

      當前,計算機程序語言的二次開發(fā)廣泛應(yīng)用,為工作生產(chǎn)提高了極大的便利[2]。在實際的工程生產(chǎn)中,利用VISUAL LISP在AUTOCAD的環(huán)境中進行二次開發(fā),從而達到生產(chǎn)中高精度、高速度、高效率、低風險的目的,是完全切實可行的?,F(xiàn)代的商業(yè)工程軟件盡管功能完備,但大多價格不菲,且不一定能完全貼合自單位的生產(chǎn)需求。自行利用VISUAL LISP在 AUTOCAD的環(huán)境中進行二次開發(fā),經(jīng)濟實惠,值得推廣,也必將成為今后中小工程生產(chǎn)企業(yè)提高生產(chǎn)效率的首選方法。

      [1]謝剛生,鄒時林.數(shù)字化成圖原理與實踐[M].西安地圖出版社, 2000.

      [2]閻聚群.AUTOCAD2000 Visual Lisp開發(fā)[M].武漢:華中理工大學(xué)出版社,2000.

      TP312

      B

      1009-7716(2016)10-0164-02

      10.16799/j.cnki.csdqyfh.2016.10.052

      2016-01-15

      王佳卿(1982-),男,江蘇無錫人,碩士,工程師,從事勘察測繪工作。

      猜你喜歡
      圖幅二次開發(fā)程序設(shè)計
      基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
      計算機教育(2020年5期)2020-07-24 08:52:56
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      從細節(jié)入手,談PLC程序設(shè)計技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      西門子Easy Screen對倒棱機床界面二次開發(fā)
      高職高專院校C語言程序設(shè)計教學(xué)改革探索
      基于EXCEL的地形圖圖幅號轉(zhuǎn)換查詢方法
      自然保護地(2015年3期)2015-12-03 02:29:54
      PLC梯形圖程序設(shè)計技巧及應(yīng)用
      基于ArcMap的圖幅接合表快速生成方法研究
      地形圖圖幅編號規(guī)則及實現(xiàn)
      城市勘測(2014年4期)2014-06-24 14:33:27
      涿鹿县| 双城市| 调兵山市| 滦南县| 和政县| 甘南县| 蛟河市| 临洮县| 平原县| 泽库县| 开封市| 宽甸| 乐清市| 勐海县| 长沙县| 木里| 抚顺市| 合江县| 新巴尔虎右旗| 晋宁县| 尤溪县| 定日县| 黄浦区| 佛山市| 青龙| 建平县| 昌黎县| 泸州市| 石河子市| 霍州市| 鄄城县| 冕宁县| 凤翔县| 同心县| 阳曲县| 深水埗区| 运城市| 长宁区| 渝北区| 南木林县| 松潘县|