不卡视频在线观看_三级网站视频在线观看_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精品网站_国产综合一区二区

      9000px;">

          一卡二卡三卡日韩欧美| 亚洲精品视频在线观看网站| 国产很黄免费观看久久| 国产精品资源在线看| 日韩经典一区二区| 一区二区高清视频在线观看| 亚洲午夜免费福利视频| 日韩精品自拍偷拍| 欧美一区二区网站| 国产精品小仙女| 日本三级亚洲精品| 亚洲欧洲精品天堂一级| 久久青草国产手机看片福利盒子| 在线观看一区二区视频| 高清beeg欧美| 久久免费视频一区| 91在线看国产| 日韩中文字幕一区二区三区| 日韩一级片在线观看| 成人精品gif动图一区| 一区二区三区日本| 国产日韩欧美综合一区| 91一区二区在线| 亚洲欧美一区二区三区国产精品| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲1区2区3区视频| 国产精品福利一区二区三区| 国产无一区二区| 欧美一区欧美二区| 欧美日韩在线亚洲一区蜜芽| 成人av网址在线| 粉嫩蜜臀av国产精品网站| 免费av成人在线| 免费三级欧美电影| 五月婷婷另类国产| 亚洲综合在线第一页| 国产精品美女久久久久久| 7777精品伊人久久久大香线蕉 | 一本一道波多野结衣一区二区| 青青草国产精品97视觉盛宴| 狠狠久久亚洲欧美| 91精品国产91久久久久久最新毛片 | 91一区二区在线| 亚洲人成网站在线| 欧洲生活片亚洲生活在线观看| 日韩精品电影一区亚洲| 久久久久久亚洲综合| 成人av影院在线| 日韩福利电影在线| 精品国产乱码久久久久久蜜臀| 懂色av一区二区三区免费观看| 亚洲精品久久7777| 中文字幕不卡在线播放| 91亚洲国产成人精品一区二区三| 26uuu国产一区二区三区| 久久久久久久久久久久久久久99| 国产精品久久久久三级| 91蜜桃免费观看视频| 精品一区二区三区影院在线午夜| 国内外成人在线视频| 91麻豆精品国产91久久久资源速度 | 日韩视频免费观看高清在线视频| 久久精品在这里| 日本欧美肥老太交大片| 欧美色男人天堂| 亚洲一二三级电影| 91色九色蝌蚪| 99re成人精品视频| 成人一级片网址| 国产成人av一区| 国产乱人伦精品一区二区在线观看 | 亚洲午夜国产一区99re久久| 欧美电影影音先锋| 一区二区欧美精品| 日本韩国视频一区二区| 亚洲一区二区中文在线| 99久久久精品免费观看国产蜜| 国产偷国产偷精品高清尤物 | 日韩精品视频网| 中文字幕欧美激情一区| 成人欧美一区二区三区小说| 国产午夜精品久久久久久免费视| 久久视频一区二区| 国产婷婷一区二区| 一区二区免费在线| 天堂资源在线中文精品| 日本欧美一区二区在线观看| 日韩毛片视频在线看| 亚洲色图制服丝袜| 亚洲色图视频网站| 热久久免费视频| 国产精品99久久久久久宅男| 97se狠狠狠综合亚洲狠狠| 欧美一a一片一级一片| 欧美伦理影视网| 亚洲视频一二区| 精品综合久久久久久8888| 91丝袜高跟美女视频| 欧美乱熟臀69xxxxxx| 欧美国产日本视频| 日韩精品欧美精品| 成人精品视频.| 久久伊人中文字幕| 青娱乐精品视频在线| 欧美视频日韩视频在线观看| 亚洲国产成人午夜在线一区 | 国产精品嫩草久久久久| 卡一卡二国产精品| 欧美撒尿777hd撒尿| 亚洲欧洲综合另类| av不卡在线观看| 久久久久久久久99精品| 亚洲免费三区一区二区| 99精品1区2区| 亚洲一二三四久久| 91福利在线观看| 亚洲午夜精品网| 欧美日韩亚洲综合一区二区三区| 亚洲九九爱视频| 一本一道综合狠狠老| 亚洲一区二区偷拍精品| 欧美视频中文字幕| 首页国产丝袜综合| 久久久亚洲午夜电影| 成人午夜激情在线| 奇米精品一区二区三区四区| 欧美三级中文字幕在线观看| 午夜不卡av在线| 2021国产精品久久精品| 国产一区二区精品久久| 综合婷婷亚洲小说| 欧美色中文字幕| 国产一区二区三区在线观看免费视频| 欧美午夜不卡在线观看免费| 国产日韩精品一区| 日韩av一级电影| 成人精品一区二区三区四区 | 欧美美女一区二区在线观看| 欧美日韩国产高清一区二区三区| 精品国产第一区二区三区观看体验| 亚洲激情图片小说视频| 免费看欧美美女黄的网站| 欧美揉bbbbb揉bbbbb| 夜色激情一区二区| 在线中文字幕不卡| 亚洲日本va午夜在线影院| 日韩电影在线免费观看| 欧美视频在线观看一区| 亚洲欧美日本韩国| 欧美日韩精品一区二区| 亚洲人123区| 欧美一区二区在线免费播放| 亚洲v精品v日韩v欧美v专区| 日韩美女精品在线| 亚洲三级免费电影| 亚洲视频1区2区| 亚洲免费色视频| 亚洲视频一区二区在线| 亚洲综合免费观看高清完整版在线 | 在线不卡一区二区| 日韩成人一级片| 国产精品久久久久四虎| 91捆绑美女网站| 日韩精品成人一区二区在线| 精品日产卡一卡二卡麻豆| 精品一区二区三区在线视频| 欧美韩国日本综合| 在线国产亚洲欧美| 老司机精品视频线观看86| 国产欧美日韩亚州综合| 91久久精品一区二区三区| 毛片av中文字幕一区二区| 中文字幕第一页久久| 日韩一二三区视频| 欧美色图免费看| 97久久超碰国产精品| 理论电影国产精品| 亚洲一区二区三区影院| 亚洲女子a中天字幕| 中文字幕精品一区二区三区精品| 日韩一区二区三区视频| 欧美日韩高清在线播放| 欧美日韩国产一二三| 色八戒一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产成人精品免费| 日韩在线播放一区二区| 日韩理论片一区二区| 国产精品午夜在线观看| 91精品国产品国语在线不卡| 欧美日韩一级片在线观看| 日本韩国一区二区三区| 欧美日韩另类国产亚洲欧美一级| 91福利在线播放| 国产精品成人午夜| 亚洲精品国产一区二区三区四区在线| 国产精品女同互慰在线看| 亚洲人成网站在线| 精品一区二区三区久久| 国产福利一区二区三区视频 |