• 
    

    
    

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

      ?

      AutoCAD三維實(shí)體轉(zhuǎn)二維視圖方法的研討

      2021-07-01 07:33:18韓希國
      遼寧科技學(xué)院學(xué)報 2021年3期
      關(guān)鍵詞:主視圖程序代碼圖層

      韓希國

      (遼寧科技學(xué)院 機(jī)械工程學(xué)院,遼寧 本溪 117004)

      在機(jī)械設(shè)計過程中,先進(jìn)行三維設(shè)計再導(dǎo)出二維視圖的設(shè)計理念已經(jīng)被多數(shù)設(shè)計者所認(rèn)可,而如何將三維實(shí)體快速生成二維視圖已倍受關(guān)注,目前,一般采用文獻(xiàn)〔1〕、〔2〕中所提到的方法來生成二維圖,其缺點(diǎn)是操作復(fù)雜,且繪圖效率低。

      本文基于Auto LISP、Visual LISP、Dialog Control Language等程序語言,并結(jié)合AutoCAD中的flatshot命令,開發(fā)出將三維實(shí)體快速生成二維視圖的AutoCAD插件,從而使二維工程圖樣的繪制變得簡單、快捷、可靠。

      本文重點(diǎn)論述了程序設(shè)計的主要方法和步驟。

      1 視圖數(shù)量及線型屬性設(shè)置

      考慮到三視圖的使用頻率高于其它視圖配置模式,并兼顧提高繪圖效率,插件默認(rèn)為生成主、俯、左三個視圖(圖1),節(jié)省了操作時間。對于其它視圖配置模式是通過輸入關(guān)鍵字“E”調(diào)用話框進(jìn)行設(shè)置,其中線型屬性默認(rèn)值更改后將會自動保存于注冊表中,并成為下次使用時的默認(rèn)值,盡量適應(yīng)各類用戶的使用習(xí)慣。

      圖1 AutoCAD命令窗口操作提示截圖

      2 當(dāng)前dwg文件中原有對象的顯示與隱藏方法

      在dwg圖形文件中,為了既允許存在多個三維或二維對象,又不影響被選定的三維目標(biāo)對象轉(zhuǎn)換成二維視圖,編程時應(yīng)按下述方法進(jìn)行。

      2.1 保存當(dāng)前視口狀態(tài)

      (1)保存當(dāng)前圖層

      (setq clayer_bak (getvar "clayer"))

      (2)保存當(dāng)前視口中的顯示

      程序代碼為:(command "view" "s" "stx")

      (3)關(guān)閉坐標(biāo)系

      程序代碼為:(command "ucsicon" "off")

      圖2 視圖、線型屬性選項(xiàng)對話框截圖

      2.2 新建三維目標(biāo)對象存放圖層

      為了控制二維視圖的生成的中間過程為不可見模式,可新建“ 3→2專用”圖層,使其置為當(dāng)前且關(guān)閉。程序代碼為:

      (command "_layer" "m" “3→2專用” "off" “3→2專用” "y" "")。

      2.3 凍結(jié)除當(dāng)前圖層以外的所有圖層

      單選三維實(shí)體并復(fù)制,然后將復(fù)制后的三維實(shí)體更改到“3→2專用”圖層中, 此時,凍結(jié)除當(dāng)前圖層外的所有圖層,以避免autocad當(dāng)前dwg文件中其它對象參與操作,程序代碼為:

      (vla-put-layer (vlax-ename->vla-object mx) “3→2專用”)

      (command "layer" "f" "*" "")。

      3 獲取編程必要數(shù)據(jù)

      目標(biāo)對象的長、寬、高和各視圖的間距尺寸是程序處理時的必要數(shù)據(jù),獲取方法如下:

      首先在西南等軸測世界坐標(biāo)系下,分別獲取目標(biāo)對象在俯視方向(Z軸負(fù)向)和主視方向(Y軸方向)最小正交包圍框(圖3中雙點(diǎn)劃線所示的假想矩形),并且計算出沿俯視或主視方向觀察時,假想矩形左下角點(diǎn)和右上角點(diǎn)坐標(biāo)p1、p2。然后再求出三維實(shí)體長(L)、寬(W)、高(H)和視圖間距尺寸d。

      圖3 西南等軸測世界坐標(biāo)系下立體包圍框和z軸矢量位置圖

      程序代碼如下:

      (defun bound (/ blk_bound )

      (setq blk_bound (acet-geom-ss-extents ss t))

      (setq p1 (car blk_bound))

      (setq p2 (cadr blk_bound)) )

      (defun c: example1 ()

      (command "-view" "swiso" )

      (command "ucs" "w")

      (setq en (car (entsel "? 選擇三維實(shí)體")))

      (command "copy" en "" "0,0,0" "0,0,0")

      (setq ss (ssget "L")) (bound)

      (setq W(- (cadr p2) (cadr p1)))

      (command "ucs" "x" 90) (bound)

      (setq L(- (car p2) (car p1)))

      (setq H(- (cadr p2) (cadr p1)))

      (setq d(/ (+ W H) 5)))

      4 旋轉(zhuǎn)復(fù)制“3→2專用”圖層中的三維實(shí)體

      先切換為主視圖,再根據(jù)圖2中鉤選視圖的數(shù)量,分別按圖3中箭頭所示的位置和方向變換USC的Z軸矢量,最后旋轉(zhuǎn)復(fù)制三維實(shí)體,最多可以生成主、俯、左、右、仰、后六個不同視角下的三維實(shí)體〔3〕(見圖4)。

      以生成主、俯、左三個視角下的三維實(shí)體為例,程序代碼如下:

      (if (= fustz 1) (progn

      (command "UCS" "ZA" (list (car p1) (- (cadr p1) d) (caddr p1)) (list (+(car p1) 10) (- (cadr p1) d) (caddr p1)))

      (command "rotate" en "" "0,0,0" "C" 90)

      (command "UCS" "p")

      ))

      (if (= zuostz 1) (progn

      (command "UCS" "ZA" (list (+(car p2) d) (cadr p2) (caddr p1)) (list (+(car p2) d) (+(cadr p2) 10) (caddr p1)))

      (command "rotate" en "" "0,0,0" "C" 90)

      (command "UCS" "p")))

      以此類推,可得到其它三維實(shí)體(圖4)。

      當(dāng)沒選擇主視圖時,刪除生成主視圖的立體

      (if (= zustz 0) (command "erase" en "" ))

      圖4 按六視圖規(guī)則旋轉(zhuǎn)復(fù)制三維實(shí)體

      5 執(zhí)行flatshot命令創(chuàng)建二維視圖

      (1) 將“3→2專用”圖層中的n個三維實(shí)體在視口中最大化命令為(command "zoom" "e")

      (2) 將對象鉛直向上移動

      移動距離為當(dāng)前視口高度尺寸的2倍,使其在視口內(nèi)不可見。程序代碼為:

      (command "move" (ssget "x" '((8 . “3→2專用”))) "" "0,0" (list 0 (* 2 (getvar "viewsize "))))

      (3) 打開“3→2專用”圖層

      程序代碼為:(Command "_.-layer" "_on" “3→2專用” "")

      (4) 執(zhí)行平面攝影flatshot命令

      程序代碼為:(command "_.flatshot" (list 0 hhh) "" "" "")

      (5) 刪除“3→2專用”圖層中所有三維立體

      程序代碼為:(command "_.erase" (ssget "x" '((0 . "3dsolid") (8 . “3→2專用”))) "")

      (6) 帶基點(diǎn)復(fù)制由flatshot命令生成的視圖塊,然后再粘貼到視口內(nèi)

      程序代碼如下:

      (setq m (ssget "L"))

      (bound)

      (if (= (+ zustz fustz zuostz youstz yangstz houstz) 1)

      (command "copybase" p1 (entlast) "" ) (command "copybase" (polar p1 (angle p1 p2) (* 0.5 (distance p1 p2))) (entlast) "" ) )

      (command "erase" (entlast) "" )

      (command "view" "r" "stx")

      (command "layer" "t" "*" "")

      (command "_layer" "m" clayer_bak "")

      (command "ucs" "v")

      (command "pasteclip" pause)

      至此,程序運(yùn)行完畢

      圖5 執(zhí)行flatshot命令創(chuàng)建二維視圖

      6 結(jié)束語

      本文所給論述的編程方法,經(jīng)過了反復(fù)的實(shí)驗(yàn)和應(yīng)用,其視圖的生成速度以秒計,大幅度提高了二維工程圖樣的繪圖效率,具有一定的實(shí)用價值。

      猜你喜歡
      主視圖程序代碼圖層
      計算機(jī)網(wǎng)絡(luò)信息安全未來發(fā)展趨勢
      巧用混合圖層 制作抽象動感森林
      基于圖元裝接模式由程序流程圖自動生成源代碼
      軟件工程(2016年11期)2017-01-17 16:56:57
      你會畫左視圖嗎
      圖層法在地理區(qū)域圖讀圖中的應(yīng)用
      淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
      河南科技(2014年6期)2014-04-04 08:00:42
      Photoshop圖層的解讀
      用“俯視圖法”求正方體個數(shù)
      嵌入式系統(tǒng)中程序的優(yōu)化策略
      新媒體研究(2009年4期)2009-03-14 06:59:48
      三視圖問題新考點(diǎn)
      独山县| 化德县| 大冶市| 托克逊县| 凤台县| 江西省| 界首市| 仁化县| 合肥市| 靖安县| 山丹县| 北辰区| 依兰县| 古田县| 白朗县| 泾川县| 明光市| 杭州市| 英吉沙县| 紫云| 什邡市| 红桥区| 新和县| 鸡泽县| 凤山市| 松桃| 永寿县| 崇左市| 天津市| 新宾| 滨海县| 南川市| 南皮县| 高清| 建阳市| 夏邑县| 栾城县| 香港| 左权县| 道孚县| 酉阳|