999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于 Creo VB API 的批處理設計系統(tǒng)開發(fā)研究

2025-05-27 00:00:00胡迪羅輝
電腦知識與技術 2025年12期
關鍵詞:二次開發(fā)

摘要:文章針對Creo軟件使用中的批量處理需求,開發(fā)了Creo批處理設計系統(tǒng),實現(xiàn)了批量參數(shù)處理、關系處理、格式導出、單位轉換、圖框替換、族表實例導出、材料設定及舊版本刪除等8個常見功能。應用實例表明,系統(tǒng)運行時無須人工干預,顯著提高設計效率,減少人為錯誤,并提升設計流程效率及協(xié)同工作的便捷性。

關鍵詞:Creo;二次開發(fā);批處理;VB API

中圖分類號:TP311" "文獻標識碼:A

文章編號:1009-3044(2025)12-0007-05

開放科學(資源服務) 標識碼(OSID) :lt;E:\飛翔打包文件目錄002\電腦2025年04月下第十二期打包文件\2.00xs202512\Image\image11.jpeggt;

Creo功能強大,支持多種文件格式,并提供豐富的工具和功能以滿足用戶需求,是工程設計、建筑、機械等領域常用的三維設計軟件之一。隨著工程復雜度的不斷增加,批量處理CAD圖檔的需求日益增長。然而,手動批量操作效率低下且易出錯,對設計效率和準確性造成挑戰(zhàn)[1-3]。因此,開發(fā)Creo二次開發(fā)批處理設計系統(tǒng)以提高設計效率并減少人為錯誤,已成為當前企業(yè)設計開發(fā)流程中亟須解決的問題。

本文基于近年來實際工作中積累的開發(fā)經(jīng)驗,闡述如何使用Creo軟件提供的VB API開發(fā)包進行二次開發(fā),設計并實現(xiàn)一個高效的Creo批處理設計系統(tǒng),以期解決上述問題,增強Creo軟件的功能性和用戶體驗。

1 功能分析及系統(tǒng)架構

1.1 功能分析

針對企業(yè)實際需求,對設計過程中常見的批處理操作進行了分析整理,主要包括以下幾個常見功能。

1) 批量參數(shù)處理。支持用戶對Creo中零件、裝配體的參數(shù)進行批量增加和刪除,有助于維護Creo設計軟件中的參數(shù)信息與產(chǎn)品數(shù)據(jù)管理(PDM) 系統(tǒng)之間的數(shù)據(jù)一致性。

2) 批量關系處理。支持用戶對Creo中零件、裝配體的關系進行批量增加和刪除,可以確保產(chǎn)品設計符合公司或行業(yè)的設計標準,方便設計人員在協(xié)同設計環(huán)境中共享和更新設計關系。

3) 批量格式導出。將設計對象輕松轉換為多種標準文件格式(如STP、IGES等) ,靈活適應與供應商、客戶或合作伙伴進行數(shù)據(jù)交換的多樣化需求,通過批量轉換降低數(shù)據(jù)在不同軟件系統(tǒng)間轉換的復雜性和工作量。

4) 批量單位轉換。支持在設計過程中將對象(如零件、裝配體等) 的尺寸計量單位(如國標單位) 批量、準確地轉換為另一種單位(如英制單位) ,確保設計數(shù)據(jù)在不同地域、不同行業(yè)間的統(tǒng)一性和可讀性,有效避免跨國合作或跨領域協(xié)作項目中因單位不一致導致的誤解、溝通障礙及設計錯誤。

5) 批量圖框替換。在非標自動化項目中,圖框不僅承載標題欄、圖紙比例、項目信息等基礎信息,還可能包含客戶特定的標識、版本號、審批信息等關鍵內容。隨著項目進展或機型調整,這些信息可能需要頻繁更新,而手動逐張修改不僅耗時費力,還容易出錯。針對不同機型和項目批量替換圖框,只需設置好新圖框并替換舊圖框,即可實現(xiàn)圖框內容更新。

6) 批量導出族表實例。將包含族表的元件(即一系列具有相同基本結構但尺寸、材料等屬性可變的零件集合) 中的所有實例保存為獨立的、完整的單個零件文件,一方面可以建立標準件庫,另一方面減少PDM等系統(tǒng)讀取零件族表的耗時和復雜度。

7) 批量材料設定。為滿足不同客戶需求和工況要求,設計人員經(jīng)常需要對一組或多組具有相同尺寸規(guī)格但材料屬性不同的零部件進行系統(tǒng)性的替換作業(yè)。通過此功能,用戶可以輕松實現(xiàn)批量材料設定,滿足特定設計需求。

8) 批量舊版本刪除。Creo采用小版本保存功能,每次保存文件時不會覆蓋原文件,而是產(chǎn)生新的副本文件,文件名后綴會加上“.1”、“.2”或“.3”等數(shù)字,導致文件夾臃腫等問題。通過此功能,用戶可以批量刪除舊版本文件,避免手動刪除時可能出現(xiàn)的錯誤。

1.2 系統(tǒng)架構

基于以上功能分析,由于系統(tǒng)需對多個文件進行相同操作,耗時較多且無須人工干預,為確保設計人員當前工作不受干擾,同時提高工作效率和用戶體驗,程序設計應采用異步模式,在后臺靜默執(zhí)行相關操作,不打斷設計人員的當前工作[4]。

Creo提供Creo/Toolkit、VB API、J-Link、Web-link等多種二次開發(fā)工具包[5-6],其中VB API作為Creo主要的二次開發(fā)工具包之一,提供豐富的函數(shù)庫,涵蓋參數(shù)處理、關系管理、格式導出、單位轉換等多種功能,編程接口直觀且易于理解,使開發(fā)人員能夠快速掌握并使用該工具包進行開發(fā)。此外,VB API支持高效的異步開發(fā)模式,允許程序在后臺執(zhí)行耗時操作,故本文采用VB API進行系統(tǒng)快速開發(fā)。VB API開發(fā)環(huán)境的安裝和配置,讀者可參考文獻[7],在此不再贅述。

系統(tǒng)采用模塊化設計,將1.1節(jié)中的功能全部用VB API相關函數(shù)進行封裝。實際運行中,由用戶指定待處理文件夾,程序遍歷文件夾中所有待處理文件,根據(jù)用戶指定的操作及相關參數(shù)(如參數(shù)列表、關系文本等) ,循環(huán)調用功能模塊,完成批處理功能。Creo二次開發(fā)批處理設計系統(tǒng)操作流程如圖1所示。

2 關鍵功能實現(xiàn)

2.1 遍歷文件

作為批處理工具,首要任務是程序自動獲取需要批處理的文件列表。對于文件夾和文件的操作,在VB API中主要由IpfcSession類完成。由于Creo采用工作目錄的概念,文件的存儲與管理默認均在工作目錄進行,因此首先需將包含批處理文件的目錄設置為Creo工作目錄,以便后續(xù)操作。

asyncConnection.Session.ChangeDirectory(InputPath)

之后可利用IpfcSession的ListFiles方法,獲取工作目錄下所有指定類型的文件,依次循環(huán)對文件進行處理,即可完成批處理操作。獲取工作目錄下所有元件的示例代碼如下所示。

Files = asyncConnection.Session.ListFiles(\"*.prt\", EpfcFileListOpt.EpfcFILE_LIST_LATEST, asyncConnection.Session.GetCurrentDirectory)

2.2 參數(shù)處理

Creo模型中的參數(shù)批量操作主要包括參數(shù)的添加、修改以及清空等,同時需實現(xiàn)將參數(shù)屬性設置為“指定”,以便配合部分PDM系統(tǒng)實現(xiàn)參數(shù)篩選。在VB API中,對參數(shù)的操作主要涉及IpfcParamValue、IpfcParameter、IpfcParameterOwner、IpfcModel四個類。

其中,IpfcParamValue用于存儲參數(shù)的值;IpfcParameter表示參數(shù)對象,包括名稱、類型等信息;IpfcParameterOwner表示參數(shù)所有者;IpfcModel表示已打開的模型,是IpfcParameterOwner的子類,可通過會話等方式獲得。一般操作為先獲取IpfcModel對象,再調用其父類IpfcParameterOwner的方法和屬性進行參數(shù)操作。添加參數(shù)通過調用IpfcParameterOwner類的CreateParam方法實現(xiàn)。

參數(shù)處理方面,系統(tǒng)主要實現(xiàn)批量添加和修改參數(shù)、刪除參數(shù)及將參數(shù)屬性設置為“指定”的功能。添加和修改參數(shù)可合并實現(xiàn),首先通過IpfcModel類的GetParam方法判斷模型是否已有對應參數(shù),如無則調用CreateParam方法添加參數(shù),如有則調用SetScaledValue方法修改其值。相關代碼如下所示。

param = CType(model, IpfcParameterOwner).GetParam(paramvalue.key)

If param Is Nothing Then

model.CreateParam(paramvalue.key, Parameters(paramvalue.key))

Else

param.SetScaledValue(Parameters(paramvalue.key), Nothing)

End If

VB API提供IpfcParameterOwner類的ListParams方法,可用于枚舉模型參數(shù)。通過遍歷參數(shù)列表,根據(jù)名稱調用IpfcParameter類的Delete方法實現(xiàn)參數(shù)刪除。需注意,刪除參數(shù)時枚舉出的參數(shù)數(shù)組長度和對象均會變化,因此可從后向前遍歷以減少參數(shù)數(shù)量變化的影響。

params = CType(model, IpfcParameterOwner).ListParams()

For i = params.Count - 1 To 0 Step -1

param = params.Item(i)

param.Delete()

Next

將參數(shù)屬性設置為“指定”較為簡單,直接設置IpfcParameter類的IsDesignated屬性即可。

param.IsDesignated = True

2.3 關系處理

Creo中的關系同樣需要實現(xiàn)添加和清空兩個操作。VB API中各類關系的處理由IpfcRelationOwner類完成。關系數(shù)據(jù)封裝并存儲在IpfcRelationOwner類的Relations屬性中,采用Istringseq類型表示,提供了Append、Clear等方法用于刪除、修改和添加操作。Istringseq中每個元素對應一行具體的文本信息。

實際操作中,發(fā)現(xiàn)無法直接調用Istringseq的方法修改關系,因此系統(tǒng)先將原有關系復制到新的字符串數(shù)組,再對該數(shù)組增刪操作,最后直接替換原有IpfcRelationOwner類的Relations屬性。

具體做法如下:首先讀取模型已有的關系并保存到新的字符串數(shù)組中。

For i = 0 To model.Relations.Count - 1

rels.Append(CType(model, IpfcRelationOwner).Relations.Item(i))

Next

然后,將新增的行依次添加到該字符串數(shù)組中。

For Each line As String In Relations

rels.Append(line)

Next

最后,將IpfcRelationOwner類的Relations屬性賦值為新的字符串數(shù)組,即可完成關系的添加。

CType(model, IpfcRelationOwner).Relations = rels

清空關系則相對簡單,直接調用IpfcRelationOwner類的DeleteRelations方法即可。

CType(model, IpfcRelationOwner).DeleteRelations()

2.4 格式導出

系統(tǒng)需實現(xiàn)DWG、PDF、IGS和STP多種格式的導出。其中,DWG和PDF默認為二維繪圖文件導出,IGS和STP則由三維模型文件導出。VB API中,各種格式的導出均由IpfcModel類的Export方法完成。IpfcExportInstructions為所有導出選項的父類,不同格式均有對應繼承自IpfcExportInstructions的子類,調用Export方法時傳入相應的子類對象即可完成對應格式的導出。

DWG和PDF的參數(shù)分別為CCpfcPDFExportInstructions和CCpfcDWG3DExportInstructions對象,生成方式類似,關鍵代碼如下所示。

' 導出PDF

pdfinstructions = (New CCpfcPDFExportInstructions()).Create()

model.Export(model.InstanceName + \".pdf\", pdfinstructions)

' 導出DWG

dwginstructions = (New CCpfcDWG3DExportInstructions()).Create()

model.Export(model.InstanceName + \".dwg\", dwginstructions)

模型導出為IGS和STP時,參數(shù)稍顯復雜,需要指定是否導出實體、導出為單個文件或多個文件等選項,分別由CCpfcGeometryFlags、CCpfcIGES3DNewExportInstructions以及CCpfcSTEP3DExportInstructions類實現(xiàn)。確定導出選項后,仍通過IpfcModel的Export方法導出,關鍵代碼如下所示。

' 導出IGS

geometryFlags = (New CCpfcGeometryFlags).Create()

geometryFlags.AsSolids = True

igsinstructions = (New CCpfcIGES3DNewExportInstructions).Create(EpfcAssemblyConfiguration.EpfcEXPORT_ASM_SINGLE_FILE, geometryFlags)

model.Export(model.InstanceName + \".igs\", igsinstructions)

' 導出STP

flags = (New CCpfcGeometryFlags()).Create()

flags.AsSolids = True

stepinstructions = (New CCpfcSTEP3DExportInstructions()).Create(EpfcAssemblyConfiguration.EpfcEXPORT_ASM_MULTI_FILES, flags)

model.Export(model.InstanceName + \".stp\", stepinstructions)

2.5 單位轉換

Creo的單位轉換功能使用戶能夠在不同單位系統(tǒng)之間輕松切換,以滿足多樣化設計需求。Creo同時提供了解釋尺寸和轉換尺寸兩種模式,可實現(xiàn)不改變原有尺寸數(shù)值,僅轉換尺寸單位,或根據(jù)單位間的換算關系對尺寸數(shù)值進行實際計算和調整。

VB API通過IpfcSheetOwner類實現(xiàn)單位的枚舉和修改,類方法GetPrincipalUnits和SetPrincipalUnits可獲取與設置當前模型的單位系統(tǒng)及轉換方式。修改模型單位為“毫米-牛頓-秒(mmns) ”的關鍵代碼如下所示。

units = CType(model, IpfcSolid).ListUnitSystems()

For i = 0 To units.Count - 1

If units.Item(i).Name.ToLower.IndexOf(\"mmns\") lt;gt; -1 Then

If (ConvertMethod = \"轉換尺寸\") Then

DimensionOption = EpfcUnitDimensionConversion.EpfcUNITCONVERT_SAME_DIMS

Else

DimensionOption = EpfcUnitDimensionConversion.EpfcUNITCONVERT_SAME_SIZE

End If

IpfcSolid.SetPrincipalUnits(units.Item(i), (New CCpfcUnitConversionOptions).Create(DimensionOption))

End If

Next

2.6 圖框替換

圖框本身作為一個frm文件保存在硬盤中。要設定或修改圖框,VB API中只需調用Session.RetrievemodelWithOpts等方法將其載入內存。針對圖框,VB API提供了IpfcModel的子類IpfcSheetOwner類進行操作,使用時只需確認當前打開的model為drawing,即可安全將IpfcModel類型轉換為IpfcSheetOwner類型。

IpfcSheetOwner類提供SetSheetFormat方法用于設定或修改圖框,關鍵代碼如下:

sheetOwner = CType(asyncConnection.Session.CurrentModel, IpfcSheetOwner)

modelDesc = (New CCpfcModelDescriptor).Create(EpfcModelType.EpfcMDL_DWG_FORMAT, Nothing, Nothing)

modelDesc.Path = DrawingFormatFile

retrieveModelOptions = (New CCpfcRetrieveModelOptions).Create

retrieveModelOptions.AskUserAboutReps = False

model = asyncConnection.Session.RetrievemodelWithOpts(modelDesc, retrieveModelOptions)

DrawingFormat = CType(model, IpfcDrawingFormat)

sheetOwner.SetSheetFormat(sheetOwner.CurrentSheetNumber, DrawingFormat, Nothing, Nothing)

圖框通常內建表格,替換圖框時多為更換這些表格以更新信息,因此替換圖框時需先獲取內建表格并刪除,關鍵代碼如下所示。

tables = CType(Drawing, IpfcTableOwner).ListTables()

For i = 0 To tables.Count - 1

If tables.Item(i).CheckIfIsFromFormat(SheetNumber) = True Then

CType(Drawing, IpfcTableOwner).DeleteTable(tables.Item(i), False)

End If

Next

2.7 導出族表實例

VB API中,使用IpfcFamilyMember類表示包含族表的模型,記錄了族表表頭及每個實例的信息。通過IpfcFamilyMember的ListRows方法可以獲取所有族表實例,每個實例由IpfcFamilyTableRow類表示。IpfcFamilyTableRow類的CreateInstance方法可獲得對應的Model對象,保存該對象即可完成族表到實例的導出。關鍵代碼如下所示。

solid = CType(model, IpfcSolid)

familyTableRows = CType(solid, IpfcFamilyMember).ListRows()

For i = 0 To familyTableRows.Count - 1

familyTableRow = familyTableRows.Item(i)

instmodel = familyTableRow.CreateInstance()

instmodel.Copy(instmodel.InstanceName + \".prt\", Nothing)

ExportFamtableinstances.Add(instmodel.InstanceName)

Next

上述遍歷族表時未訪問缺省模型,因此還需導出缺省模型。VB API未提供相關接口,故通過另一思路實現(xiàn):將零件中的族表信息刪除后保存,該零件即為缺省模型。由于Creo不能同時打開同名文件,且需避免修改源文件,流程為先將源文件復制到目標文件夾,關閉當前文件后再打開復制的新文件,刪除其族表信息即可獲得缺省模型。關鍵代碼如下所示。

CType(model, IpfcFamilyMember).RemoveRow(familyTableRows)

descmodel = (New CCpfcModelDescriptor).Create(EpfcModelType.EpfcMDL_PART, \"\", Nothing)

descmodel.Path = Filename

Model.Copy(descmodel)

2.8 材料設定

VB API中,材料信息由IpfcMaterial類表示,提供如Name、MassDensity、Hardness等屬性,描述材料名稱、密度、硬度等。可以通過IpfcSession類的RetrieveModelWithOpts方法從硬盤讀取mtl材料文件。繼承自IpfcModel類的IpfcPart類用于管理零件的材料信息,其CurrentMaterial屬性類型為IpfcMaterial,讀取或修改該屬性即可完成零件材料信息的獲取和設置。

讀取材料信息并替換為指定材料的關鍵代碼如下所示。

part = CType(model, IpfcPart)

material = part.CurrentMaterial

If material IsNot Nothing Then

If material.Name lt;gt; newName Then

material = part.RetrieveMaterial(MtlName)

part.CurrentMaterial = material

End If

End If

2.9 舊版本刪除

VB API中,通過調整IpfcSession類的ListFiles方法的Filter參數(shù),可以分別獲取模型的所有版本文件和最新版本文件列表。通過遍歷所有版本文件并與最新版本文件比對,判斷是否為舊版本,進而實現(xiàn)舊版本文件的刪除功能。

為了增強數(shù)據(jù)安全性,系統(tǒng)未選擇直接永久刪除文件,而是調用Windows API函數(shù)將文件移動到回收站,確保用戶可以恢復刪除文件,避免數(shù)據(jù)永久丟失。

示例代碼如下所示。

' 獲取當前目錄下所有文件列表

AllFiles = CType(asyncConnection.Session, IpfcBaseSession).ListFiles(Filetype, EpfcFileListOpt.EpfcFILE_LIST_ALL, asyncConnection.Session.GetCurrentDirectory)

' 獲取當前目錄下最新文件列表

LatestFiles = CType(asyncConnection.Session, IpfcBaseSession).ListFiles(Filetype, EpfcFileListOpt.EpfcFILE_LIST_LATEST, asyncConnection.Session.GetCurrentDirectory)

For Each file In AllFiles

Dim DelAct As Boolean = True

For Each latestfile In LatestFiles

If file = latestfile Then

DelAct = False ' 如果是最新版本,則不刪除

Exit For

End If

Next

If DelAct Then

' 將舊版本文件發(fā)送到回收站

My.Computer.FileSystem.DeleteFile(file.Path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin, FileIO.UICancelOption.DoNothing)

End If

Next

3 應用實例

基于以上功能模塊設計經(jīng)驗,結合企業(yè)實際需求及設計人員使用習慣,開發(fā)了Creo的二次開發(fā)批處理設計系統(tǒng)。主要操作界面如圖2所示。設計人員可在界面左側點擊8個批處理功能的超鏈接,選擇需要處理的文件或目錄,并根據(jù)具體需求輸入或選擇相關參數(shù),點擊對應功能按鈕,系統(tǒng)自動執(zhí)行相應批處理,具備操作便捷、響應快速、易學易用等優(yōu)點。

以批量導出族表實例為例進行說明,程序運行界面如圖3所示。首先選擇需要導出族表實例的零件及實例導出目錄,隨后點擊右下角的導出按鈕,即可自動將包含族表文件的零件全部導出到指定文件夾,同時導出狀態(tài)和結果會在程序下方的列表中顯示。程序運行結束后,會自動打開實例導出目錄,如圖4所示。

4 結束語

本文基于工作過程中對Creo批處理操作的實際需求,利用Creo提供的VB API接口開發(fā)了一套Creo批處理設計系統(tǒng),實現(xiàn)了批量參數(shù)處理、批量關系處理、批量格式導出、批量單位轉換、批量圖框替換、批量導出族表實例、批量材料設定及批量舊版本刪除等功能。該系統(tǒng)具有便捷、快速、易操作的特點,使設計人員擺脫了煩瑣且重復的工作,在提高設計效率的同時,降低了人為操作錯誤的風險。

下一步,將根據(jù)用戶反饋和實際需求,持續(xù)優(yōu)化系統(tǒng),進一步完善現(xiàn)有功能,重點提升系統(tǒng)的穩(wěn)定性與兼容性,增加對Creo新版本的支持,開發(fā)更多實用功能,擴展系統(tǒng)功能及應用場景。

參考文獻:

[1] 叢日立,冀帥,安博.利用二次開發(fā)進行CAD批量打印探究[J].無線互聯(lián)科技,2017,14(4):108-109.

[2] 李國清,張蓓蓓,張娜,等.基于CAD平臺實現(xiàn)DLG編輯工序的批處理作業(yè)[J].測繪與空間地理信息,2013,36(11):61-63,67.

[3] 江濤,何法江.基于Creo的設計助手二次開發(fā)設計[J].智能計算機與應用,2020,10(2):168-171.

[4] 張文曉. 基于Excel VBA對Creo進行異步模式下的二次開發(fā)[J].電腦知識與技術, 2019, 15(7): 212-214.

[5] 李世國.Pro/TOOLKIT程序設計[M].北京:機械工業(yè)出版社,2003.

[6] Parametric Technology Corporation. Creo Parametric 2.0 VB API User's Guide[M]. USA: PTC, 2012.

[7] 胡迪,羅輝.利用Python二次開發(fā)Creo[J].電腦知識與技術,2020,16(2):49-50,53.

【通聯(lián)編輯:唐一東】

猜你喜歡
二次開發(fā)
淺談基于Revit平臺的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
基于C#的AutoCAD建筑構件庫二次開發(fā)
江西建材(2018年2期)2018-04-14 08:01:14
西門子Easy Screen對倒棱機床界面二次開發(fā)
基于全站儀二次開發(fā)的覆冰厚度測量與實現(xiàn)
電測與儀表(2016年9期)2016-04-12 00:29:52
Micaps3.2 版本二次開發(fā)入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
基于VB的ANSYS二次開發(fā)在變壓器抗短路性能分析中的應用
基于CATIA的橡皮囊成形毛料展開的二次開發(fā)
機械工程師(2015年9期)2015-02-26 08:38:10
ANSYS Workbench二次開發(fā)在汽車穩(wěn)定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 高潮爽到爆的喷水女主播视频 | 91久久偷偷做嫩草影院免费看| 成AV人片一区二区三区久久| a级毛片视频免费观看| 欧美a在线| 丁香婷婷久久| 免费人成黄页在线观看国产| 日本在线亚洲| 美女被操黄色视频网站| 欧美爱爱网| 欧美视频在线播放观看免费福利资源 | 国产精品人莉莉成在线播放| 国产在线拍偷自揄观看视频网站| 国产成人做受免费视频| 国产精品片在线观看手机版| 亚洲永久精品ww47国产| 国产精品片在线观看手机版| a欧美在线| 国产理论精品| 日韩激情成人| 亚洲精品波多野结衣| 蜜桃视频一区| 午夜国产理论| 亚洲码在线中文在线观看| 啪啪啪亚洲无码| 精品国产免费第一区二区三区日韩| 欧美亚洲欧美区| 亚洲天堂精品在线| 国产在线观看91精品亚瑟| 亚洲不卡av中文在线| 99久久精品久久久久久婷婷| 国产毛片久久国产| 天天综合色网| 91精品啪在线观看国产| 五月六月伊人狠狠丁香网| 国产视频一区二区在线观看| 亚洲人成网站色7777| 99久久人妻精品免费二区| 尤物国产在线| 波多野结衣无码AV在线| 最新亚洲人成无码网站欣赏网 | 久久精品国产一区二区小说| 六月婷婷综合| 谁有在线观看日韩亚洲最新视频| 久久青草免费91线频观看不卡| 国产精品自在自线免费观看| 亚洲中文字幕无码爆乳| 一区二区三区毛片无码 | 国产极品嫩模在线观看91| 一本大道香蕉高清久久| 沈阳少妇高潮在线| 手机精品视频在线观看免费| 亚洲欧洲日产国产无码AV| 欧美色亚洲| 亚洲国产欧洲精品路线久久| 国产肉感大码AV无码| 大香网伊人久久综合网2020| 亚洲日韩高清无码| 亚洲日本在线免费观看| 国产精品白浆无码流出在线看| 国产亚洲男人的天堂在线观看| 久久国语对白| 国产国产人成免费视频77777| 国产视频大全| 动漫精品啪啪一区二区三区| 亚洲精品卡2卡3卡4卡5卡区| 精品剧情v国产在线观看| 国产成人精品高清不卡在线| 国产va欧美va在线观看| 99久久婷婷国产综合精| 亚洲午夜国产精品无卡| 国产精品无码作爱| 国产激情无码一区二区APP| 天堂成人在线视频| 一本二本三本不卡无码| 男人天堂亚洲天堂| 自拍中文字幕| 毛片一级在线| 尤物在线观看乱码| 91成人在线观看视频| 国产视频一二三区| 香蕉视频国产精品人|