2016-11-21 4 views
0

В настоящее время я создал инструмент для переименования номеров просмотров («Детальный номер») на листе в зависимости от их местоположения на листе. Там, где это нарушение, это транзакции. Я пытаюсь сделать две транзакции последовательно в Revit Python Shell. Я также сделал это первоначально в динамо, и у него был аналогичный сбой, поэтому я знаю, что это связано с транзакциями.2 Последовательные транзакции, установка Детального номера (Revit API/Python)

Сделка # 1: Добавить суффикс («-x») для каждого номера детали для обеспечения новых номеров не будет конфликта (1 будет 1-х, 4 будет 4-х и т.д.)

сделка # 2: номера Изменение детали с вычисленной новым номером на основе видового экрана месте (1-х будет 3, 4-х будет 2, и т.д.)

Лучше визуальное объяснение здесь: https://www.docdroid.net/EP1K9Di/161115-viewport-diagram-.pdf.html Py файла здесь: http://pastebin.com/7PyWA0gV

Приложенный файл питона, но по сути то, что им пытаются сделать, это:

  # <---- 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() 

прилагается пй файл

+0

Что не удается точно? Правильно ли работает первый цикл транзакций? – 0w3n

ответ

0

Так что этот вопрос на самом деле не имеет ничего общего с операциями или регенерации док. Я обнаружил (с некоторой помощью :)), что проблема заключалась в том, как я устанавливал/получал параметр. «Детальный номер», как и множество параметров, имеет повторяющиеся версии, которые имеют один и тот же дескриптивный параметр Name в элементе viewport.

По-видимому, причиной этого могут быть устаревшие проблемы, хотя я не уверен. Таким образом, когда я пытался получить/установить номер детали, это как-то хватало неверный параметр только для чтения, который называется «VIEWER _DETAIL_NUMBER» в качестве встроенного перечисления. Правильный номер называется «VIEWPORT _DETAIL_NUMBER». Это происходило, потому что я пытался получить параметр, просто передав описательное имя параметра «Детальный номер». Ревизуя, как я получаю/устанавливаю параметры через встроенный enum, разрешил эту проблему. См. Изображения ниже.

Пожалуйста, смотрите PDF для визуального объяснения: https://www.docdroid.net/WbAHBGj/161206-detail-number.pdf.html

+0

Благодарим вас за обмен окончательным решением. я очистил и опубликовал эту тему в The Building Coder: http://thebuildingcoder.typepad.com/blog/2016/12/need-for-regen-and-parameter-display-name-confusion.html –

2

Как я объяснил в своем ответе на your comment in the Revit API discussion forum поведение вы описываете вполне может быть вызвано необходимо восстановить между транзакциями. Первая модификация что-то делает, и модель должна быть восстановлена ​​до того, как изменения вступят в полную силу и отразятся в значениях параметров, которые вы запрашиваете во второй транзакции. Вы получаете доступ к устаревшим данным. Building Coder предоставляет все подробные подробные сведения и многочисленные примеры на need to regenerate.

Резюме всей этой теме, включая обе проблемы решить:

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

 Смежные вопросы

  • Нет связанных вопросов^_^