Aligning REVOLVE and BPRISM geometry

Home Forums Problems and solutions in GDL 3D modelling Aligning REVOLVE and BPRISM geometry

Viewing 6 reply threads
  • Author
    Posts
    • #18482
      shaun coomber
      Participant

      Hi

      I’ve been having some problems aligning a REVOLVE and a BPRISM_. The BPRISM_ seems to scale strangely when using RESOL. With fewer segments, it scales up slightly and loses alignment with other elements. When using RESOL 360 it aligns perfectly, with RESOL 36 it’s noticibly out of aligmnet, and at RESOL 8 it massively wrong.

      The attached image shows the different between the BPRISM_ (the top section of the profile) and the REVOLVE (bottom section).

      I’ve uploaded the test object to:
      https://cloud.applecoredesigns.co.uk/s/YqpSC4obQ8ptoLW

      Any ideas?

      Cheers
      Shaun

    • #18484
      shaun coomber
      Participant

      It’s OK, I’ve figured it out

    • #18485
      Barry Kelly
      Participant

      It’s OK, I’ve figured it out

      Any hints for those following along?

      Barry.

      Versions 6.5 to 22
      Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
      Dell Precision M6800 - i7 4700MQ @ 2.40GHz, 16GB RAM, AMD FirePro M6100 (2GB), Windows 7 64bit

    • #18486
      shaun coomber
      Participant

      Hi Barry

      There were a few issues where BPRISM deals with things differently to other commands. The main problem was that ARCHICAD facets BPRISMs completely differently. The attached image shows the original geometry (circle) with how ARCHICAD usually facets (inner hexagon) and an example facet for the bprism (triangle extending to the outside of the circle).

      To get around the problem I had to:
      – multiple the radius of the BPRISM by * cos(180/resolution)
      – multiple the thickness of the BPRISM by * cos(180/resolution)
      – rotate the BPRISM by 180+180/resolution along its axis

      GS HQ also suggested using REVOLVE{2} alongside BPRISM, instead of the basic version of REVOLVE. It seems to be undocumented but REVOLVE{2} behaves in the same way as BPRISM when facetted, instead of like the usual commands.

      However, I’m having a couple of other issues with REVOLVE{2} so you might hear more from me shortly!

      Attachments:
    • #18488
      shaun coomber
      Participant

      Right, my next problem is that REVOLVE{2} is missing the top and base surfaces, which were present with REVOLVE. Image attached, and example GDL below. Any ideas on this would be appreciated…

      ! Attributes

      BUILDING_MATERIAL shellMaterial
      n = REQUEST{2} (“Building_Material_info”, shellMaterial, “gs_bmat_surface”, shellSurface)

      ! Dimensions

      diskWidth = 0.500
      diskHeight = 0.200
      lipWidth = 0.100

      ! REVOLVE

      PUT 0, 0.5*diskWidth, 2,
      0.5*diskHeight, 0.5*diskWidth + lipWidth, 2,
      diskHeight, 0.5*diskWidth, 2

      ROTY -90
      REVOLVE NSP/3, 360, 15, GET(NSP)
      DEL 1

      ! REVOLVE{2}

      PUT 0, 0.5*diskWidth, 2, shellSurface,
      0.5*diskHeight, 0.5*diskWidth + lipWidth, 2, shellSurface,
      diskHeight, 0.5*diskWidth, 2, shellSurface

      ADDZ 1
      ROTY -90
      REVOLVE{2} NSP/4, 0, 360, 15, shellSurface, GET(NSP)
      DEL 2

      Attachments:
    • #18490
      Barry Kelly
      Participant

      The REVOLVE{2} will always close the polygon (first to last point).
      So of you want the surface back to the rotation axis you need to add a point with a 0 (zero) y-position.

      i.e.

      PUT 0, 0.000, 2, shellSurface,
       0, 0.5*diskWidth, 2, shellSurface,
       0.5*diskHeight, 0.5*diskWidth + lipWidth, 2, shellSurface,
       diskHeight, 0.5*diskWidth, 2, shellSurface,
       diskHeight, 0.000, 2, shellSurface
      
      ADDZ 1
       ROTY -90
       REVOLVE{2} NSP/4, 0, 360, 4*1 + 8*1 + 16*1 + 32*1 + 64*0 + 128*0 + 256*0, shellSurface, GET(NSP)
       DEL 2 

      Barry.

      Versions 6.5 to 22
      Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
      Dell Precision M6800 - i7 4700MQ @ 2.40GHz, 16GB RAM, AMD FirePro M6100 (2GB), Windows 7 64bit

    • #18491
      shaun coomber
      Participant

      The REVOLVE{2} will always close the polygon (first to last point).
      So of you want the surface back to the rotation axis you need to add a point with a 0 (zero) y-position.

      i.e.

      <code class="hljs">PUT 0, 0.000, 2, shellSurface,
       0, 0.5*diskWidth, 2, shellSurface,
       0.5*diskHeight, 0.5*diskWidth + lipWidth, 2, shellSurface,
       diskHeight, 0.5*diskWidth, 2, shellSurface,
       diskHeight, 0.000, 2, shellSurface
      
      ADDZ 1
       ROTY -90
       REVOLVE{2} NSP/4, 0, 360, 4*1 + 8*1 + 16*1 + 32*1 + 64*0 + 128*0 + 256*0, shellSurface, GET(NSP)
       DEL 2 

      Barry.

      That worked perfectly, thank you Barry

Viewing 6 reply threads
  • The forum ‘3D modelling’ is closed to new topics and replies.