AF Userday WP img crop

User Webinar Series 2025

We have loved running our user webinar series – we did it for the first time last year, and we are excited to bring our user webinar series back for 2025. Our first one ran in February, and we have dates set for May, September, and December.

What is a user webinar?

✅ Short condensed ArchiFrame tutorial on a specific workflow, process etc
✅ Users get to vote on their favourite topic
✅ You can ask questions and get live feedback on projects
✅ Busy then? Watch it on catch-up!

February User Webinar: Customizing ID Numbering for Planks

Our first webinar of the year was a pretty technical one. Watch the video below to get some details on how you can customize your planks and make your ArchiFrame environment more suited to your specific workflows.

The code snippet to be copy & pasted into your ArchiFrameElementsChanges just after tag <scripts>:

   <!-- Scripts used many times -->
      <scripts>
                <script merge="addpre" id="renum_by_role_own">
                    <![CDATA[
-- Loaded once per element, called for each plank current plank opened already
-- Returns table having optional fields:
-- idpre  To be added before ID
-- idpost To be added after ID
-- For both, the special characters:
-- !, will not be visible
-- #num, useful for idpre - will define the starting number for the planks (not visible either)
-- =, as the first character will set the idpre as it is to the target
function GetPlankRenumData()
  local s, t, res
 
  t={}
  s=ac_objectget("iElemGroup")
 
  res="#1"
  if string.match(s, "^vertical_x.*") then
    res="#200"
  elseif string.match(s, "^vertical.*") then
    t.idpre="#100"
    t.idpost=" ST"
       
    if string.match(s, "^vertical_y.*") then
          -- Distinguish between vertical_y and vertical_spacing
      t.idpre="#150"
        end
       
        -- Check if it is a standard stud with length 2501
        local info = af_request("plankinfo")
        if info and math.abs(info.len - 2.501) < 0.0005 then
          -- Length matches, may not contain any cuts. No cuts if iMc has just one (empty) row. It always has at least one row.
            if ac_objectget("iMc", -1) == 1 and ac_objectget("iMc", 1, 1) == 0 then
        t.idpre="=ST2501"
            end
        end
       
    return t
  elseif string.match(s, "^lintel.*") then
    res="#250"
  elseif string.match(s, "^bottom_force.*") or string.match(s, "^2ndbottom_force.*") then
    res="#300"
  elseif string.match(s, "^top_force.*") or string.match(s, "^2ndtop_force.*") then
    res="#400"
  elseif string.match(s, "^nogging.*") then
    res="#500"
  end

  t.idpre=res
  return t
end
]]>
                </script>
            </scripts>

May User Webinar: Topic TBC

The date is set for 4th May 2025.

Sign up for the event here: https://events.teams.microsoft.com/event/fb08caf4-76d4-4087-b595-0adaa91b3ae6@3354a013-5cdf-410f-bd52-c1a285303739

September User Webinar: Topic TBC

The date is set for 11th September 2025.

Sign up for the event here: https://events.teams.microsoft.com/event/7d587dc0-7ae6-4d62-9269-837323675bc1@3354a013-5cdf-410f-bd52-c1a285303739

December User Webinar: Topic TBC

The date is set for 4th December 2025.

Sign up for the event here: https://events.teams.microsoft.com/event/e802a203-d999-4584-82f8-efcedd790f7e@3354a013-5cdf-410f-bd52-c1a285303739

Share this post