VS:HExtrude

From Vectorworks Developer
Revision as of 10:34, 12 August 2013 by Root (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

.VectorScript|VectorScript ..VS:Function Reference|Function Reference ..VS:Function_Reference_Appendix|Appendix

Description

Creates an extrude object from the specified object.
FUNCTION HExtrude(
objectH  :HANDLE;
bottom  :REAL;
top  :REAL) : HANDLE;
def vs.HExtrude(objectH, bottom, top):
    return HANDLE

Parameters

objectH HANDLE The profile to be extruded.
bottom REAL The z height of the bottom of the extrude.
top REAL The z height of the top of the extrude.

Return Value

A handle to the newly created extrude object.

Remarks

hExtrude does not work inside PIOs. Uses BeginXtrd and EndXtrd instead.

If you need to extrude a Symbol inside a PIO use following workaround (idea by heiner schmalbach). This code shows the principle behind the idea:

PioInfoOK := GetCustomObjectInfo ( PIOName, hPIO, hRecord, hWall);
HandleSymbol2D := GetObject(mNameSymbol);
IF HandleSymbol2D = NIL THEN SymbolError := TRUE
ELSE
BEGIN
Symbol(mNameSymbol,0,0,0);
hSymbol := lNewObj;
SymbolToGroup (hSymbol, 2);
hPoly := fIn3D(fIn3D(fIn3D(hPIO))); 
{in this case: first object in symbol is a polygone. You have to find 
your own way to select the right object.}
BeginXtrd(0,200);  {create a dummy extrude}
Rect(0,0,200,200);
EndXtrd;
hSymbol3D := lNewObj;
SettingParentOK := SetParent(hPoly,hSchiene3D);  
{Set the 3D extrude as parent of your symbol polygone}

hDummy := fIn3D(hSymbol3D); {Select the "dummy rectangle"}
DelObject(hDummy);  {delete the dummy rectangle}
END;

HExtrude doesn't work in any group-like container. Below another possibility for creating a 3D object while preserving the original 2D object:

{ ***************************************** }
{ Orso.B.Schmid, creates an extrude from a HANDLE h, 
preserving the original h. Returns a handle to the extrude }
FUNCTION Create3Dobj(h: HANDLE; z, dZ: REAL): HANDLE;
BEGIN
IF h <> NIL THEN BEGIN
BeginXtrd(z, dZ);
Line(1, 1); 
{ just draw something for creating an extrude container }
EndXtrd;

DelObject(FIn3D(GetParent(CreateDuplicateObject(h, LNewObj))));
{ places a copy of h in the extrude and deletes the line }

Create3Dobj := LNewObj;
END;

Version

Availability: from VectorWorks10.0
Personal tools
NamespacesFFFF

Variants
Actions
Advanced Search
See Also
Navigation
Toolbox