<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BIM背后的技术]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lushibi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lushibi]]></copyright><item><title><![CDATA[Qt的绘制是如何发生的]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/135842348</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/135842348</guid><author>lushibi</author><pubDate>Fri, 26 Jan 2024 08:04:02 +0800</pubDate><description><![CDATA[当用户鼠标在应用之外时，会触发QEvent::WindowDeactivate事件，对应的父类QWidget的响应事件方法，会先调用自己的update，再遍历所有儿子，并传播该事件给可见儿子而update函数会把自己加到QWidgetBackingStore的dirtyWidgets列表中去。]]></description><category></category></item><item><title><![CDATA[javascript的一个有点奇怪的问题]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/90543949</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/90543949</guid><author>lushibi</author><pubDate>Sat, 25 May 2019 10:21:45 +0800</pubDate><description><![CDATA[请问下面的代码输出的是什么？




console.log(0)
[88].forEach(xx =&gt; console.log(xx));



]]></description><category></category></item><item><title><![CDATA[如何在不卸载Revit插件的情况下禁用插件？]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/88796325</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/88796325</guid><author>lushibi</author><pubDate>Mon, 25 Mar 2019 15:57:38 +0800</pubDate><description><![CDATA[如何在不卸载Revit插件的情况下禁用某个插件？

这个问题对于Revit开发的朋友，不是问题，

但对于Revit的终端用户，可能就无从下手。解决此问题的答案就是禁用插件的.addin文件。



Revit的插件注册方式之一就是通过.addin文件，我们叫manifest file。

文件会存放在两个位置：

一个是%ALLUSERSPROFILE%\Autodesk\Revit\Addi...]]></description><category></category></item><item><title><![CDATA[Revit的journal文件在哪里]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/88681327</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/88681327</guid><author>lushibi</author><pubDate>Wed, 20 Mar 2019 10:37:33 +0800</pubDate><description><![CDATA[大家可能没有注意到，Revit每次运行都会产生journal，类似于我们程序的log文件，记录了用户对revit的一些操作序列。

journal一般放在这样的路径下：C:\Users\&lt;username&gt;\AppData\Local\Autodesk\Revit\Autodesk Revit 2016\Journals

我们可以通过将如下文字粘贴进Windows+R的"运行"窗口或...]]></description><category></category></item><item><title><![CDATA[Node.js中怎么获取北京时间？]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/54603118</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/54603118</guid><author>lushibi</author><pubDate>Wed, 18 Jan 2017 17:36:29 +0800</pubDate><description><![CDATA[基于Node.js开发开发的时候，调用new Date()出来的时间是这样的：

2017-01-18T09:30:38.405Z

 

而当前时间北京时间是17:30，为了不让自己总有穿越感，于是需要转换一下。

过程可以是这样的（在Node.js的命令行下）：

 


&amp;gt; a = new Date();
2017-01-18T09:30:38.405Z
&amp;gt; m = a.getT...]]></description><category></category></item><item><title><![CDATA[Revit SDK下载地址]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/52495339</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/52495339</guid><author>lushibi</author><pubDate>Sat, 10 Sep 2016 15:56:27 +0800</pubDate><description><![CDATA[20190325更新：

共享了如下sdk

REVIT_2014_SDK.exe
	REVIT2015SDK_SubscriptionRelease.msi
	REVIT_2016_SDK.msi
	Revit_2017.1_SDK_(Update_Oct_19__2016).msi
	REVIT_2017_SDK_(Update_June_23__2016).msi
	REVIT_2018_1...]]></description><category></category></item><item><title><![CDATA[RevitAPI:获取管道的水平对正和垂直对正属性或约束]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50995907</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50995907</guid><author>lushibi</author><pubDate>Mon, 28 Mar 2016 10:29:29 +0800</pubDate><description><![CDATA[选择管道，可以看到最上面有两个属性，分别是水平对正和垂直对正


我们都知道，使用RevitLookup工具找到对应的BuiltInParameter之后，调用Element.get_Parameter(BuiltInParameter)就可以获得对应的参数了。
只不过这里的参数返回值是Integer，具体哪个数字代表那种对正方式还却没有明确说明。我查了一下，貌似没有对应的枚举类型，所以通]]></description><category></category></item><item><title><![CDATA[RevitAPI: 如何获得链接CAD里面对象的图层信息？]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50925262</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50925262</guid><author>lushibi</author><pubDate>Fri, 18 Mar 2016 17:33:39 +0800</pubDate><description><![CDATA[当导入或者链接CAD文件之后，一般我们在Revit里面选中该CAD，点击"导入实例”的“查询”，选中某个图元，就会弹出图层信息





那么API如何实现此功能呢？

本人刚开始并没有找到如何做到，后来偶然机会发现Line/GeometryObject类有个属性叫GraphicsStyleId，试了一下，答案就出来了。

那就是，



使用Selection.PickObject或Sele...]]></description><category></category></item><item><title><![CDATA[RevitAPI: Document.ExportImage导出文件格式并不都是.png,即便设置了HLRandWFViewsFileType为ImageFileType.PNG]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50826603</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50826603</guid><author>lushibi</author><pubDate>Tue, 08 Mar 2016 13:53:40 +0800</pubDate><description><![CDATA[RevitAPI有导出图片的功能，那就是使用Document.ExportImage方法，一个实际的例子如下
FilteredElementCollector FEC_Views = new FilteredElementCollector(OpenDoc).OfClass(typeof(View));
FEC_Views.OfCategory(BuiltInCategory.OST_Views]]></description><category></category></item><item><title><![CDATA[RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50750928</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50750928</guid><author>lushibi</author><pubDate>Fri, 26 Feb 2016 17:02:05 +0800</pubDate><description><![CDATA[很多时候，我想通过API获取上一次操作有哪些对象被创建、修改或者删除了。或者想监听文档的改变事件，一旦改变发生，程序就做一些特定的事情，例如，把这些改变记录在数据库中，再和其他应用进行交流。
这个时候，就要用到ControlledApplication.DocumentChanged或者Application.DocumentChanged事件了。
这里，我先推荐大家学习一个SDK里面的例子，]]></description><category></category></item><item><title><![CDATA[RevitAPI:创建不连接任何设备的导线Wire.Create]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50750768</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50750768</guid><author>lushibi</author><pubDate>Fri, 26 Feb 2016 16:40:32 +0800</pubDate><description><![CDATA[Revit 2015暴露了一个方法用来创建导线，那就是：

public class Wire
{
    static Wire Create(Document document, ElementId wireTypeId, ElementId viewId, WiringType wiringType, 
        IList vertexPoints, Connector star]]></description><category></category></item><item><title><![CDATA[RevitAPI: 设置管件族的连接件的半径属性抛异常 - 如何获取关联族参数]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50696182</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50696182</guid><author>lushibi</author><pubDate>Fri, 19 Feb 2016 11:01:17 +0800</pubDate><description><![CDATA[管件族的连接件有一个属性叫“半径”，我们想使用api来修改它的值，直观的做法可能是这样的：

connectorElement.Radius = 0.041;但是，Radius属性是只读的，编译不过，或者编译过了，但是抛异常。

另外一种做法是使用Parameter：

var radiusPara = connectorElement.get_Parameter(BuiltInPar]]></description><category></category></item><item><title><![CDATA[RevitAPI: 获取图形显示选项 Graphic Display Options]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50686704</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50686704</guid><author>lushibi</author><pubDate>Thu, 18 Feb 2016 15:56:01 +0800</pubDate><description><![CDATA[有不少朋友问到如何使用api获取图形显示选项 （Graphic Display Options），我稍微调查了一下，发现api目前提供的功能还比较有限，能够获取到的信息如下图的1,2,3点


使用的方法分别是：
ViewDisplayModel displayModel = view.GetViewDisplayModel(); //1
ViewDisplaySketchyLines s]]></description><category></category></item><item><title><![CDATA[RevitAPI: 使用DMU（Dynamic Model Update)实现联动]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50629022</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50629022</guid><author>lushibi</author><pubDate>Wed, 03 Feb 2016 14:39:14 +0800</pubDate><description><![CDATA[我们知道Revit的一大特色功能就是关联修改，即，一处修改处处修改，比如，在三维视图修改了墙的位置，二维视图上墙的位置也跟着变化了，同时，墙上的门窗也会跟着移动。
但有时候我们有自己的特殊需求，也想做到自定义的联动关系，比如我希望两面墙的总长度是固定的，增加一面墙长度之后，另外一面墙会跟着缩减。又或者，链接文档的某个构件移动了，希望主文件的某个不相关的构件也移动。这个时候，Revit本身的关系已]]></description><category></category></item><item><title><![CDATA[RevitAPI: Revit 2016里的Python代码例子Sample code]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50519163</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50519163</guid><author>lushibi</author><pubDate>Thu, 14 Jan 2016 17:37:16 +0800</pubDate><description><![CDATA[Revit 2016的新功能之一，就是支持Python和Ruby的宏。




但是Revit 2016的SDK里面却没有示例代码，可能大家都不知道一个功能，就是示例代码都隐藏在创建出来的工程里面，如下图，注意里面的if False,它下面的函数都是示例代码，我们可以把if False去掉，然后把下面的函数向前缩进4格，然后编译，就可以在宏对话框里面看见了：]]></description><category></category></item><item><title><![CDATA[RevitAPI: 如何获取点云PointCloud数据？]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/50109445</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/50109445</guid><author>lushibi</author><pubDate>Mon, 30 Nov 2015 15:41:49 +0800</pubDate><description><![CDATA[通过Revit菜单的“插入>点云"操作，可以把点云数据插入到Revit中，那么如何才能获得导入的这些点云数据呢？
通过使用RevitLookup查看到，点云数据在RevitAPI中表现为PointCloudInstance，再看PointCloudInstance有个方法叫GetPoints()，这个方法就是我们想要的。


GetPoints()有三个参数

public Point]]></description><category></category></item><item><title><![CDATA[《Autodesk Revit二次开发基础教程》书籍终于上架了]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/48653343</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/48653343</guid><author>lushibi</author><pubDate>Tue, 22 Sep 2015 14:04:50 +0800</pubDate><description><![CDATA[由Autodesk中国研究院Revit开发团队的几位同事一起编撰的《Autodesk Revit二次开发基础教程》于今天在天猫同济大学出版社旗舰店正式上架，购买链接在这里：
https://detail.tmall.com/item.htm?_u=m1vm4lrf259d&id=521852354085

欢迎购买的朋友给我们提出指正意见。]]></description><category></category></item><item><title><![CDATA[RevitAPI: 如何使用API创建墙饰条]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/48476885</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/48476885</guid><author>lushibi</author><pubDate>Tue, 15 Sep 2015 22:30:24 +0800</pubDate><description><![CDATA[墙饰条对应的类是WallSweep，很明显在Document.Create下面没有NewWallSweep这样的函数，那么如何创建呢？


答案就是使用WallSweep的静态函数Create:
public static WallSweep Create(Wall wall, ElementId wallSweepType, WallSweepInfo wallSweepInfo);]]></description><category></category></item><item><title><![CDATA[发布有礼！2015 Autodesk程序商店有奖发布活动拉开序幕]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/48441185</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/48441185</guid><author>lushibi</author><pubDate>Mon, 14 Sep 2015 16:52:54 +0800</pubDate><description><![CDATA[您是不是有希望您的 Autodesk 产品应用程序有更多的用户？您是不是正在寻求更广阔的市场机会？您是不是在激荡人心的云时代大潮中有许多奇思妙想没有小试身手？

来吧，来参加Autodesk应用程序发布活动吧！– 参与此活动您不但有机会将应用程序直接呈现在全球Autodesk 用户面前，以零成本开辟全球业务，还可以获得应用程序发布的奖励以及在Autodesk 相关会议或媒体上宣传或展示的机会。]]></description><category></category></item><item><title><![CDATA[RevitAPI: 注意Revit 2016事件注册和注销行为的改变]]></title><link>https://blog.youkuaiyun.com/lushibi/article/details/48312281</link><guid>https://blog.youkuaiyun.com/lushibi/article/details/48312281</guid><author>lushibi</author><pubDate>Wed, 09 Sep 2015 10:36:07 +0800</pubDate><description><![CDATA[在以前的Revit版本中， 我们可以在一个非模态对话框中注册或者注销一个事件，但是Revit 2016做了一些改变，不再允许这样做，凡是在非Revit主线程里面的注册或者注销事件，系统会抛出异常，如果您没有捕获这个异常，将会导致系统崩溃。
官方的原话是这样的：


API events - behavioral change


Although the Revit API has]]></description><category></category></item></channel></rss>