Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

using offset to find locations

Anonymous
Not applicable
i am working on a coding project where i am taking a slab, drawing a fill around its perimeter and a variable distance offseted. i am currently using put and get to hold my outside variables, but cannot seem to be able to use something like "put offset=xxx" so my question is, can you take an existing slab and get its offseted point's coordinates?
	put 0'-0.0000", 0'-0.0000", 0'-0.0000" 
 
	for point_id=1 to crd_begend[1][2] 
		put ac_coords[point_id][2],ac_coords[point_id][3],1 
	next point_id 
 
 
	fill gs_fill_type 
	poly2_b	crd_begend[1][2]+1, 3, gs_fill_pen, gs_back_pen, 
			get(nsp)


this is my current use of put and get to draw a poly fill around the slab.

thanks in advance!
9 REPLIES 9
David Pacifico
Booster
Any Help? We are trying in GDL to draw a fill with a hole in it offset from another element. Namely a Slab. Getting the first fill is do-able but getting the hole offset an equal distance all the way around seems to be the challange we are having.
David Pacifico, RA

AC27 iMac i9, 32 gig Ram, 8 gig video Ram
Anonymous
Not applicable
If UA hr using an "ac_coords[][]"
Uri using an Extra's ( Accessory) Slab ......


UA have to redefine (circular functions) the ac_coords points into new points (angle based on the Previous , Your and Next point positions)

CU mirco
www.cad3d.it
Anonymous
Not applicable
David and Matthew
I don't have an answer to your question but I have a question for you.
Where are you getting the array syntax you're using??? Specifically the "crd_begend[1][2]" and the "ac_coords[point_id][2]" statements. Are the variables for your array names global variables???

Thanks,
Dan K
Anonymous
Not applicable
CU mirco: thank you. i will play with that and see how it turns out.

Dan, like mirco said, these arrays are from the extras slab accessory. the syntax for these from what i have been able to find are:

crd_begend[ poly_id ][ num1 ]

where poly_id is the current drawing shape. and num1 being a 1 or 2 to state the beginning and ending point_id

ac_coords[ point_id ][ num2 ]

where point_id states for which point you are asking the coordinates for and num2 being the coordinate values. 1 i am assuming would be a z-value which i have no need for and am not sure on. 2 is your x-value, and 3 is your y-value.
LiHigh
Newcomer
To offset every coordinate, you will need 3 ponits:
1) Previous Point.
2) Current/original Point.
3) Next Point.

These points are needed to determine the bisecting Angle so that u could obtain the new coordinate.

Peychich, have you ever thought of using "MUL" ? Pherhap this is easier!
Howard Phua

Win 10, Archicad 19 INT
Anonymous
Not applicable
This is an example 😉

CU mirco sorgato
http://www.3Dsmile.it
Anonymous
Not applicable
mirco
that is only partially what is needed. you have 2 separate fills which are overlapping. what i'm trying to get is a single fill that makes one round following the slab outlines and then continues to draw with the same poly command the offset coordinates. this will make a fill with a whole in the center that is offset x distance.
Anonymous
Not applicable
Dear Mat(thew),
in my example I have divide the hole(s) code from the whole code.

There are 2 fills, in one there is the Offset control.

CU mirco
Anonymous
Not applicable
I don't know if this will work it is only a thought.

Can you have a loop which grabs the coords and assigns them to a temp parameter, adds your offset then places them into a put/get. You would need an if statement looking at the current coord and the last one to determine which way it is going so it knows to + or - on x or y. You would also need a tick box to tell it if it was drawn clockwise or anticlockwise. Kinda complicated but it might work.

Julia