色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

完善主體資料,免費贈送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
色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

    9000px;">

      在线观看日韩电影| 亚洲黄色av一区| 国产亚洲精品久| 亚洲1区2区3区视频| 成人性生交大片| 久久久777精品电影网影网 | 日韩高清不卡一区二区| 91美女片黄在线观看91美女| 中文字幕中文字幕在线一区| 日韩激情av在线| 欧美色国产精品| 亚洲欧洲三级电影| 欧美亚洲一区三区| 国产成人在线视频网站| 亚洲国产精品久久人人爱蜜臀| 宅男噜噜噜66一区二区66| 国产综合久久久久久鬼色| 亚洲精品少妇30p| 精品国产一区二区三区忘忧草 | 色狠狠一区二区三区香蕉| 亚洲第一电影网| 国产精品网站在线播放| 欧美高清www午色夜在线视频| 国产伦精一区二区三区| 亚洲五月六月丁香激情| 91精品国产综合久久精品麻豆 | 欧美日韩黄色一区二区| 国产成人精品免费| 免费看欧美美女黄的网站| 亚洲免费观看高清在线观看| 久久女同性恋中文字幕| 欧美日韩成人综合| 色88888久久久久久影院按摩 | 欧美日韩国产一级| 99国产精品99久久久久久| 国产一区日韩二区欧美三区| 午夜精品在线视频一区| 亚洲美女在线国产| 欧美国产精品专区| 国产亚洲欧洲一区高清在线观看| 在线观看91精品国产麻豆| 欧美在线视频全部完| 99国产一区二区三精品乱码| 国产成人aaa| 国产美女视频91| 国产乱色国产精品免费视频| 国内外成人在线| 国产伦精一区二区三区| 久久99九九99精品| 美女一区二区视频| 蜜臀久久久久久久| 免费成人性网站| 理论片日本一区| 男女视频一区二区| 精品一区二区成人精品| 久久精品99国产精品日本| 精品一区二区三区久久| 精东粉嫩av免费一区二区三区| 麻豆精品一二三| 国产一区欧美日韩| av在线一区二区| 色婷婷久久99综合精品jk白丝| 色综合婷婷久久| 欧美美女bb生活片| 日韩免费福利电影在线观看| 欧美xxxxxxxx| 国产日本欧洲亚洲| 亚洲靠逼com| 日本午夜精品一区二区三区电影| 麻豆精品视频在线观看免费| 六月丁香综合在线视频| 高清在线观看日韩| 欧美日韩亚洲综合在线| 精品国产乱码久久久久久夜甘婷婷 | 国产在线一区观看| 福利视频网站一区二区三区| 成人网在线播放| 在线亚洲一区二区| 7777精品伊人久久久大香线蕉的 | 最新热久久免费视频| 亚洲一区二区视频| 激情五月婷婷综合| 99精品久久免费看蜜臀剧情介绍| 色综合久久综合网97色综合| 欧美欧美午夜aⅴ在线观看| 久久久夜色精品亚洲| 亚洲一二三区在线观看| 国产99一区视频免费| 欧美福利视频一区| 国产精品私人影院| 麻豆成人综合网| 91浏览器在线视频| 久久嫩草精品久久久久| 亚洲午夜在线视频| 成人性生交大片免费看视频在线 | 欧美高清在线视频| 日韩精品免费视频人成| 一本一道波多野结衣一区二区| 精品国产91亚洲一区二区三区婷婷| √…a在线天堂一区| 激情综合亚洲精品| 911精品国产一区二区在线| 中文字幕一区二区三区在线播放 | 亚洲已满18点击进入久久| 国产电影一区在线| 欧美成人精品二区三区99精品| 一区二区三区在线视频观看 | 99久久精品国产麻豆演员表| 久久久久久久电影| 另类人妖一区二区av| 欧美日韩国产另类一区| 亚洲三级在线观看| eeuss影院一区二区三区| 国产偷国产偷亚洲高清人白洁| 美女视频黄久久| 欧美福利视频一区| 视频在线观看国产精品| 欧美三区在线观看| 香港成人在线视频| 欧美一卡2卡三卡4卡5免费| 天堂久久久久va久久久久| 欧美日韩亚洲丝袜制服| 视频一区在线播放| 欧美一区二区大片| 毛片av中文字幕一区二区| 欧美成人一区二区三区在线观看| 蜜臀久久久久久久| 久久无码av三级| 国产福利91精品| 国产精品久久国产精麻豆99网站| 粉嫩aⅴ一区二区三区四区| 国产精品欧美极品| 在线一区二区三区四区五区 | 亚洲午夜视频在线| 91精品国产黑色紧身裤美女| 免费观看一级欧美片| www国产成人免费观看视频 深夜成人网| 免费看精品久久片| 欧美激情综合网| 成人av电影免费在线播放| 专区另类欧美日韩| 欧美放荡的少妇| 国产黄色成人av| 一区二区三区视频在线看| 精品视频色一区| 韩国在线一区二区| 亚洲视频中文字幕| 91精品国产综合久久久久久久久久| 久久成人免费日本黄色| 国产精品视频yy9299一区| 欧美性受极品xxxx喷水| 蜜桃av一区二区在线观看| 国产精品免费人成网站| 欧美三片在线视频观看| 久久不见久久见免费视频7 | 中文字幕一区二区不卡| 欧美日韩1区2区| 成人在线综合网| 日日夜夜精品免费视频| 欧美韩日一区二区三区四区| 欧美色窝79yyyycom| 国产成人一级电影| 国产成人aaaa| 国产欧美日韩视频一区二区| 亚洲中国最大av网站| 国产精品综合二区| 欧美成人精品福利| 色av成人天堂桃色av| wwwwww.欧美系列| 日韩精品一区二区三区中文精品| 日韩在线一区二区| 国产精品久久久久久久久动漫| 欧美男人的天堂一二区| 99久久er热在这里只有精品66| 另类小说一区二区三区| 亚洲二区视频在线| 亚洲激情第一区| 国产精品萝li| 国产日韩欧美精品在线| 欧美一级高清片| 欧美群妇大交群的观看方式| 91麻豆福利精品推荐| 成人福利视频网站| 成人免费黄色大片| 国产一区二区三区黄视频| 男人的j进女人的j一区| 午夜精品成人在线| 五月天激情综合网| 偷拍日韩校园综合在线| 亚洲国产成人av好男人在线观看| 亚洲三级在线看| 亚洲天堂2014| 亚洲人精品午夜| 中文字幕一区二区三区蜜月| 中文字幕亚洲电影| 亚洲视频狠狠干| 亚洲精品视频免费看| 一区二区三区美女| 视频在线观看国产精品| 免费不卡在线观看|