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

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

    蜜臀久久久99精品久久久久久| 黄色av日韩| 伊人成人开心激情综合网| 午夜精品三级视频福利| 国产亚洲综合在线| 欧美sm视频| 亚洲欧美日产图| 国产精品亚洲视频| 老鸭窝亚洲一区二区三区| 黑人巨大精品欧美黑白配亚洲| 老**午夜毛片一区二区三区| 亚洲精品1区2区| 国产精品日韩高清| 欧美日本一区二区高清播放视频| 亚洲视频一二三| 亚洲风情亚aⅴ在线发布| 欧美第一黄网免费网站| 亚洲婷婷综合久久一本伊一区| 国产伦精品一区二区三区高清版| 媚黑女一区二区| 亚洲免费视频成人| 亚洲精选视频在线| 国内偷自视频区视频综合| 国产乱码精品一区二区三区av| 欧美电影免费| 欧美国产日本韩| 你懂的视频欧美| 美女国内精品自产拍在线播放| 久久精品综合一区| 性欧美video另类hd性玩具| 一区二区三区四区蜜桃| 一区二区三区欧美在线观看| 亚洲精品中文字幕有码专区| 日韩视频一区二区三区在线播放免费观看 | 亚洲精品自在久久| 99国内精品久久| 一区二区三区不卡视频在线观看| 一区二区三区欧美在线| 亚洲在线免费观看| 久久丁香综合五月国产三级网站| 性高湖久久久久久久久| 小黄鸭视频精品导航| 久久精品国产成人| 嫩草成人www欧美| 国产三级欧美三级日产三级99| 狠狠色狠狠色综合日日小说| 99国产麻豆精品| 久久久五月天| 国产欧美精品xxxx另类| 亚洲黄色在线视频| 久久久夜精品| 国产欧美日韩免费看aⅴ视频| 国产精品永久免费观看| 亚洲美女尤物影院| 美日韩精品视频| 国产日韩av一区二区| 最近中文字幕日韩精品 | 国产日韩欧美在线播放| 9色国产精品| 欧美久久视频| 亚洲精品欧美日韩| 欧美精品久久久久久久久久| 激情六月婷婷久久| 午夜精品久久久久久久久久久久 | 新67194成人永久网站| 欧美日韩日日夜夜| 亚洲天堂成人在线观看| 国产精品午夜在线| 欧美一区二区三区视频在线 | 亚洲欧美在线x视频| 日韩视频永久免费观看| 亚洲国产成人在线视频| 国产精品外国| 国产精品久久久久影院亚瑟 | 午夜老司机精品| 一本久道久久综合狠狠爱| 亚洲国产精品女人久久久| 国产午夜精品全部视频播放 | 久久久久亚洲综合| 久久琪琪电影院| 麻豆亚洲精品| 欧美激情精品久久久久久大尺度 | 亚洲精选在线| 亚洲国产精品久久精品怡红院| 欧美性开放视频| 欧美另类在线观看| 美国十次成人| 欧美高清影院| 久久综合狠狠综合久久综青草| 亚洲综合精品四区| 制服丝袜亚洲播放| 亚洲精品三级| 一本到12不卡视频在线dvd| 亚洲国产精品美女| 亚洲专区一区二区三区| 欧美在线黄色| 蜜桃伊人久久| 欧美精品七区| 国产精品网站一区| 国产一区久久| 亚洲精品国精品久久99热| 亚洲一区二区三区视频播放| 麻豆91精品| 久久综合给合久久狠狠色| 亚洲女女女同性video| 久久亚洲国产精品一区二区| 欧美日韩在线直播| 国产三级欧美三级日产三级99| 在线欧美视频| 午夜精品久久久久99热蜜桃导演| 午夜精品久久久久久久蜜桃app | 久久久久久一区| 欧美日韩亚洲综合在线| 韩国一区二区三区美女美女秀| 日韩视频中文| 蜜桃久久av| 狠狠色狠狠色综合日日tαg| 一本综合久久| 欧美日韩国产一区二区| 在线日韩中文字幕| 男男成人高潮片免费网站| 国产欧美精品日韩| 久久精品女人的天堂av| 欧美日韩精品一本二本三本| 在线日韩成人| 久久久青草青青国产亚洲免观| 欧美日韩 国产精品| 亚洲国产婷婷综合在线精品| 久久精品欧洲| 国产在线国偷精品产拍免费yy| 久久成人免费日本黄色| 亚洲电影专区| 国产精品户外野外| 免费在线播放第一区高清av| 亚洲一区二区三区激情| 亚洲日本成人在线观看| 国内成+人亚洲+欧美+综合在线| 欧美偷拍一区二区| 久久一区二区三区国产精品| 欧美一级久久久| 亚洲影视九九影院在线观看| 国产精品视频免费观看| 男女视频一区二区| 夜夜夜久久久| 国产精品视频免费观看www| 久久久久久9999| 亚洲免费观看高清在线观看| 欧美日韩一区二区三区四区五区 | 一区二区久久久久| 欧美日韩在线一区二区| 另类欧美日韩国产在线| 亚洲综合首页| 亚洲国产婷婷香蕉久久久久久99 | 亚洲激情不卡| 国产在线不卡| 在线看片欧美| 欧美日韩免费在线视频| 国产精品qvod| 欧美一区二区三区男人的天堂| 欧美亚洲在线视频| 蜜桃久久精品一区二区| 中文日韩在线视频| 国产女主播视频一区二区| 欧美天堂亚洲电影院在线播放 | 在线观看精品一区| 亚洲美女性视频| 欧美一区二区性| 欧美日韩专区| 1000部精品久久久久久久久 | 国产免费观看久久黄| 在线观看亚洲视频| 午夜免费日韩视频| 欧美精品v日韩精品v国产精品| 欧美色欧美亚洲另类二区| 中文欧美日韩| 亚洲欧洲精品天堂一级| 欧美日韩在线一区二区| 亚洲午夜在线观看| 国产精品一区久久久久| 麻豆精品一区二区av白丝在线| 亚洲国产精品专区久久| 欧美日韩免费高清| 美女爽到呻吟久久久久| 性欧美大战久久久久久久免费观看| 亚洲国产成人91精品| 国产视频一区在线观看| 欧美精品日韩| 免费在线成人av| 久久资源av| 蜜臀99久久精品久久久久久软件 | 国产伦精品一区二区三区高清| 久久丁香综合五月国产三级网站| 日韩视频免费看| 99re在线精品| 国产精品99久久久久久久久久久久| 国产在线精品一区二区中文| 国产乱子伦一区二区三区国色天香| 欧美日本三级| 欧美激情中文不卡| 欧美精品国产精品|