青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Life is Good.

Enhance Tech and English
隨筆 - 65, 文章 - 20, 評論 - 21, 引用 - 0
數據加載中……

Managed ObjectArx 定制autocad的界面(包括menu.toolbar等...)

//  Copyright 2005-2006 by Autodesk, Inc.
 
// 
 
// Permission to use, copy, modify, and distribute this software in
 
// object code form for any purpose and without fee is hereby granted, 
 
// provided that the above copyright notice appears in all copies and 
 
// that both that copyright notice and the limited warranty and
 
// restricted rights notice below appear in all supporting 
 
// documentation.
 
// 
 
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
 
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
 
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
 
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
 
// UNINTERRUPTED OR ERROR FREE.
 
// 
 
// Use, duplication, or disclosure by the U.S. Government is subject to 
 
// restrictions set forth in FAR 52.227-19 (Commercial Computer
 
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
 
// (Rights in Technical Data and Computer Software), as applicable. 
 using  System;
 
using  System.IO;
 
using  Autodesk.AutoCAD.Runtime;
 
using  Autodesk.AutoCAD.ApplicationServices;
 
using  Autodesk.AutoCAD.EditorInput;
 
using  Autodesk.AutoCAD.DatabaseServices;

 
using  Autodesk.AutoCAD.Customization;

 
//  This application implements several commands that shows how to
 
//  manipulate some of the existing CUI User interface and components.
 
//  The commands implemented here allow you to:
 
// 
 
//  1) Create/Remove menu and its items (ADDMENU/REMMENU)
 
//  3) Create/Remove a workspace (ADDWS/REMWS)
 
//  2) Create/Remove a toolbar and its items (ADDTOOLBAR/REMTOOLBAR)
 
//  4) Create a keyboard shortcut (CUISHORTCUT)
 
//  5) Create a temporary override (TEMPKEY)
 
//  6) Change position and docking of "Info Palette" 
 
//     window (DOCKR, DOCKL, DOCKF)
 
//  7) Add a double-click action (DBLCLICK)
 
//  8) A command that performs the tasks of ADDMENU,ADDTOOLBAR,
 
//     DOCKL and CUISHORTCUT (CUIALL)
 
//  9) Save a CUI after its modifications and reload it (SAVECUI)

 
//  Apart from the above commands, lisp wrappers have also been 
 
//  implemented to make the commands callable from windows.

 
//  To use CuiSamp.dll:
 
//  1) Start AutoCAD and open a new drawing.
 
//  2) Type netload and select CuiSamp.dll.
 
//  3) Execute the CUIALL command, if you want the UI related 
 
//     modifications.

 
//  Please add the References acdbmgd.dll,acmgd.dll,
 
//  AcCui.dll and AcCustomize.dll before trying to 
 
//  build this project. 
 
 
namespace  CuiSamp
  {
     
/**/ ///   <summary> 
     
///  Summary description for Class1.
     
///   </summary> 
      public   class  CuiSamp
      {
         
//  All Cui files (main/partial/enterprise) have to be loaded into an object of class 
         
//  CustomizationSection
         
//  cs - main AutoCAD CUI file 
         CustomizationSection cs;
        CustomizationSection entCs;
        CustomizationSection[]partials ;
        
         
int  numPartialFiles;

        YesNoIgnoreToggle yes  
=  YesNoIgnoreToggle.yes;
        YesNoIgnoreToggle no   
=  YesNoIgnoreToggle.no;
        
         
//  True when enterprise CUI file is loaded successfully 
          bool  entCsLoaded;

         
//  ed - access to the AutoCAD Command Line
         
//  Allows us to write messages or Issue Commands in the interface 
         Editor ed  =  Application.DocumentManager.MdiActiveDocument.Editor;


         
// Default Constructor 
          public  CuiSamp()
          {
             
//  retrieve the location of, and open the ACAD Main CUI File 
              string  mainCuiFile  =  ( string )Application.GetSystemVariable( " MENUNAME " );
            mainCuiFile  
+=   " .cui " ;
            cs  
=   new  CustomizationSection(mainCuiFile);
            
             
string  entCuiFile  =  ( string )Application.GetSystemVariable( " ENTERPRISEMENU " );
             
if ( entCuiFile.Equals( " . " ))
                entCsLoaded  
=   false ;
             
else 
               {
                entCs  
=   new  CustomizationSection(entCuiFile);
                entCsLoaded  
=   true ;
            } 
            
             
//  Code for loading all partial CUI's listed in the main CUI file 
             
            partials  
=   new  CustomizationSection[cs.PartialCuiFiles.Count];
             
int  i = 0 ;
             
foreach ( string  fileName  in  cs.PartialCuiFiles)
              {    
                 
if  (File.Exists(fileName))
                  {
                    partials[i]  
=   new  CustomizationSection(fileName);
                    i 
++ ;
                } 
            } 
            numPartialFiles  
=  i;    
        } 
 
 
         
//  Command: savecui
         
//  This Command saves all open CUI Files that have been modified 
         [CommandMethod( " savecui " )]
         
public   void  saveCui()
          {
             
//  Save all Changes made to the CUI file in this session. 
             
//  If changes were made to the Main CUI file - save it
             
//  If changes were made to teh Partial CUI files need to save them too 
     
             
if (cs.IsModified)
                cs.Save();

             
for ( int  i = 0 ;i  <  numPartialFiles;i ++ )
              {    
                 
if (partials[i].IsModified)
                    partials[i].Save();
            } 
            
             
if (entCsLoaded  &&  entCs.IsModified)
                entCs.Save();

             
//  Here we unload and reload the main CUI file so the changes to the CUI file could take effect immediately. 
              string  flName  =  cs.CUIFileBaseName;
            Application.SetSystemVariable( 
" FILEDIA " , 0 );
            Application.DocumentManager.MdiActiveDocument.SendStringToExecute( 
" cuiunload  "   +  flName  +   "   " , false , false , false );
            Application.DocumentManager.MdiActiveDocument.SendStringToExecute( 
" cuiload  "   +  flName  +   "  filedia 1  " , false , false , false );
        } 
 
         
//  Lisp callable function: savecui
         
//  Lisp wrapper for savecui command 
         [LispFunction( " savecui " )]
         
public   void  saveCui(ResultBuffer args)
          {
            saveCui();
        } 
 
         
//  Command: addmenu
         
//  This Command adds a new menu to all workspaces called Custom Menu, which contains 2 sub items
         
//  The Menu is first added to the Main CUI File and then added to all it's workspaces.  
         [CommandMethod( " addmenu " )]
         
public   void  addMenu()
          {
             
if  (cs.MenuGroup.PopMenus.IsNameFree( " Custom Menu " ))
              {
                
                System.Collections.Specialized.StringCollection pmAliases  
=   new  System.Collections.Specialized.StringCollection();
                pmAliases.Add( 
" POP12 " );
                
                PopMenu pm  
=   new  PopMenu( " Custom Menu " ,pmAliases, " Custom Menu " ,cs.MenuGroup);
                
                addItemsToPM(pm);
                addMenu2Workspaces(pm);
            } 
             
else 
                ed.WriteMessage( 
" Custom Menu already Exists\n " );    
        } 
 
         
//  Lisp callable function: addmenu
         
//  Lisp wrapper for addmenu command 
         [LispFunction( " addmenu " )]
         
public   void  addMenu(ResultBuffer args)
          {
            addMenu();
        } 
 
         
//  Add new Items to a PopMenu 
          private   void  addItemsToPM(PopMenu pm)
          {
            PopMenuItem pmi  
=   new  PopMenuItem(pm, - 1 );
            pmi.MacroID  
=   " ID_AUGI " ;pmi.Name  =   " Autodesk User Group International " ;
            
            pmi  
=   new  PopMenuItem(pm, - 1 );

            pmi  
=   new  PopMenuItem(pm, - 1 );
            pmi.MacroID  
=   " ID_CustomSafe " ;pmi.Name  =   " Online Developer Center " ;
        } 
 
         
//  Add the menu to all the workspaces 
          private   void  addMenu2Workspaces(PopMenu pm)
          {
             
foreach (Workspace wk  in  cs.Workspaces)
              {
                WorkspacePopMenu wkpm  
=   new  WorkspacePopMenu(wk,pm);
                wkpm.Display  
=   1 ;
            } 
        
        } 
    
         
//  Command: remmenu
         
//  This Command deletes the menu added above from the Main CUI File and any
         
//   workspaces that it was added to.  
         [CommandMethod( " remmenu " )]
         
public   void  remMenu()
          {
             
//  Find Index of the desired MenuItem
             
//  Remove it from all Workspaces that it exists in
             
//  Omitting this step leaves nasty left-overs in the Workspace files
             
//  Remove it from the Cui files' Menu List 
             
            PopMenu    pm  
=  cs.MenuGroup.PopMenus.FindPopWithAlias( " POP12 " );
             
if  (pm  !=   null  )
              {
                 
foreach (Workspace wk  in  cs.Workspaces)
                  {
                    WorkspacePopMenu wkPm  
=  wk.WorkspacePopMenus.FindWorkspacePopMenu(pm.ElementID,pm.Parent.Name);
            
                     
if (wkPm  !=   null )
                        wk.WorkspacePopMenus.Remove(wkPm);
                } 
                cs.MenuGroup.PopMenus.Remove(pm);     
//  Deletes the Menu from ACAD Menu Group 
             } 
        } 
 
         
//  Lisp callable function: remmenu
         
//  Lisp wrapper for remmenu command 
         [LispFunction( " remmenu " )]
         
public   void  remMenu(ResultBuffer args)
          {
            remMenu();
        } 
 
         
//  Command: addws
         
//  This command adds a new workspace. The name of the workspace to create is
         
//  obtained from the command line. 
         [CommandMethod( " addws " )]
         
public   void  addws()
          {
            String wsName;
            PromptResult prs  
=  ed.GetString( " Enter name of workspace to create:  " );
             
if (PromptStatus.OK  ==  prs.Status )
              {
                wsName  
=  prs.StringResult;
                 
if ( - 1   ==  cs.Workspaces.IndexOfWorkspaceName(wsName))  //  If the workspace doesnot exist 
                    {
                    Workspace nwWs  
=   new  Workspace (cs, wsName);  //  Create the workspace 
                     saveCui();  //  Save and reload the CUI file 
                 } 
                 
else 
                   {
                    ed.WriteMessage( 
" A workspace with this name already exists " );
                } 
            } 
 
        } 
 
         
//  Lisp callable function: addws
         
//  Lisp wrapper for addws command 
         [LispFunction( " addws " )]
         
public   void  addws(ResultBuffer args)
          {
            addws();
        } 
 
         
//  Command: remws
         
//  This command removes a workspace. The name of the workspace to remove is
         
//  obtained from the command line. 
         [CommandMethod( " remws " )]
         
public   void  remws()
          {
            String wsName;
            PromptResult prs  
=  ed.GetString( " Enter name of workspace to remove:  " );
             
if (PromptStatus.OK  ==  prs.Status )
              {
                wsName  
=  prs.StringResult;
                 
if ( - 1   !=  cs.Workspaces.IndexOfWorkspaceName(wsName))  //  If the workspace exist 
                    {
                    cs.deleteWorkspace(wsName);  
//  Remove the workspace 
                     saveCui();  //  Save and reload the CUI file 
                 } 
                 
else 
                   {
                    ed.WriteMessage( 
" No workspace exists with this name " );
                } 
            } 
            
        } 
         
//  Lisp callable function: remws
         
//  Lisp wrapper for remws command 
         [LispFunction( " remws " )]
         
public   void  remws(ResultBuffer args)
          {
            remws();
        } 
 
 
         
//  Command: cuishortcut
         
//  This adds a Shortcut key to the CUI command.
         
//  Ctrl+B is used for Toggling SNAP. It gets reassigned 
         [CommandMethod( " cuishortcut " )]
         
public   void  shortCut()
          {
             
//  In here we will make a shortcut Key combination to the Customize.. command 
             MacroGroup mg  =  cs.MenuGroup.MacroGroups[ 0 ];  //  Search the ACAD Macros 
              foreach  (MenuMacro mcr  in  mg.MenuMacros)
              {
                 
if (mcr.ElementID.Equals( " MM_1570 " ))
                  {
                    MenuAccelerator ma  
=   new  MenuAccelerator(mcr,cs.MenuGroup);
                    ma.AcceleratorShortcutKey  
=   " CTRL+B " ;
                } 
            } 
        } 
         
//  Lisp callable function: cuishortcut
         
//  Lisp wrapper for cuishortcut command 
         [LispFunction( " cuishortcut " )]
         
public   void  shortCut(ResultBuffer args)
          {
            shortCut();
        } 
 
         
//  Command: dockr
         
//  Dock Info Palette to the right 
         [CommandMethod( " dockr " )]
         
public   void  dockInfoPalR()
          {
            dockInfoPalette(DockableWindowOrient.right);
        } 
         
//  Lisp callable function: dockr
         
//  Lisp wrapper for dockr command 
         [LispFunction( " dockr " )]
         
public   void  dockInfoPalR(ResultBuffer args)
          {
            dockInfoPalR();
        } 
 
         
//  Command: dockl
         
//  Dock Info Palette to the left 
         [CommandMethod( " dockl " )]
         
public   void  dockInfoPalL()
          {
            dockInfoPalette(DockableWindowOrient.left);
        } 
 
         
//  Lisp callable function: dockl
         
//  Lisp wrapper for dockl command 
         [LispFunction( " dockl " )]
         
public   void  dockInfoPalL(ResultBuffer args)
          {
            dockInfoPalL();
        } 
 
         
//  Command: dockf
         
//  Set Info Palette to float 
         [CommandMethod( " dockf " )]
         
public   void  dockInfoPalF()
          {
            dockInfoPalette(DockableWindowOrient.floating);
        } 
         
//  Lisp callable function: dockf
         
//  Lisp wrapper for dockf command 
         [LispFunction( " dockf " )]
         
public   void  dockInfoPalF(ResultBuffer args)
          {
            dockInfoPalF();
        } 
 
 
         
//  Method to implement the positiioning/docking of the "Info Palette" window 
          private   void  dockInfoPalette(DockableWindowOrient orientation)
          {
             
int  wkB  =  cs.Workspaces.IndexOfWorkspaceName( " AutoCAD Default " );
             
//  check to see if it exists 
              if  (wkB  ==   - 1 )
              {
                 
//  if not, then see if it is called simply AutoCAD 
                 wkB  =  cs.Workspaces.IndexOfWorkspaceName( " AutoCAD " );
                 
if  (wkB  ==   - 1 )
                  {
                     
//  if not, then ok - it's something else 
                     Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage( " Workspace not found. " );
                     
return ;
                } 
            } 
            Workspace wk  
=  cs.Workspaces[wkB];
            
             
foreach (WorkspaceDockableWindow dockableWindow  in  wk.DockableWindows)
              {
                 
if (dockableWindow.Name.Equals( " Info Palette " ))
                  {    
                     
if (orientation.Equals(DockableWindowOrient.floating))
                        dockableWindow.DockFloat  
=  DockedFloatingIgnoreToggle.floating;
                     
else     
                        dockableWindow.DockFloat  
=  DockedFloatingIgnoreToggle.docked;

                    dockableWindow.Display  
=  yes;
                    dockableWindow.Orientation  
=  orientation;
                    dockableWindow.AutoHide  
=  OnOffIgnoreToggle.off;
                    dockableWindow.UseTransparency  
=  no;
                     
break ;
                } 
            } 
        } 
 
         
//  Command: addtoolbar
         
//  Creates a new toolbar called "New Toolbar", and adds it to all workspaces. 
         
//  This toolbar contains a Toolbar control for named view, button for drawing 
         
//  a pline, and a flyout that uses the "Draw" tool bar. 
         [CommandMethod( " addtoolbar " )]
         
public   void  addToolbar()
          {
            Toolbar newTb  
=   new  Toolbar( " New Toolbar " ,cs.MenuGroup);
            newTb.ToolbarOrient  
=  ToolbarOrient.floating;
            newTb.ToolbarVisible  
=  ToolbarVisible.show;
            
            ToolbarControl tbCtrl  
=   new  ToolbarControl(ControlType.NamedViewControl,newTb, - 1 );
                        
            ToolbarButton tbBtn  
=   new  ToolbarButton(newTb, - 1 );
            tbBtn.Name  
=   " PolyLine " ;
            tbBtn.MacroID  
=   " ID_Pline " ;

            ToolbarFlyout tbFlyout  
=   new  ToolbarFlyout(newTb, - 1 );
            tbFlyout.ToolbarReference  
=   " DRAW " ;

             
foreach ( Workspace wk  in  cs.Workspaces)
              {
                WorkspaceToolbar wkTb  
=   new  WorkspaceToolbar(wk,newTb);
                wk.WorkspaceToolbars.Add(wkTb);
                wkTb.Display  
=   1 ;
            } 
        } 
         
//  Lisp callable function: addtoolbar
         
//  Lisp wrapper for addtoolbar command 
         [LispFunction( " addtoolbar " )]
         
public   void  addToolbar(ResultBuffer args)
          {
            addToolbar();
        } 
 
         
//  Command: remtoolbar
         
//  This Command removes the toolbar added above from the Main CUI File and any
         
//  workspaces that it was added to.  
         [CommandMethod( " remtoolbar " )]
         
public   void  remToolbar()
          {
            Toolbar tbr  
=  cs.MenuGroup.Toolbars.FindToolbarWithName( " New Toolbar " );
             
if  (tbr  !=   null  )
              {
                 
foreach (Workspace wk  in  cs.Workspaces)
                  {
                    WorkspaceToolbar wkTb  
=  wk.WorkspaceToolbars.FindWorkspaceToolbar(tbr.ElementID,tbr.Parent.Name);
            
                     
if (wkTb  !=   null )
                        wk.WorkspaceToolbars.Remove(wkTb);
                } 
                cs.MenuGroup.Toolbars.Remove(tbr);     
//  Deletes the toolbar from ACAD Menu Group 
             } 
        } 
 
         
//  Lisp callable function: remtoolbar
         
//  Lisp wrapper for remtoolbar command 
         [LispFunction( " remtoolbar " )]
         
public   void  remToolbar(ResultBuffer args)
          {
            remToolbar();
        } 
 
         
//  Command: tempkey
         
//  This command will install a temporary override key. Temporary override keys are keys that temporarily 
         
//  turn on or turn off one of the drawing aids that are set in the Drafting Settings dialog box 
         
//  (for example, Ortho mode, object snaps, or Polar mode). 
         [CommandMethod( " tempkey " )]
         
public   void  tempOverride()
          {
            TemporaryOverride newTempOverride  
=   new  TemporaryOverride(cs.MenuGroup);    
            newTempOverride.OverrideShortcutKey  
=   " SHIFT+Y " ;  //  Scan code for Y 
             newTempOverride.Name  =   " Customization Override " ;
            newTempOverride.Description  
=   " Customization Override " ;
            newTempOverride.ElementID  
= " EID_CUITEMPOVERRIDE " ;
             
//  Creating a override for Shift+Y (Key down) that will behave as temporary override for OSnap to endpoint (MM_1629) 
             OverrideItem newOverrideItem  =   new  OverrideItem( " MM_1629 " ,OverrideKeyState.Down,newTempOverride);
            newTempOverride.DownOverride  
=  newOverrideItem;            
        } 
         
//  Lisp callable function: tempkey
         
//  Lisp wrapper for tempkey command 
         [LispFunction( " tempkey " )]
         
public   void  tempOverride(ResultBuffer args)
          {
            tempOverride();
        } 
 
         
//  Command: dblclick
         
//  This command adds a double click action for polylines (Non-LWpolylines like 2D polylines).
         
//  After running this command, When we double click a polyline (i.e., a non-light weight polyline), 
         
//  the "Properties" window is launched. This replaces the original behaviour where "pedit" was launched. 
         [CommandMethod( " dblclick " )]
         
public   void  doubleClick()
          {
            DoubleClickAction dblClickAction  
=   new  DoubleClickAction(cs.MenuGroup, " My Double click " , - 1 );
            dblClickAction.Description  
=   " Double Click Customization " ;
            dblClickAction.ElementID  
=   " EID_mydblclick " ;
            dblClickAction.DxfName  
=   " Polyline " ;
            DoubleClickCmd dblClickCmd  
=   new  DoubleClickCmd(dblClickAction);
            dblClickCmd.MacroID  
=   " ID_Ai_propch " ;
            dblClickAction.DoubleClickCmd  
=  dblClickCmd;
        } 
         
//  Lisp callable function: dblclick
         
//  Lisp wrapper for dblclick command 
         [LispFunction( " dblclick " )]
         
public   void  doubleClick(ResultBuffer args)
          {
            doubleClick();
        } 
 
        
         
//  Command: cuiall
         
//  Issuing this command will run the methods to make all changes to the UI
         
//  This will add the custom menu, toolbar, and shortcut, as well as 
         
//  dock the info palette on the right side. 
         [CommandMethod( " cuiall " )]
         
public   void  callForAllChanges()
          {
            addMenu();
            shortCut();
            addToolbar();
            dockInfoPalR();
            saveCui();
        } 
         
//  Lisp callable function: cuiall
         
//  Lisp wrapper for cuiall command 
         [LispFunction( " cuiall " )]
         
public   void  callForAllChanges(ResultBuffer args)
          {
            callForAllChanges();
        } 
 
    } 

 

posted on 2010-06-21 22:33 Mike Song 閱讀(857) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美岛国激情| 欧美精品一区二区三区很污很色的 | 欧美视频第二页| 欧美成人高清| 欧美日韩国产亚洲一区| 欧美日韩免费区域视频在线观看| 性欧美xxxx大乳国产app| 亚洲一区二区伦理| 亚洲一区二区高清视频| 亚洲国产导航| 久久久噜噜噜久久人人看| 一个色综合av| 亚洲欧美日韩中文播放| 一区二区三区日韩欧美| 夜夜嗨av一区二区三区网站四季av| 国产香蕉久久精品综合网| 欧美韩日一区| 欧美久久电影| 国产精品毛片一区二区三区| 国产精品欧美日韩一区| 亚洲第一精品在线| 一本到高清视频免费精品| 亚洲男人影院| 久久夜色精品国产亚洲aⅴ| 欧美激情视频给我| 中国日韩欧美久久久久久久久| 日韩天堂av| 亚洲一区二区欧美日韩| 久久国产精品久久久久久| 久久精品夜色噜噜亚洲aⅴ | 欧美aaa级| 欧美国产第一页| 亚洲天堂网站在线观看视频| 欧美a一区二区| 狠狠久久综合婷婷不卡| 亚洲国产精品久久久久| 午夜精品免费视频| 亚洲高清一二三区| 亚洲一区不卡| 久久一区二区三区四区| 欧美视频中文一区二区三区在线观看 | 欧美伦理一区二区| 国产精品久久久久国产精品日日| 亚洲青色在线| 久久阴道视频| 在线观看国产欧美| 久久永久免费| 老司机精品导航| 在线观看中文字幕亚洲| 玖玖玖国产精品| 午夜精品一区二区在线观看| 欧美理论在线播放| 禁久久精品乱码| 亚洲第一黄网| 亚洲电影毛片| 女同性一区二区三区人了人一| 亚洲欧洲美洲综合色网| 亚洲人体大胆视频| 国产精品久久久一区二区三区| 亚洲精品在线视频观看| 免费人成网站在线观看欧美高清| 国产主播一区| 欧美高清在线一区二区| 久久精品国产久精国产思思| 久久免费一区| 国产一区观看| 亚洲第一页自拍| 亚洲精品在线观看免费| 久久久免费精品视频| 亚洲人成精品久久久久| 国产精品一区亚洲| 欧美性视频网站| 一本一本久久| 久久精品在这里| 精品动漫一区| 免费成人黄色av| 亚洲一区综合| 久久精品一本| 亚洲主播在线观看| 国产日韩一区二区| 国产九区一区在线| 欧美影院久久久| 亚洲精品视频免费观看| 亚洲黄色一区| 欧美亚洲综合久久| 亚洲欧美www| 99视频精品全部免费在线| 亚洲狼人综合| 久久一本综合频道| 日韩视频一区二区三区在线播放| 最新精品在线| 亚洲综合不卡| 久久久99爱| 欧美国产日韩精品| 欧美激情麻豆| 国产精品乱码人人做人人爱| 国产一区欧美日韩| 9久草视频在线视频精品| 99精品视频一区二区三区| 欧美黄色免费| 91久久精品美女| 蜜臀久久99精品久久久久久9| 亚洲日本欧美天堂| 久久久久久噜噜噜久久久精品| 免费美女久久99| 欧美日韩激情小视频| 国产精品拍天天在线| 99成人在线| 国产精品白丝黑袜喷水久久久| 欧美日韩精品在线播放| 欧美午夜美女看片| 欧美激情欧美激情在线五月| 欧美成人a视频| 国产精品乱码一区二区三区| 在线观看欧美精品| 久久久久久高潮国产精品视| 夜夜嗨av一区二区三区四区| 欧美日韩亚洲高清一区二区| 亚洲一级一区| 99精品热视频| 国产午夜精品全部视频在线播放| 欧美日韩亚洲系列| 亚洲美女诱惑| 一区二区欧美日韩视频| 国产精品久久久久久久久久久久| 亚洲网站视频| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久gogo国模裸体人体| 亚洲福利视频在线| 欧美激情第8页| 亚洲专区一区二区三区| 亚洲欧美日韩综合国产aⅴ| 国产精品入口尤物| 久久久久国产精品麻豆ai换脸| 久久综合九色综合久99| 亚洲校园激情| 亚洲综合99| 一本到高清视频免费精品| 欧美一级成年大片在线观看| 久久亚洲一区二区| 国产精品美女999| 欧美国产日韩视频| 国模精品一区二区三区色天香| 欧美激情成人在线| 欧美日韩综合一区| 久久亚洲高清| 欧美黄色免费网站| 欧美专区日韩视频| 国产精品美女诱惑| 久久久伊人欧美| 欧美淫片网站| 宅男噜噜噜66一区二区66| 欧美91精品| 久久久久综合| 亚洲一区3d动漫同人无遮挡| 午夜精品影院在线观看| 亚洲一区二区三区乱码aⅴ| 麻豆freexxxx性91精品| 久久久精品久久久久| 国产精品久久久久久久电影| 日韩视频欧美视频| 中文亚洲字幕| 欧美午夜电影网| 亚洲日本欧美| 一区二区三区视频在线| 嫩草成人www欧美| 久久婷婷人人澡人人喊人人爽| 国产性做久久久久久| 一区二区三区四区国产精品| 亚洲风情在线资源站| 久久福利毛片| 久久久亚洲国产天美传媒修理工| 国产日韩精品一区二区| 亚洲在线黄色| 午夜国产不卡在线观看视频| 欧美视频免费| 在线亚洲电影| 亚洲女ⅴideoshd黑人| 欧美日韩国产高清视频| 亚洲一卡二卡三卡四卡五卡| 性欧美暴力猛交另类hd| 狠狠色2019综合网| 久久综合狠狠综合久久综青草| 亚洲黄一区二区三区| 欧美一区二区三区久久精品茉莉花| 国产欧美亚洲日本| 老司机久久99久久精品播放免费 | 午夜国产精品视频| 久久久久国产精品一区三寸| 国产日韩专区| 麻豆av一区二区三区| 欧美一区二区福利在线| 夜久久久久久| 亚洲视频一区二区在线观看| 99精品欧美一区二区三区| 中文欧美在线视频| 夜夜嗨一区二区| 国产精品99久久久久久www| 在线视频亚洲欧美| 久久成人免费日本黄色|