from pyrx import Ap, Ax, Db, Ed, Ge, Br
def getAllFieldsIds(db: Db.Database):
ids: list[Db.ObjectId] = []
nod = Db.Dictionary(db.namedObjectsDictionaryId())
fieldListId = nod.getAt("ACAD_FIELDLIST")
fieldList = Db.Core.entGet(fieldListId)
for fieldItem in fieldList:
if fieldItem[0] == 330 and fieldItem[1].isDerivedFrom(Db.Field.desc()):
ids.append(fieldItem[1])
return set(ids)
@Ap.Command()
def doit() -> None:
db = Db.curDb()
field_ids = getAllFieldsIds(db)
for id in field_ids:
field = Db.Field(id, Db.OpenMode.kForRead)
fmt = field.getFormat()
if 'pr3' in fmt:
field.upgradeOpen()
new_fmt = fmt.replace('pr3', 'pr4')
field.setFormat(new_fmt)
field.evaluate(Db.FieldEvalContext.kDemand, db)
print(f"Updated field format from {fmt} to {new_fmt}")