Archicad C++ API
About Archicad add-on development using the C++ API.

Doors

ReignBough
Enthusiast
Here are some of my questions:
  •  
  • Is there a way to get where the sun symbol and the swing (arrow symbol) is? (See image.)

    When creating a door, the sun icon represents the safe side of the door and arrow represents which way the door will swing. I found values reflected and oSide and thought that these are the values that will tell me where was the sun and arrow located.

    I am looking for these values so that I can determine the handing of the door; i.e., right hand (RH), left hand (LH), right hand reverse (RHR), and left hand reverse (LHR).
  •  
  • Is there a way to get the zone where the door swings? (See image.)

    As seen from the image, the door (and wall) is located at the dark green zone while it is swinging on the light green zone. I am trying to get the light green zone in this case.

    I also, found that there is a parameter called gs_bOpeningToZone that will get this lt green zone in the scheme (schedule). But how?

door_sun.png
~ReignBough~
ARCHICAD 26 INT (from AC18)
Windows 11 Pro, AMD Ryzen 7, 3.20GHz, 32.0GB RAM, 64-bit OS
2 REPLIES 2
ReignBough
Enthusiast
On #2, I found this GDL function that will let me to get what I needed:
x = REQUEST("WINDOW_DOOR_ZONE_RELEV_OF_OWNER", "", out_dir)
x = REQUEST("ZONE_RELATIONS_OF_OWNER", "",
	cat1, code1, name1, num1,
	cat2, code2, name2, num2)
IF out_dir = 1 THEN
	PARAMETERS TEST_zone = name1
ELSE IF out_dir = 2 THEN
	PARAMETERS TEST_zone = name2
ENDIF
EDIT: (2014 Jul 09)

I just found out that this is wrong. It seems like name1 is the first zone that was created first and name2 is second. When I deleted the first zone and create a new one to replace it, the output is now incorrect.

EDIT 2: (2014 Jul 10)

For clarification:
  • I created wall, door, first zone (LtRm, upper) and second zone (DkRm, lower). Using the code above, I got:
    out_dir = 1
    name1 = "LtRm"
    name2 = "DkRm"
  • I created wall, door, first zone (DkRm, lower) and second zone (LtRm, upper). Using the code above, I got:
    out_dir = 1
    name1 = "DkRm"
    name2 = "LtRm"
  • I created wall, door, first zone (DkRm, lower) and second zone (LtRm, upper) (I made sure that the wall is between the two zones). Using the code above, I got:
    out_dir = 1
    name1 = ""
    name2 = ""
  • I created wall, door and a zone (I made sure that the wall is inside the zone). Using the code above, I got:
    out_dir = 1
    name1 = ""
    name2 = ""
~ReignBough~
ARCHICAD 26 INT (from AC18)
Windows 11 Pro, AMD Ryzen 7, 3.20GHz, 32.0GB RAM, 64-bit OS
ReignBough
Enthusiast
On #1: Based on this, the sun indicates the reveal side and the outside. With this finds, I am now able to get the handing of the door using (on GDL):
IF WIDO_REVEAL_SIDE = 1 THEN
	IF WIDO_ORIENTATION = "R" THEN
		PARAMETERS handedness = "LH"
	ELSE IF WIDO_ORIENTATION = "L" THEN
		PARAMETERS handedness = "RH"
	ENDIF
ELSE IF WIDO_REVEAL_SIDE = 0 THEN
	IF WIDO_ORIENTATION = "R" THEN
		PARAMETERS handedness = "RHR"
	ELSE IF WIDO_ORIENTATION = "L" THEN
		PARAMETERS handedness = "LHR"
	ENDIF
ENDIF
~ReignBough~
ARCHICAD 26 INT (from AC18)
Windows 11 Pro, AMD Ryzen 7, 3.20GHz, 32.0GB RAM, 64-bit OS