Home › Forums › Problems and solutions in GDL › 3D modelling › Aligning REVOLVE and BPRISM geometry
- This topic has 6 replies, 2 voices, and was last updated 5 years, 4 months ago by
shaun coomber.
-
AuthorPosts
-
-
December 10, 2019 at 11:10 #18482
shaun coomber
ParticipantHi
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/YqpSC4obQ8ptoLWAny ideas?
Cheers
ShaunAttachments:
-
December 12, 2019 at 11:27 #18484
shaun coomber
ParticipantIt’s OK, I’ve figured it out
-
December 13, 2019 at 04:27 #18485
Barry Kelly
ParticipantIt’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 -
December 13, 2019 at 16:14 #18486
shaun coomber
ParticipantHi 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 axisGS 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:
-
December 13, 2019 at 16:42 #18488
shaun coomber
ParticipantRight, 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, 2ROTY -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, shellSurfaceADDZ 1
ROTY -90
REVOLVE{2} NSP/4, 0, 360, 15, shellSurface, GET(NSP)
DEL 2Attachments:
-
December 16, 2019 at 08:14 #18490
Barry Kelly
ParticipantThe 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 -
December 16, 2019 at 16:43 #18491
shaun coomber
ParticipantThe 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
-
-
AuthorPosts
- The forum ‘3D modelling’ is closed to new topics and replies.