绘制墙之前要预先设置“定位线”(我是调用的Revit命令去画墙),
首先是预设置“定位线”:
直接在百度上搜索“Revit 预设值定位线”,找到了两个有用的信息:
http://bbs.glsbim.com/forum.php?mod=viewthread&tid=57 这个帖子里叶雄进老师给出了思路,利用WindowsAPI的消息去设置。
https://adndevblog.typepad.com/aec/2012/07/location-line-of-a-new-wall-using-revit-api.html这上面写明了,revit没有提供设置定位线的接口。
于是决定按着叶老师说的方法去试试,大致思路:
1.通过WindowsAPI获取到Revit句柄,用到 FindWindow();
2.得到句柄后遍历所有控件,并找出设置“定位线”的ComboBox控件句柄,用到 EnumChildWindows();
3.通过Comb句柄设置其值为自己想要的,用到 SendMessage(); //设置下拉框值
后来一步步都实现了,但是发现只是仅仅修改了Combobox的值,而没触发事件
最后用WindowsAPI通过句柄设置ComboBox为焦点,用到 SetF(CombHandle);//设置焦点
然后再用模拟鼠标滚轮API,间接的去触发ComboBox修改事件, 用到 mouse_event();//模拟鼠标滚动
到此完成预设置“定位线”功能。记录一下能帮到各位最好,没帮到就当做笔记了,O(∩_∩)O