国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2021-07-01 07:33韓希國
關(guān)鍵詞:圖層視圖專用

韓希國

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

在機(jī)械設(shè)計(jì)過程中,先進(jìn)行三維設(shè)計(jì)再導(dǎo)出二維視圖的設(shè)計(jì)理念已經(jīng)被多數(shù)設(shè)計(jì)者所認(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è)計(jì)的主要方法和步驟。

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

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

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

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

在dwg圖形文件中,為了既允許存在多個(gè)三維或二維對象,又不影響被選定的三維目標(biāo)對象轉(zhuǎn)換成二維視圖,編程時(shí)應(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專用”圖層中, 此時(shí),凍結(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í)的必要數(shù)據(jù),獲取方法如下:

首先在西南等軸測世界坐標(biāo)系下,分別獲取目標(biāo)對象在俯視方向(Z軸負(fù)向)和主視方向(Y軸方向)最小正交包圍框(圖3中雙點(diǎn)劃線所示的假想矩形),并且計(jì)算出沿俯視或主視方向觀察時(shí),假想矩形左下角點(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í)體,最多可以生成主、俯、左、右、仰、后六個(gè)不同視角下的三維實(shí)體〔3〕(見圖4)。

以生成主、俯、左三個(gè)視角下的三維實(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)沒選擇主視圖時(shí),刪除生成主視圖的立體

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

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

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

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

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

移動(dòng)距離為當(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)用,其視圖的生成速度以秒計(jì),大幅度提高了二維工程圖樣的繪圖效率,具有一定的實(shí)用價(jià)值。

猜你喜歡
圖層視圖專用
為《飛舞的空竹龍》加動(dòng)感
以假亂真窺探濕玻璃后的風(fēng)景
與眾不同“跳出”畫面更個(gè)性
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
Django 框架中通用類視圖的用法
靈動(dòng)駕馭 鄧祿普豪華SUV專用輪胎SP SPORT MAXX 050+
數(shù)學(xué)達(dá)人專用時(shí)鐘
飛機(jī)是怎么飛上天的?
福建省| 五指山市| 舒城县| 鹤壁市| 鹰潭市| 克拉玛依市| 磐安县| 大关县| 平山县| 潞西市| 阳曲县| 兴宁市| 八宿县| 东乌| 承德县| 平塘县| 崇信县| 黑山县| 靖宇县| 怀远县| 柘荣县| 茌平县| 福安市| 泊头市| 城固县| 雅江县| 喜德县| 芜湖县| 新宾| 廉江市| 扎兰屯市| 临泽县| 张家口市| 黄龙县| 简阳市| 铁岭县| 揭西县| 开鲁县| 历史| 岳池县| 湘阴县|