Service alert: BIMcloud SaaS disruption in the US Read more

Archicad Python API
About automating tasks in Archicad using the Python API.

ArchiCAD Python Palette: 187 Record Limit with FileMaker API

dimitris
Newcomer

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

  1. ArchiCAD Python API → Console/Excel: Can extract and write thousands of elements without issues
  2. External Python → FileMaker: Can create unlimited records in FileMaker (tested with 1000+ records)
  3. 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 PythonDummy data1000+ Success
ArchiCAD PaletteModel data (481 elements)187 Stops at 187, then hangs
ArchiCAD PaletteDummy data187 Stops at 87, then hangs
ArchiCAD PaletteModel → Excel481+ 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

  1. Is there a documented network request limit in ArchiCAD's Python environment?
  2. Are there configuration options to increase this limit?
  3. Is this a security feature or architectural limitation?
  4. Are there recommended workarounds for bulk data operations with external APIs?
  5. Is the issue something else entirely or am I missing anything crucial?

Workaround (Currently Using)

Extract data within ArchiCAD → Save to file → Process externally:

  1. Use ArchiCAD Python Palette to extract model data
  2. Save data to Excel file
  3. 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!

0 REPLIES 0