0

目前,我制作了一个工具来根据它们在工作表上的位置重命名工作表上的视图编号(“详细编号”)。这是破坏的地方是交易。我试图在 Revit Python Shell 中按顺序执行两个事务。我最初也是在 dynamo 中这样做的,并且有类似的 fail ,所以我知道它与事务有关。

事务 #1:为每个明细编号添加后缀(“-x”)以确保新编号不会冲突(1 为 1-x,4 为 4-x,等等)

事务 #2:使用基于视口位置计算出的新编号更改详细信息编号(1-x 将是 3,4-x 将是 2,等等)

更好的视觉解释在这里:https : //www.docdroid.net/EP1K9Di/161115-viewport-diagram-.pdf.html Py 文件在这里: http: //pastebin.com/7PyWA0gV

附件是python文件,但基本上我想做的是:

            # <---- Make unique numbers    
            t = Transaction(doc, 'Rename Detail Numbers')
            t.Start()
            for i, viewport in enumerate(viewports):
                            setParam(viewport, "Detail Number",getParam(viewport,"Detail Number")+"x")
            t.Commit()

            # <---- Do the thang        
            t2 = Transaction(doc, 'Rename Detail Numbers')
            t2.Start()
            for i, viewport in enumerate(viewports):
                            setParam(viewport, "Detail Number",detailViewNumberData[i])
            t2.Commit()

附上py文件

4

2 回答 2

3

正如我在 Revit API 讨论论坛中对您的评论的回答中解释的那样,您描述的行为很可能是由于需要在事务之间重新生成而引起的。第一次修改做了一些事情,在修改完全生效之前需要重新生成模型,并反映在您在第二个事务中查询的参数值中。您正在访问过时的数据。Building Coder 提供了所有细节和大量关于需要重新生成的示例。

整个线程的摘要,包括解决的两个问题:

http://thebuildingcoder.typepad.com/blog/2016/12/need-for-regen-and-parameter-display-name-confusion.html

于 2016-11-22T07:17:03.500 回答
0

所以这个问题实际上与事务或文档再生无关。我发现(在一些帮助下:)),问题在于我如何设置/获取参数。“详细编号”与许多参数一样,具有重复版本,在视口元素中共享相同的描述性参数名称。

显然,这可能是遗留问题的原因,尽管我不确定。因此,当我尝试获取/设置详细信息编号时,它偶尔会以某种方式获取不正确的只读参数,称为“ VIEWER_DETAIL_NUMBER ”作为其内置枚举。正确的称为“ VIEWPORT _DETAIL_NUMBER”。发生这种情况是因为我试图通过传递描述性参数名称“详细编号”来获取参数。修改我如何通过内置枚举获取/设置参数解决了这个问题。请参阅下面的图片。

视觉解释请看pdf:https ://www.docdroid.net/WbAHBGj/161206-detail-number.pdf.html

于 2016-12-02T18:48:59.073 回答