Péter Baksa

Forum Replies Created

Viewing 15 posts - 1 through 15 (of 93 total)
  • Author
    Posts
  • in reply to: Project2{4} unclear #4619

    Péter Baksa
    Participant

    Hi,

    You can define the number of horizontal cutplanes and their heights relative to the object 0 in the project2{4} command.
    These cutplanes cut the space into n+1 parts.
    For each part, the projection method (wireframe/shaded/…, fill/line attribute overrides), visible parts’ flags (cut/viewed – polygons/edges), and attributes (cut/projected – fills/lines) are needed.

    Suppose you need a projection with visible, cut and overhead attributes: define one cutplane.
    The bottom part (bottom to cutplane) will have cut and viewed parts, with visible attributes for the projected parameters, and cut attributes for the cut parameters.
    The upper part (cutplane to top) will only need a viewed part, with overhead attributes for the projected parameters. and all 0 (or anything) for the cut parameters.

    I hope this helps.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Detecting Line Intersection #4618

    Péter Baksa
    Participant

    Hi,

    There is a call (gosub) to “LineLineIntersection” in the 3D script. The input variables are set up before the call.

    vx, vy is computed from two points (_intersectEdge[1] and _intersectEdge[2]) on the line, divided by the distance of the two points:

    	! line 1
    	vx1 = (_intersectEdge[2][1] - _intersectEdge[1][1]) / _intersectEdgeLength
    	vy1 = (_intersectEdge[2][2] - _intersectEdge[1][2]) / _intersectEdgeLength

    px, py is any point on the line:

    	px1 = _intersectEdge[1][1]
    	py1 = _intersectEdge[1][2]

    This is done again for the second line:

    	! line 2
    	vx2 = (_intersectEdgeLeft[2][1] - _intersectEdgeLeft[1][1]) / _intersectEdgeLeftLength
    	vy2 = (_intersectEdgeLeft[2][2] - _intersectEdgeLeft[1][2]) / _intersectEdgeLeftLength
    	px2 = _intersectEdgeLeft[1][1]
    	py2 = _intersectEdgeLeft[1][2]

    The result intersection is ipx, ipy, when state = 1 (otherwise the lines are parallel):

    	gosub "LineLineIntersection"	! returns ipx, ipy, state
    	if state <> 0 then
    		_intersectPtLeft[1] = ipx
    		_intersectPtLeft[2] = ipy
    	endif

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Issue with label and surface override #4610

    Péter Baksa
    Participant

    Hi,

    This forum is only read by a few GDL programmers. If you need official GS response on this issue, please communicate your ideas directly to support. If you want to discuss it with a broader range of users, take it to the AC-talk forum.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Detecting Line Intersection #4603

    Péter Baksa
    Participant

    Yes, have a look at “basicStairTread_m” 3D script.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Issue with label and surface override #4602

    Péter Baksa
    Participant

    Hi David,

    The dialog is correct, this is how AC works. Greyed settings don’t reflect the current state of the object, they show what will happen when the override is enabled. For example complex profile walls can have more than three different surfaces, composite wall edges can have more than one surface.

    New walls will get the tool default settings, including surface overrides. Could you describe the workflow to get the “ghost” that is not correct?

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Opening oversize no longer instantly updating #4595

    Péter Baksa
    Participant

    This is a bug, we added it to the list.
    You could use wallhole2 and draw the lines yourself. Or re-organize your parameters so that A/B is the wallhole size, and oversize is subtracted from that.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Issue with label and surface override #4594

    Péter Baksa
    Participant

    Hi,

    “but the does not update the dialogue” – what do you mean with this? What result do you expect?

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Detecting Line Intersection #4593

    Péter Baksa
    Participant

    Hi James,

    The direction vectors are unit vectors along the lines, their length have to be exactly 1 (meter). Compute the length of the vector between the two points on the line, and to set the vector length to 1, multiply its end coordinates by 1/length.

    If you use an EPS value that is common in GS libparts, this code has a small bug, the lines are treated parallel (no intersections) when their angle is smaller than 0.81°, which is still quite noticable. Using EPS = 0.00000001 will set the limit to 0.0081°

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Create graphical Hotspots from a marco called Object #4590

    Péter Baksa
    Participant

    If you need different rotations in each instance, you have to use a different parameter in each. The hotspot uses the parameter belonging to the parent object, not the macro.
    A solution for this could be that you pass an array of rotations, and an index telling which one to use from the array for the hotspot.

    An example with simpler length editing:
    parent:

    for i = 1 to 2
    	call "testmacro" parameters x = x, i = i
    	line2 0, 0, x[i], 0
    	add2 0, 0.1
    next i
    del 2

    macro:

    unID = (i - 1) * 3 + 1
    
    hotspot2 0,	0,	unID, x[i], 1 + 128	: unID = unID + 1
    hotspot2 x[i],	0,	unID, x[i], 2		: unID = unID + 1
    hotspot2 -1,	0,	unID, x[i], 3 		: unID = unID + 1

    parameters in both:
    x as length array
    i as integer

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Opening oversize no longer instantly updating #4586

    Péter Baksa
    Participant

    Hi Barry,

    I forwarded your question to the developers.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Create graphical Hotspots from a marco called Object #4585

    Péter Baksa
    Participant

    Hi Samantha,

    are you trying to make editable hotspots, or fixed ones?

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: how to get the surface name of a complex wall #4568

    Péter Baksa
    Participant

    Hi David,

    we added this as a bug to be fixed. Currently you can’t get the overridden surface from GDL.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE


  • Péter Baksa
    Participant

    Hi Nader,

    yes, that could also work with the simple project2. Or you could project2{3} … parameters … twice.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE


  • Péter Baksa
    Participant

    Parameters and variables set in the 2D script doesn’t get through via project2 to the 3D script.

    You can define cutplanes in the 2D script using the PROJECT2{4} command. Unfortunately it has a bug, so it doesn’t show correct cut fills from the 3D model. You can set a cut fill override if you need only one cut fill.

    You can also use PROJECT2{3} with PARAMETERS, setting a hidden parameter whether you need the cutplane or not.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • in reply to: Polygon Operations extension #4558

    Péter Baksa
    Participant

    Hi Ashley,

    This is an add-on shipped with AC, each user gets it.
    It is used for example in “Kitchen Layout”.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

Viewing 15 posts - 1 through 15 (of 93 total)