不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業名稱
* 信用代碼
* 所在行業
* 企業規模
* 所在職位
* 姓名
* 所在行業
* 學歷
* 工作性質
請先選擇行業
您還可以選擇以下福利:
行業福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

二次開發教程:Revit開發創建部件和部件視圖

發布于:2019-08-26 16:21:21

網友投稿

更多

在Revit里可以把一部分構件組合起來創建為一個部件,


然后可以創建一些針對這個部件的視圖


通過API來創建主要用到兩個類


AssemblyInstance 


AssemblyViewUtils 




下面是一個小例子:




Command:


        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)

        {

            UIDocument uidoc = commandData.Application.ActiveUIDocument;

            Document doc = uidoc.Document;

            IList<Reference> refs = uidoc.Selection.PickObjects(ObjectType.Element);

            List<Element> elems = new List<Element>();

            List<ElementId> ids = new List<ElementId>();

            foreach (Reference r in refs)

            {

                Element e = doc.GetElement(r);

                elems.Add(e);

                ids.Add(e.Id);

            }

            ViewModel myViewModel = new ViewModel(elems);

            AssemblyViewWindow myWin = new AssemblyViewWindow(myViewModel);

            if(myWin.ShowDialog()??false)

            {

                TransactionGroup transGrop = new TransactionGroup(doc, "transGroup");

                transGrop.Start();

                Transaction trans = new Transaction(doc, "trans");

                trans.Start();

                AssemblyInstance assemblyInstance =  AssemblyInstance.Create(doc, ids, myViewModel.Category.Id);                

                trans.Commit();

                trans = new Transaction(doc, "rename");// 

                trans.Start();

                ElementId typeId = assemblyInstance.GetTypeId();

                Element type = doc.GetElement(typeId);

                type.Name = myViewModel.AssemblyInstanceName;

                View3D view3d = AssemblyViewUtils.Create3DOrthographic(doc, assemblyInstance.Id);

                trans.Commit();

                transGrop.Assimilate();                

            }

            return Result.Succeeded;

        }




Window:


<Window x:Class="AssemblyView.AssemblyViewWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="新建部件" SizeToContent="WidthAndHeight">

    <Window.Resources>

        <Style TargetType="Label">

            <Setter Property="Margin" Value="5"/>

            <Setter Property="HorizontalAlignment" Value="Right"/>

        </Style>

        <Style TargetType="TextBox">

            <Setter Property="Margin" Value="5"/>

            <Setter Property="Width" Value="80"/>

        </Style>

        <Style TargetType="ComboBox">

            <Setter Property="Margin" Value="5"/>

            <Setter Property="Width" Value="80"/>

        </Style>

        <Style TargetType="Button">

            <Setter Property="Margin" Value="5"/>

            <Setter Property="Width" Value="75"/>

            <Setter Property="Height" Value="23"/>

        </Style>

    </Window.Resources>

    <Grid>

        <Grid.ColumnDefinitions>

            <ColumnDefinition/>

            <ColumnDefinition/>

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition/>

            <RowDefinition/>

            <RowDefinition/>

        </Grid.RowDefinitions>

        <Label Content="類型名稱:" Grid.Column="0" Grid.Row="0"/>

        <TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Path=AssemblyInstanceName, UpdateSourceTrigger=PropertyChanged}"/>

        <Label Content="命名類別:" Grid.Column="0" Grid.Row="1"/>

        <ComboBox  Grid.Column="1" Grid.Row="1" ItemsSource="{Binding Path=Categories, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=Category, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name"/>

        <StackPanel Orientation="Horizontal" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right">

            <Button Content="確定" IsEnabled="{Binding Path=IsEnabled, UpdateSourceTrigger=PropertyChanged}" Command="{Binding Path=OK_Command}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=Window}}"/>

            <Button Content="取消" Command="{Binding Path=Cancel_Command}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor ,AncestorType=Window}}" />

        </StackPanel>

    </Grid>

</Window>




    public partial class AssemblyViewWindow : Window

    {

        public AssemblyViewWindow()

        {

            InitializeComponent();

        }

        public AssemblyViewWindow(ViewModel viewModel)

        {

            InitializeComponent();

            this.DataContext = viewModel;

        }

    }




ViewModel:


   public class ViewModel:INotifyPropertyChanged

    {

        private string assemblyInstanceName = string.Empty;

        public string AssemblyInstanceName

        {

            get 

            { 

                return assemblyInstanceName;

            }

            set 

            { 

                assemblyInstanceName = value;

                NotifyPropertyChanged("AssemblyInstanceName");

                CheckOkBtn();

            }

        }

        private List<Category> categories = new List<Category>();

        public List<Category> Categories

        {

            get

            {

                return categories;

            }

        }

        private Category category = null;

        public Category Category

        {

            get 

            { 

                return category;

            }

            set 

            { 

                category = value;

                NotifyPropertyChanged("Category");

                CheckOkBtn();

            }

        }

        private bool isEnabled = false;

        public bool IsEnabled

        {

            get { return isEnabled; }

            set

            {

                isEnabled = value;

            }

        }

        private OK_Command ok_Command = null;

        public OK_Command OK_Command 

        {

            get { return ok_Command; }

        }

        private Cancel_Command cancel_Command = null;

        public Cancel_Command Cancel_Command

        {

            get { return cancel_Command; }

        }

        public ViewModel(List<Element> elems)

        { 

            foreach(Element elm in elems)

            {

                if (categories.Where(m=>m.Name==elm.Category.Name).Count()==0)

                    categories.Add(elm.Category);

            }

            this.cancel_Command = new Cancel_Command();

            this.ok_Command = new OK_Command();

        }

        public event PropertyChangedEventHandler PropertyChanged;

        public void NotifyPropertyChanged(string name)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(name));

            }

        }

        private void CheckOkBtn()

        {

            if (assemblyInstanceName == string.Empty || category == null)

                IsEnabled = false;

            else

                IsEnabled = true;

            NotifyPropertyChanged("IsEnabled");

        }

        

    }




ICommand:


    public class OK_Command : ICommand

    {

        public bool CanExecute(object parameter)

        {

            return true;

        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)

        {

            AssemblyViewWindow myWin = parameter as AssemblyViewWindow;

            myWin.DialogResult = true;

            myWin.Close();

        }

    }

    public class Cancel_Command : ICommand

    {

        public bool CanExecute(object parameter)

        {

            return true;

        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)

        {

            AssemblyViewWindow myWin = parameter as AssemblyViewWindow;

            myWin.DialogResult = false;

            myWin.Close();

        }

    }


本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

未標題-1.jpg

上一篇:二次開發教程:Revit開發之AddInManager安裝包簡單制作

下一篇:二次開發教程:Revit開發之警告和錯誤處理

60acb4e0ef112.png
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      午夜精品久久久久久久白皮肤| 欧美大秀在线观看| 国语精品中文字幕| 久久国产精品色婷婷| 在线播放中文一区| 欧美日韩国产精品一卡| 一本色道久久综合狠狠躁篇的优点 | 亚洲精品一区二| 欧美色区777第一页| 欧美一区二区高清在线观看| 亚洲国产99精品国自产| 欧美日韩国产在线一区| 午夜天堂精品久久久久| 亚洲国产电影| 国产一区91精品张津瑜| 欧美日韩精品是欧美日韩精品| 欧美一区91| 一区二区在线观看av| 欧美日韩成人综合天天影院| 欧美亚洲免费在线| 一区二区三区免费看| 在线观看欧美视频| 国产精品久久久久9999| 欧美顶级少妇做爰| 久久激情视频免费观看| 亚洲视频一区在线| 亚洲精美视频| 韩日精品中文字幕| 国产精品青草综合久久久久99| 欧美国产精品日韩| 久久亚洲综合| 亚洲日韩中文字幕在线播放| 国产一区二区高清视频| 国产精品九九久久久久久久| 狂野欧美一区| 久久亚洲影院| 久久久人成影片一区二区三区观看 | 午夜日韩在线| 亚洲一区二区三区精品动漫| 亚洲精品日产精品乱码不卡| 亚洲韩国一区二区三区| 在线观看不卡av| 国产精品亚洲综合天堂夜夜| 欧美日韩国产色站一区二区三区| 免费成人美女女| 久久午夜精品一区二区| 久久婷婷人人澡人人喊人人爽| 一区二区三区视频在线播放| 亚洲精品之草原avav久久| 亚洲人成在线免费观看| 亚洲日产国产精品| 日韩视频一区二区三区| 国产三区二区一区久久| 国产欧美一区二区精品秋霞影院 | 黄色成人小视频| 国产自产在线视频一区| 狠狠综合久久| 亚洲国产一区二区三区a毛片| 精品999网站| 亚洲欧洲日本在线| 99精品热6080yy久久| 亚洲人成网站在线观看播放| 99精品视频免费全部在线| 99视频精品| 亚洲欧美日韩国产一区| 欧美亚洲在线视频| 久久综合久久久久88| 欧美精品激情| 国产精品香蕉在线观看| 国内精品国产成人| 亚洲福利视频三区| 亚洲日本电影| 99精品国产在热久久下载| 亚洲婷婷综合色高清在线| 亚洲精品在线看| 亚洲在线黄色| 久久中文在线| 国产精品啊v在线| 国产精品扒开腿做爽爽爽视频| 国产欧美一区二区精品婷婷| 在线看片成人| 亚洲一区二区不卡免费| 久久久精品一品道一区| 欧美色视频日本高清在线观看| 国产日本欧美一区二区三区| 亚洲电影在线播放| 欧美影视一区| 欧美日韩三级视频| 影音先锋日韩有码| 亚洲一区二区在线免费观看| 美女精品在线| 国产精品入口日韩视频大尺度| 亚洲二区在线视频| 日韩一本二本av| 久久久欧美一区二区| 国产精品成人播放| 国产综合色一区二区三区| 一区二区欧美激情| 免费欧美在线| 国内精品久久久久国产盗摄免费观看完整版| 亚洲人成欧美中文字幕| 欧美一区二区免费观在线| 欧美日韩国产探花| 91久久国产精品91久久性色| 久久久久国产精品人| 国产精品久久99| av成人免费在线观看| 欧美高清在线一区| 精品51国产黑色丝袜高跟鞋| 国产精品护士白丝一区av| 国产精品男gay被猛男狂揉视频| 亚洲系列中文字幕| 国产精品一区二区三区观看| 久久激五月天综合精品| 亚洲电影免费在线观看| 欧美激情一区二区三区蜜桃视频 | 久久av一区二区三区漫画| 国产综合激情| 免费高清在线一区| 99天天综合性| 国产精品一区毛片| 乱码第一页成人| 亚洲精品免费在线播放| 国产精品黄色在线观看| 久久久久国产成人精品亚洲午夜| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美成人中文字幕在线| 亚洲欧美电影院| 加勒比av一区二区| 欧美日韩精品一本二本三本| 亚洲一区影院| 亚洲国产va精品久久久不卡综合| 欧美精品成人一区二区在线观看| 亚洲一区二区视频在线观看| 国产综合欧美| 国产精品福利在线观看| 久久综合精品国产一区二区三区| 日韩亚洲不卡在线| 韩国一区电影| 国产精品美女午夜av| 麻豆精品在线播放| 性欧美videos另类喷潮| 一本色道久久综合亚洲精品不| 国产日韩亚洲欧美综合| 欧美日韩国产影片| 久久综合国产精品| 欧美一级欧美一级在线播放| 亚洲美女黄色片| 在线电影国产精品| 国产一区99| 国产精品视频| 国产精品成av人在线视午夜片| 看片网站欧美日韩| 久久国产免费| 午夜欧美大片免费观看 | 欧美激情第1页| 欧美一区激情| 亚洲女人小视频在线观看| 亚洲伦理在线观看| 亚洲人成7777| 亚洲黄色在线看| 亚洲高清不卡一区| 韩曰欧美视频免费观看| 国产午夜精品一区二区三区视频| 欧美日韩三级视频| 欧美人与禽猛交乱配视频| 欧美成人亚洲成人| 欧美久久电影| 欧美巨乳在线观看| 欧美日韩国产高清视频| 欧美剧在线免费观看网站| 欧美精品v日韩精品v国产精品| 欧美www视频在线观看| 免费不卡欧美自拍视频| 欧美成人精品三级在线观看| 久热国产精品视频| 欧美高清视频一区二区| 欧美激情精品久久久六区热门 | 国产精品一级久久久| 国产精品入口| 国产日韩欧美综合一区| 国模私拍一区二区三区| 亚洲国产高清在线观看视频| 亚洲日本中文| 在线亚洲美日韩| 亚洲欧美综合网| 久久国产精品毛片| 欧美sm极限捆绑bd| 欧美色123| 国产午夜亚洲精品理论片色戒| 国产日韩在线亚洲字幕中文| 国产一区二区日韩精品| 亚洲大胆av| 国产精品99久久久久久久久| 亚洲天堂成人| 久久精品免费电影| 欧美激情亚洲精品| 国产欧美日韩亚洲| 亚洲国产综合在线看不卡| 亚洲自拍三区|