ArchiCAD Python Palette: 187 Record Limit with FileMaker API
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2025-05-22 03:42 PM
Problem Summary
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.
Environment
- ArchiCAD Version: 27
- Python Library: fmrest (FileMaker Data API)
- FileMaker Server: 21.1.1.12
- OS: macOS 13.7.2 (22H313)
What Works ✅
- ArchiCAD Python API → Console/Excel: Can extract and write thousands of elements without issues
- External Python → FileMaker: Can create unlimited records in FileMaker (tested with 1000+ records)
- ArchiCAD Python API data extraction: Successfully processes 481+ elements from model
What Fails ❌
ArchiCAD Python Palette → FileMaker: Always stops at exactly 187 records, then hangs indefinitely with loading icon, even with:
- Dummy data (no model interaction)
- Individual record creation (fmrest.create_record())
- Different batch sizes
- Session recycling
- Memory cleanup (gc.collect())
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.
Test Results
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 |
Hypothesis
ArchiCAD's Python environment appears to have a network connection or HTTP request limit of approximately 187 operations per script execution.
Code Examples
Test 1: Dummy Data (Fails at 187)
# 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()
Test 2: External Python (Works for 500+)
# 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()
Test 3: ArchiCAD Data Extraction (Works)
# 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()
Questions
- Is there a documented network request limit in ArchiCAD's Python environment?
- Are there configuration options to increase this limit?
- Is this a security feature or architectural limitation?
- Are there recommended workarounds for bulk data operations with external APIs?
- Is the issue something else entirely or am I missing anything crucial?
Workaround (Currently Using)
Extract data within ArchiCAD → Save to file → Process externally:
- Use ArchiCAD Python Palette to extract model data
- Save data to Excel file
- Run separate external Python script to process FileMaker records
This workaround successfully processes all records but requires two-step process instead of direct integration.
Request
Do you know whether this 187 record limit is:
- Intentional (and if so, how to work with it)
- A bug (and if so, when it might be fixed)
- Configurable (and if so, where the setting is located)
Thank you for any insights or solutions!
- Labels:
-
Possible Bug