2025-05-22 03:42 PM
When using ArchiCAD's Python Palette to create records in FileMaker via the Data API (using fmrest), record creation consistently stops at exactly 187 records, regardless of data size or content.
ArchiCAD Python Palette → FileMaker: Always stops at exactly 187 records, then hangs indefinitely with loading icon, even with:
Hanging Behavior: After creating exactly 187 records, the Python script continues showing the loading/execution icon in ArchiCAD but never completes or throws an error. The script must be manually stopped.
Environment Data Source Record Count Result
| External Python | Dummy data | 1000+ | ✅ Success |
| ArchiCAD Palette | Model data (481 elements) | 187 | ❌ Stops at 187, then hangs |
| ArchiCAD Palette | Dummy data | 187 | ❌ Stops at 87, then hangs |
| ArchiCAD Palette | Model → Excel | 481+ | ✅ Success |
ArchiCAD's Python environment appears to have a network connection or HTTP request limit of approximately 187 operations per script execution.
# Run inside ArchiCAD Python Palette
import fmrest
def test_dummy_records():
fms = fmrest.Server(
url="https://your-server",
user="admin",
password="password",
database="testdb",
layout="testlayout",
verify_ssl=False
)
fms.login()
created = 0
# Try to create 500 dummy records
for i in range(500):
try:
record = {'ElementID': f'TEST_{i:03d}'}
fms.create_record(record)
created += 1
if created % 50 == 0:
print(f"Created {created} records")
except Exception as e:
print(f"Failed at record {created + 1}: {e}")
break
fms.logout()
print(f"Final count: {created}") # Always shows 187
test_dummy_records()# Run outside ArchiCAD in regular Python
import fmrest
def test_external():
fms = fmrest.Server(
url="https://your-server",
user="admin",
password="password",
database="testdb",
layout="testlayout",
verify_ssl=False
)
fms.login()
created = 0
# Create 500 records - works fine
for i in range(500):
record = {'ElementID': f'EXTERNAL_{i:03d}'}
fms.create_record(record)
created += 1
fms.logout()
print(f"External created: {created}") # Shows 500
test_external()# Run inside ArchiCAD Python Palette
from archicad import ACConnection
def test_archicad_extraction():
conn = ACConnection.connect()
acc = conn.commands
act = conn.types
acu = conn.utilities
elements = acc.GetElementsByType('Wall')
print(f"Found {len(elements)} elements") # Shows full count (e.g., 481)
# This works fine for any number of elements
propertyIds = acc.GetPropertyIds([
act.BuiltInPropertyUserId("General_ElementID")
])
props = acu.GetPropertyValuesDictionary(elements, propertyIds)
print(f"Processed {len(props)} properties") # Shows full count
test_archicad_extraction()Extract data within ArchiCAD → Save to file → Process externally:
This workaround successfully processes all records but requires two-step process instead of direct integration.
Do you know whether this 187 record limit is:
Thank you for any insights or solutions!