Tema: Q: IronPython + pyrevit scopes
Autorius: Grzegorz Brzęczyszczykiewicz
Data: 2022-06-30 20:18:00
TL;DR: kaip IronPython + pyrevit paimti globalų kintamąjį?
IronPython Traceback:
Traceback (most recent call last):
File "C:\Users\.\AppData\Roaming\pyRevit\Extensions\PyRevitPlus.extension\pyRevitPlus.tab\Tags.panel\Tags.stack\Align Vertically.pushbutton\script.py", line 67, in <module>
File "C:\Users\.\AppData\Roaming\pyRevit\Extensions\PyRevitPlus.extension\pyRevitPlus.tab\Tags.panel\Tags.stack\lib\tags_wrapper.py", line 232, in tag_align_XY
NameError: global name 'app' is not defined
----- Kantriems -----
IronPython 2.7.7 (2.7.7.0) on .NET 4.0.30319.42000 (64-bit)
Revit 2021+ pyrevit latest,
Skripto gabalas, kuri veikia ir nueina ten, kur reikia:
>>> import pyrevit
>>> import rpw
>>> app = pyrevit._HostApplication()
>>> from tags_wrapper import *
>>> ...
>>>
>>> if app.is_newer_than("2020"):
>>> cPos = cTag.Origin # API 2021.1
>>> else:
>>> cPos = cTag.Location.Point
'tags_wrapper.py' funkcija, kuri neveikia kaip norėčiau, :
>>> def tag_align_XY(tagType, tagSrc):
>>> """Main XY allignment routine for elements of given category."""
>>>
>>> global app
>>>
>>> # all actions under one transaction
>>> if tagSrc.unwrap().GetType() == DB.IndependentTag:
>>> ... # čia viskas veikia
>>> else:
>>> if app.is_newer_than("2020"):
>>> starting_pt = tagSrc.Origin # API 2021.1
>>> else:
>>> starting_pt = tagSrc.Location.Point
tag_align_XY() papildžius
>>> import pyrevit
>>> app = pyrevit._HostApplication()
veikia, bet gi ne už tai kovojom ...
--
Grzegorz
Chrząszczyrzewoszyce, powiat Łękołody