﻿<?xml version="1.0" encoding="utf-8"?>
<permit>
  <!-- Common settings -->
  <settings>
    <!-- Where to create the drawing -->
    <!-- floor=storey name, empty=to active. If the storey does not exist, it is created as lowest storey-->
    <!-- layer=layer name default. Missing layers are created. -->
    <destination>
      <layer>RAK Perustuksen mittakuva</layer>
      <floor>FOUNDATION</floor>
    </destination>
    <!-- Marker object defaults-->
    <markingdef>
      <layer>RAK Perustuksen mittakuva</layer>
      <elemparam name="pen">11</elemparam>
      <elemparam name="linetype">*solid*</elemparam>
      <objparam name="iPen">1</objparam>
      <objparam name="iLinetype" type="attr_linetype">*solid*</objparam>
      <objparam name="iFontSize">15</objparam>

      <!-- Column marker footing defaults, the footing can be clicked on and off from the marker object -->
      <objparam name="iColShowFooting">1</objparam>
      <objparam name="iColFootingA">0.6</objparam>
      <objparam name="iColFootingA">0.6</objparam>
      <objparam name="iColFootingB">0.6</objparam>
      <objparam name="iColFootingLine" type="attr_linetype">*dash*</objparam>
    </markingdef>

    <findplinth>
      <item>
        <!-- How to find the plinth when processing slabs and creating dim lines -->
        <findgroup>
          <findsingle>
            <layer>RAK Perustuksen mittakuva.Sokkeli</layer>
          </findsingle>
        </findgroup>
      </item>
    </findplinth>

  </settings>

  <!-- Plinth -->
  <!-- logoverhang_max sets maximum overhang for crossing log walls, longer overhangs won't be removed -->
  <base logoverhang_max="0.5">
    <!-- Preset list for level markings title -->
    <textlist>
      <item>SOKKELI</item>
      <item>VALMIS LATTIAPINTA</item>
      <item>TERASSIN LATTIAPINTA</item>
      <item>KUISTIN LATTIAPINTA</item>
    </textlist>

    <!-- Slab settings -->
    <slab>
      <!-- maxdist: Points <= this value are moved to touch the plinth. Zero=do not move anything -->
      <polygon maxdist="0.1">
      </polygon>
      <settings>
        <layer>RAK Perustuksen mittakuva</layer>
        <objparam name="iFontSize">15</objparam>
      </settings>
    </slab>

    <!-- Bottom wood and plinth settings (no geometry) -->
    <settings>
      <!-- Bottom wood settings -->
      <wood>
        <layer>RAK Perustuksen mittakuva.Alapuu</layer>
        <elemparam name="fill">Empty Fill</elemparam>
        <!-- Material name or index could be given here also. RGB-values are from range 0...1. ArchiFrame searches for best match. -->
        <elemparam name="materialrgb">0,0.75,0</elemparam>
      </wood>

      <!-- Plinth settings -->
      <plinth>
        <layer>RAK Perustuksen mittakuva.Sokkeli</layer>
        <textlabel>
          <objparam name="iTypeID">3</objparam>
          <objparam name="iShowLine">1</objparam>
          <objparam name="iCenterText">1</objparam>
          <objparam name="iTextYoff">-0.75</objparam>
          <objparam name="iFontSize">15</objparam>
        </textlabel>
        <elemparam name="fill">Empty Fill</elemparam>
        <elemparam name="materialrgb">0.75,0.75,0.75</elemparam>
      </plinth>
    </settings>

    <!-- If values are given from UI -->
    <itemvaluesgiven>
      <create>
        <!-- zoff=bottom level related to original wall's bottom -->
        <!-- refside=in:from inner side outwards, mid:from mid outwards, out:from outer side inwards -->
        <!-- dist=distance from reference line -->
        <!-- doortype: intersect=if original opening intersects with new created elements (extends downwards), always=always a door to zero level -->
        <!-- Created wall will have reference line at left side -->
        <wall zoff="ui_zoff-ui_woodheight" refside="ui" dist="ui_woodoff" doortype="intersect" settings="wood">
          <elemparam name="height">ui_woodheight</elemparam>
          <elemparam name="thickness">ui_woodthickness</elemparam>
        </wall>

        <!-- Plinth, type="base" tells this to be plint (slabs may be extended to touch the plinth) -->
        <wall zoff="ui_zoff-ui_woodheight-ui_plinthheight" refside="ui" dist="ui_plinthoff" type="base" doortype="intersect" settings="plinth">
          <elemparam name="height">ui_plinthheight</elemparam>
          <elemparam name="thickness">ui_plinththickness</elemparam>
        </wall>
      </create>
    </itemvaluesgiven>


    <!-- Forced types -->
    <forcetypes>
      <forcetype>
        <!-- Name to list -->
        <item name="Lautaverhoiltu 200 mm">
          <!-- Elements to create -->
          <create>
            <!-- Bottom wood -->
            <wall zoff="0.000" refside="in" dist="0.111" doortype="intersect" settings="wood">
              <elemparam name="height">0.042</elemparam>
              <elemparam name="thickness">0.148</elemparam>
            </wall>

            <!-- Plinth -->
            <wall zoff="-1.000" refside="in" dist="0.059" type="base" doortype="intersect" settings="plinth">
              <elemparam name="height">1.000</elemparam>
              <elemparam name="thickness">0.200</elemparam>
            </wall>
          </create>
        </item>
      </forcetype>
    </forcetypes>

    <!-- From here to end of base-tag are defintions used depeding on original AC composite/fill type. (For example thinner plinth to cold space) -->
    <item>
      <!-- Element is picked if it fulfills every condition under findsingle-tag. Only walls are inspected. -->
      <!-- If attribute forfind="0" is given, the search condition is used only when creating the elements - not for selection. -->
      <findgroup>
        <findsingle>
          <!-- From layer -->
          <layer>*Ulkoseinä*</layer>
          <!-- AND-condition: fill/composite name-->
          <!--elemparam name="fill">Ulkoseinä Lauta</elemparam-->
        </findsingle>
      </findgroup>

      <!-- Create these from elements fulfilling find-condition -->
      <create>
        <wall zoff="ui_zoff-ui_woodheight" refside="out" dist="ui_woodoff" doortype="intersect" settings="wood">
          <elemparam name="height">ui_woodheight</elemparam>
          <elemparam name="thickness">ui_woodthickness</elemparam>
        </wall>

        <wall zoff="ui_zoff-ui_woodheight-ui_plinthheight" refside="out" dist="ui_plinthoff" type="base" doortype="intersect" settings="plinth">
          <elemparam name="height">ui_plinthheight</elemparam>
          <elemparam name="thickness">ui_plinththickness</elemparam>
        </wall>
      </create>
    </item>

    <!-- Everything else is handled here -->
    <item>
      <create>
        <wall zoff="0.000" refside="in" dist="0.111" doortype="intersect" settings="wood">
          <elemparam name="height">0.042</elemparam>
          <elemparam name="thickness">0.148</elemparam>
        </wall>

        <!-- Plinth, type="base" marks this as plinth-->
        <!-- zoff=distance from original wall's bottom downwards -->
        <wall zoff="-1.000" refside="in" dist="0.059" type="base" doortype="intersect" settings="plinth">
          <elemparam name="height">1.000</elemparam>
          <elemparam name="thickness">0.200</elemparam>
        </wall>
      </create>
    </item>
  </base>


  <!-- Load bearing walls -->
  <loadbearing>
    <item>
      <findgroup>
        <findsingle>
          <elemparam name="fill">*kantava*tiili*</elemparam>
        </findsingle>
      <findsingle>
          <layer>*internal*brick*</layer>
        </findsingle>
      </findgroup>

      <create>
        <!-- defaults="org" takes original wall's settings (thickness and composite/fill) -->
        <wall zoff="0.000" defaults="org" doortype="always">
          <layer>RAK Perustuksen mittakuva.Kantava</layer>
          <textlabel adjustangle="1">
            <objparam name="iTypeID">1</objparam>
            <objparam name="iText1">Kantava tiiliseinä</objparam>
            <objparam name="iShowLine">0</objparam>
            <objparam name="iCenterText">1</objparam>
            <objparam name="iTextYoff">0.25</objparam>
            <objparam name="iFontSize">15</objparam>
          </textlabel>
          <elemparam name="height">0.001</elemparam>
        </wall>
      </create>
    </item>

    <!-- createskipfind means that forget find definitions when creating elements -->
    <item createskipfind="1">
      <findgroup>
        <findsingle>
          <elemparam name="fill">*kantava*</elemparam>
        </findsingle>
      </findgroup>

      <create>
        <wall zoff="0.000" defaults="org" doortype="always">
          <layer>RAK Perustuksen mittakuva.Kantava</layer>
          <textlabel adjustangle="1">
            <objparam name="iTypeID">1</objparam>
            <objparam name="iText1">Kantava väliseinä</objparam>
            <objparam name="iShowLine">0</objparam>
            <objparam name="iCenterText">1</objparam>
            <objparam name="iTextYoff">0.25</objparam>
            <objparam name="iFontSize">15</objparam>
          </textlabel>
          <elemparam name="height">0.001</elemparam>
        </wall>
      </create>
    </item>
  </loadbearing>

  <!-- Stiffing walls -->
  <stiffwalls>
    <item>
      <findgroup forfind="0">
        <findsingle>
          <elemparam name="fill">*tiili*</elemparam>
        </findsingle>
      </findgroup>

      <create>
        <wall zoff="0.000" defaults="org" doortype="always">
          <layer>RAK Perustuksen mittakuva.Jäykistävä</layer>
          <textlabel adjustangle="1">
            <objparam name="iTypeID">1</objparam>
            <objparam name="iText1">Jäykistävä tiiliseinä</objparam>
            <objparam name="iShowLine">0</objparam>
            <objparam name="iCenterText">1</objparam>
            <objparam name="iTextYoff">0.25</objparam>
            <objparam name="iFontSize">15</objparam>
          </textlabel>
          <elemparam name="height">0.001</elemparam>
        </wall>
      </create>
    </item>

    <item>
      <create>
        <wall zoff="0.000" defaults="org" doortype="always">
          <layer>RAK Perustuksen mittakuva.Jäykistävä</layer>
          <textlabel adjustangle="1">
            <objparam name="iTypeID">1</objparam>
            <objparam name="iText1">Jäykistävä väliseinä</objparam>
            <objparam name="iShowLine">0</objparam>
            <objparam name="iCenterText">1</objparam>
            <objparam name="iTextYoff">0.25</objparam>
            <objparam name="iFontSize">15</objparam>
          </textlabel>
          <elemparam name="height">0.001</elemparam>
        </wall>
      </create>
    </item>
  </stiffwalls>


  <!-- Columns -->
  <columns>
    <item>
      <findgroup>
        <findsingle>
          <!-- API_ObjectID -->
          <elemtype>6</elemtype>
          <elemparam name="libname">pilari_*</elemparam>
        </findsingle>

        <findsingle>
          <!-- API_ObjectID -->
          <elemtype>6</elemtype>
          <elemparam name="libname">LogColumn*</elemparam>
        </findsingle>

        <findsingle>
          <!-- API_ObjectID -->
          <elemtype>6</elemtype>
          <elemparam name="libname">Hirsipilari*</elemparam>
        </findsingle>

        <findsingle>
          <!-- API_ColumnID -->
          <elemtype>2</elemtype>
        </findsingle>
      </findgroup>

      <!-- Defintions for marker object -->
      <create>
        <objparam name="iTypeID">4</objparam>
        <script>
          <![CDATA[
-- Run for marker object
--

PI=3.141592653589793
PI2=PI/2

-- Will be called for each source element (object)
function OnCreateMarker(unidSource)
  -- Vain objekti lähteenä kiinnostaa
  elemInfo=ac_elemget(unidSource)
  bSetParams=false
  nA=0.2
  if elemInfo.header.typeID==6 then
    bSetParams=true
    nRound=0.0
    nA=ac_getobjparam(unidSource, "A")
    nB=ac_getobjparam(unidSource, "B")
    nAngle=ac_getobjparam(unidSource, "#angle")
    sLibName=string.lower(ac_getobjparam(unidSource, "#libname"))
    
    if sLibName=="pilari_09" then
      -- Handle this type
      if ac_getobjparam(unidSource, "toltyyp")==1.0 then
        nRound=1.0
        nA=ac_getobjparam(unidSource, "tolpak2")
        nB=nA
      else
        nA=ac_getobjparam(unidSource, "tolpak")
        nB=nA
      end
    elseif sLibName=="logcolumn9d" or sLibName=="hirsipilari9d" then
      -- Log column different way
      if ac_getobjparam(unidSource, "coltypenum")==2.0 then
        nRound=1.0
      end
    end

    nDeg=PI/180.0
    if math.abs(nA-nB)<0.0009 and (math.abs(nAngle-PI2)<nDeg or math.abs(nAngle-PI)<nDeg or math.abs(nAngle-PI-PI2)<nDeg) then
      -- To zero angle if 90,180,270 degrees
      nAngle=0
    end
  end
  
  -- Set to new column marker
  ac_objectopen(nil)
  if bSetParams then
    ac_objectset( "#angle", nAngle )
    ac_objectset( "A", nA )
    ac_objectset( "B", nB )
    ac_objectset( "iColRound", nRound )
  end
  ac_objectset( "iCenterText", 1.0 )
  ac_objectset( "iTextYoff", nA*0.5+0.1 )
  ac_objectset( "iShowLine", 0.0 )
  ac_objectset( "iFontSize", 15.0 )
  ac_objectclose()
end
]]>
        </script>

      </create>
    </item>
  </columns>


  <!-- Automatic dimensions -->
  <autodim>
    <!-- Default settings that are adjusted at each usage case -->
    <dimsettings>
      <layer>RAK Perustuksen mittakuva</layer>
      <elemparam name="fontname">arial</elemparam>
      <elemparam name="fontsize">3.5</elemparam>
      <elemparam name="fontstyle"></elemparam>
      <elemparam name="pen">1</elemparam>
      <elemparam name="markersize">3.5</elemparam>
    </dimsettings>

    <!-- Bottom wood and plinth settings like this -->
    <dimsettings_small dist="0.3">
      <layer>RAK Perustuksen mittakuva</layer>
      <elemparam name="fontname">arial</elemparam>
      <elemparam name="fontsize">2.5</elemparam>
      <elemparam name="fontstyle"></elemparam>
      <elemparam name="pen">1</elemparam>
      <elemparam name="markersize">2.5</elemparam>
    </dimsettings_small>

    <!-- Plinth settings -->
    <base>
      <!-- Overrides for this case (defaults from autodim/dimsettings) -->
      <dimsettings>
        <text content="S">
          <elemparam name="fontname">arial</elemparam>
          <elemparam name="fontsize">4</elemparam>
          <elemparam name="fontstyle"></elemparam>
        </text>
      </dimsettings>

      <!-- If similar with bottom wood -->
      <dimsettingscomb>
        <text content="S+AP">
          <elemparam name="fontname">arial</elemparam>
          <elemparam name="fontsize">4</elemparam>
          <elemparam name="fontstyle"></elemparam>
        </text>
      </dimsettingscomb>
    </base>

    <!-- Slab definitions -->
    <slab>
      <dimsettings>
        <text content="S">
          <elemparam name="fontname">arial</elemparam>
          <elemparam name="fontsize">4</elemparam>
          <elemparam name="fontstyle"></elemparam>
        </text>
      </dimsettings>
    </slab>

    <!-- Bottom wood -->
    <wood>
      <item>
        <findgroup>
          <findsingle>
            <layer>RAK Perustuksen mittakuva.Alapuu</layer>
          </findsingle>
        </findgroup>
      </item>

      <!-- Created only if different from plinth -->
      <dimsettings>
        <text content="AP">
          <elemparam name="fontname">arial</elemparam>
          <elemparam name="fontsize">4</elemparam>
          <elemparam name="fontstyle"></elemparam>
        </text>
      </dimsettings>
    </wood>

    <!-- Other walls to dimension: Load bearing and stiffing walls -->
    <dimwalls>
      <item>
        <findgroup>
          <findsingle>
            <layer>RAK Perustuksen mittakuva.Kantava</layer>
          </findsingle>
          <findsingle>
            <layer>RAK Perustuksen mittakuva.Jäykistävä</layer>
          </findsingle>
        </findgroup>
      </item>
    </dimwalls>


    <!-- Objects to automdim (flue) -->
    <dimobjs>
      <!-- Hormi PK -->
      <item>
        <findgroup>
          <findsingle>
            <elemparam name="libname">Hormi PK*</elemparam>
          </findsingle>
        </findgroup>

        <script>
          <![CDATA[
-- Run for object under inspection: set globals gx1, gy1, gx2, gy2, nil=not to be dimensioned
--

PI=3.141592653589793
PI2=PI/2

function MinOwn( a, b )
  if a<b then 
    return a
  else
    return b
  end
end

function MaxOwn( a, b )
  if a>b then 
    return a
  else
    return b
  end
end

-- Handles flue object Hormi PK10
function OnGetObjBox(unidSource)
  -- Vain objekti lähteenä kiinnostaa
  gx1=ac_getobjparam(unidSource, "#pos.x")
  gy1=ac_getobjparam(unidSource, "#pos.y")
  nA=ac_getobjparam(unidSource, "A")
  nB=ac_getobjparam(unidSource, "B")
  nAngle=ac_getobjparam(unidSource, "#angle")
  
  sType=ac_getobjparam(unidSource, "hormityyppi")
  if sType=="Teräshormi" then
    -- Pyöreä ja keskitetty
    gx1=gx1-nA*0.5
    gx2=gx1+nA
    gy1=gy1-nB*0.5
    gy2=gy1+nB
  else
    -- Rectangle and origin at the corner!
    xOrig=gx1
    yOrig=gy1
    gx2=gx1
    gy2=gy1
   
    -- Right bottom
    x=xOrig+nA*math.cos(nAngle)
    y=yOrig+nA*math.sin(nAngle)
    gx1=MinOwn(gx1, x)
    gy1=MinOwn(gy1, y)
    gx2=MaxOwn(gx2, x)
    gy2=MaxOwn(gy2, y)
    
    -- Right top
    x=x+nB*math.cos(nAngle+PI2)
    y=y+nB*math.sin(nAngle+PI2)
    gx1=MinOwn(gx1, x)
    gy1=MinOwn(gy1, y)
    gx2=MaxOwn(gx2, x)
    gy2=MaxOwn(gy2, y)
    
    -- Left top
    x=xOrig+nB*math.cos(nAngle+PI2)
    y=yOrig+nB*math.sin(nAngle+PI2)
    gx1=MinOwn(gx1, x)
    gy1=MinOwn(gy1, y)
    gx2=MaxOwn(gx2, x)
    gy2=MaxOwn(gy2, y)
  end
end
]]>
        </script>
      </item>

      <!-- Other flues handled here-->
      <item>
        <findgroup>
          <findsingle>
            <elemparam name="libname">*hormi*</elemparam>
          </findsingle>
        </findgroup>
      </item>
    </dimobjs>

    <!-- Columns outside the plinth -->
    <colsout>
      <dimsettings>
        <text content="P">
          <elemparam name="fontname">arial</elemparam>
          <elemparam name="fontsize">4</elemparam>
          <elemparam name="fontstyle"></elemparam>
        </text>
      </dimsettings>
    </colsout>

    <!-- Cross dimensions settings -->
    <crossdim>
      <!-- Texts for different dim lines (just plinth, just bottom wood and both) -->
      <texts crossdim="RISTIMITTA" plinth="S " wood="AP " plinthwood="S JA AP ">
      </texts>
    </crossdim>
  </autodim>

  <markings>
    <!-- Marker object's settings-->
    <settings>
      <layer>RAK Perustuksen mittakuva</layer>
      <objparam name="iFontSize">15</objparam>
    </settings>

    <!--
      Marker object type numbers are:

      ETypeText1=1
      ETypeRoundLevel=2
      ETypeBaseLevel=3		! Plinth level: circle with line
      ETypeColumn=4
      ETypeRect=5				! Rectangular marking
      ETypeDetail=6			! Reference to detail drawing (Autocad style)
    -->

    <presets>
      <preset name="Leikkausmerkinnät AC" type="8">
        <lines>
          <line>[edit1]</line>
        </lines>
        <list>
          <item>A</item>
          <item>B</item>
          <item>C</item>
        </list>
        <settings>

          <layer>RAK Perustuksen mittakuva</layer>
          <elemparam name="linetype">*dash*</elemparam>
          <objparam name="iLinetype" type="attr_linetype">*dash*</objparam>
          <objparam name="iFontSize">15</objparam>
        </settings>
      </preset>

      <preset name="Leikkausmerkinnät nuoli" type="6">
        <lines>
          <line>[edit1]</line>
        </lines>
        <list>
          <item>preset1</item>
          <item>preset2</item>
        </list>
      </preset>

      <preset name="Korkomerkintä" type="5">
        <lines>
          <line>[edit1]</line>
          <line>[edit2]</line>
        </lines>
        <list target="1">
          <item>VALMIS LATTIAPINTA</item>
          <item>TERASSIN LATTIAPINTA</item>
          <item>KUISTIN LATTIAPINTA</item>
        </list>
        <settings>
          <objparam name="A">2.500</objparam>
          <objparam name="B">0.700</objparam>
          <objparam name="iTextYoff">0.100</objparam>
        </settings>
      </preset>

      <preset name="Pilarikenkä puupilarille" type="1">
        <lines>
          <line>PILARIKENKÄ PUUPILARILLE [edit1]</line>
          <line>PILARIN ALAPÄÄ [edit2]</line>
        </lines>
        <list target="1">
          <item>100x100</item>
          <item>150x150</item>
        </list>
      </preset>

      <preset name="Pilarikenkä teräspilarille" type="1">
        <lines>
          <line>PILARIKENKÄ TERÄSPILARILLE [edit1]</line>
          <line>PILARIN ALAPÄÄ [edit2]</line>
        </lines>
        <list target="edit1">
          <item>100x100</item>
          <item>150x150</item>
        </list>
      </preset>

      <preset name="Selite viiva" type="1">
        <lines>
          <line>[edit1]</line>
          <line>[edit2]</line>
          <line>[edit3]</line>
        </lines>
      </preset>

      <preset name="Selite viiva korko" type="1">
        <lines>
          <line>[edit1]</line>
        </lines>
        <list>
          <item>+0,10</item>
          <item>+0,05</item>
          <item>+0,00</item>
          <item>-0,05</item>
          <item>-0,10</item>
        </list>
      </preset>

      <preset name="Selite suorakaide" type="5">
        <lines>
          <line>[edit1]</line>
          <line>[edit2]</line>
          <line>[edit3]</line>
        </lines>

        <settings>
          <objparam name="A">2.500</objparam>
          <objparam name="B">1.000</objparam>
          <objparam name="iTextYoff">0.300</objparam>
        </settings>
      </preset>
    </presets>
  </markings>

</permit>
