<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ResizeContour in GDL</title>
    <link>https://community.graphisoft.com/t5/GDL/ResizeContour/m-p/716805#M8670</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;P&gt;Don't know that extension but&lt;BR /&gt;You could have your poly curve in a twodimensional array and use the following code (created with help oh chatgpt)&lt;BR /&gt;and later use the parameter buffer to feed the POLY2&lt;BR /&gt;&lt;BR /&gt;offset the offset you want (constant edge offset)&lt;BR /&gt;working_profile is the input array use working_profile = your array before running the sub&lt;BR /&gt;profile_off is the output array&lt;BR /&gt;profile_off_reset array to clear profile off just in case.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;LI-CODE lang="markup"&gt;"offsetpoly":

profile_off = profile_off_reset
FOR i = 1 TO nProfile

    IF i = 1 THEN
        ip = nProfile
    ELSE
        ip = i - 1
    ENDIF

    IF i = nProfile THEN
        in = 1
    ELSE
        in = i + 1
    ENDIF

    ! --------------------------------------------------------
    ! EDGE 1: previous -&amp;gt; current
    ! --------------------------------------------------------

    dx1 = profile_working[i][1] - profile_working[ip][1]
    dy1 = profile_working[i][2] - profile_working[ip][2]

    len1 = SQR(dx1 * dx1 + dy1 * dy1)

    nx1 =  dy1 / len1
    ny1 = -dx1 / len1


    ! --------------------------------------------------------
    ! EDGE 2: current -&amp;gt; next
    ! --------------------------------------------------------

    dx2 = profile_working[in][1] - profile_working[i][1]
    dy2 = profile_working[in][2] - profile_working[i][2]

    len2 = SQR(dx2 * dx2 + dy2 * dy2)

    nx2 =  dy2 / len2
    ny2 = -dx2 / len2


    ! --------------------------------------------------------
    ! POINTS ON THE TWO OFFSET LINES
    ! --------------------------------------------------------

    x1 = profile_working[i][1] - nx1 * offset
    y1 = profile_working[i][2] - ny1 * offset

    x2 = profile_working[i][1] - nx2 * offset
    y2 = profile_working[i][2] - ny2 * offset


    ! --------------------------------------------------------
    ! INTERSECTION
    ! --------------------------------------------------------

    denom = dx1 * dy2 - dy1 * dx2

    IF ABS(denom) &amp;gt; 0.000001 THEN

        t = ((x2 - x1) * dy2 - (y2 - y1) * dx2) / denom

        profile_off[i][1] = x1 + t * dx1
        profile_off[i][2] = y1 + t * dy1

    ELSE

        ! Parallel / 180° corner
        profile_off[i][1] = x1
        profile_off[i][2] = y1

    ENDIF

NEXT i
profile_working = profile_working_reset

RETURN&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 07 Oct 2026 15:56:03 GMT</pubDate>
    <dc:creator>rudl</dc:creator>
    <dc:date>2026-10-07T15:56:03Z</dc:date>
    <item>
      <title>ResizeContour</title>
      <link>https://community.graphisoft.com/t5/GDL/ResizeContour/m-p/716279#M8665</link>
      <description>&lt;P&gt;Does anyone have a simple example of using the "&lt;FONT face="inherit"&gt;ResizeContour" command&lt;/FONT&gt;?&lt;FONT face="inherit"&gt;&amp;nbsp;&amp;nbsp;It can be as small as a 10'x10' box that is made 5' larger with the&amp;nbsp;&lt;/FONT&gt;command. &amp;nbsp;I have been trying to understand the POLYGON OPERATIONS EXTENSION (GDL Reference Guide -&amp;nbsp;page 647) without success. I wish the manual had included a simple example.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Thu, 01 Oct 2026 23:25:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/ResizeContour/m-p/716279#M8665</guid>
      <dc:creator>John Edmundson</dc:creator>
      <dc:date>2026-10-01T23:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: ResizeContour</title>
      <link>https://community.graphisoft.com/t5/GDL/ResizeContour/m-p/716805#M8670</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;P&gt;Don't know that extension but&lt;BR /&gt;You could have your poly curve in a twodimensional array and use the following code (created with help oh chatgpt)&lt;BR /&gt;and later use the parameter buffer to feed the POLY2&lt;BR /&gt;&lt;BR /&gt;offset the offset you want (constant edge offset)&lt;BR /&gt;working_profile is the input array use working_profile = your array before running the sub&lt;BR /&gt;profile_off is the output array&lt;BR /&gt;profile_off_reset array to clear profile off just in case.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;LI-CODE lang="markup"&gt;"offsetpoly":

profile_off = profile_off_reset
FOR i = 1 TO nProfile

    IF i = 1 THEN
        ip = nProfile
    ELSE
        ip = i - 1
    ENDIF

    IF i = nProfile THEN
        in = 1
    ELSE
        in = i + 1
    ENDIF

    ! --------------------------------------------------------
    ! EDGE 1: previous -&amp;gt; current
    ! --------------------------------------------------------

    dx1 = profile_working[i][1] - profile_working[ip][1]
    dy1 = profile_working[i][2] - profile_working[ip][2]

    len1 = SQR(dx1 * dx1 + dy1 * dy1)

    nx1 =  dy1 / len1
    ny1 = -dx1 / len1


    ! --------------------------------------------------------
    ! EDGE 2: current -&amp;gt; next
    ! --------------------------------------------------------

    dx2 = profile_working[in][1] - profile_working[i][1]
    dy2 = profile_working[in][2] - profile_working[i][2]

    len2 = SQR(dx2 * dx2 + dy2 * dy2)

    nx2 =  dy2 / len2
    ny2 = -dx2 / len2


    ! --------------------------------------------------------
    ! POINTS ON THE TWO OFFSET LINES
    ! --------------------------------------------------------

    x1 = profile_working[i][1] - nx1 * offset
    y1 = profile_working[i][2] - ny1 * offset

    x2 = profile_working[i][1] - nx2 * offset
    y2 = profile_working[i][2] - ny2 * offset


    ! --------------------------------------------------------
    ! INTERSECTION
    ! --------------------------------------------------------

    denom = dx1 * dy2 - dy1 * dx2

    IF ABS(denom) &amp;gt; 0.000001 THEN

        t = ((x2 - x1) * dy2 - (y2 - y1) * dx2) / denom

        profile_off[i][1] = x1 + t * dx1
        profile_off[i][2] = y1 + t * dy1

    ELSE

        ! Parallel / 180° corner
        profile_off[i][1] = x1
        profile_off[i][2] = y1

    ENDIF

NEXT i
profile_working = profile_working_reset

RETURN&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2026 15:56:03 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/GDL/ResizeContour/m-p/716805#M8670</guid>
      <dc:creator>rudl</dc:creator>
      <dc:date>2026-10-07T15:56:03Z</dc:date>
    </item>
  </channel>
</rss>

