Jump to content
Developer Wiki and Function Reference Links ×

Applying a Tile Resource to a Polygon


Recommended Posts

Julian, it is indeed so tricky.

You must first check for the by class of the fill type. Otherwise GetComponentFill will return the fill type of the component, "below" the by class.

Edit: here the test file:

wall comp fill style test.vwx.zip

 

Example:

 

1272671086_ScreenShot2018-11-12at08_19_46.thumb.png.955e7852e2c794705c8a73eb51eba589.png

 

 

PROCEDURE TEST;
VAR
    sty : HANDLE;
    i, numComponents : INTEGER;
    resIndx : LONGINT;
    useClassFillStyleForFill : BOOLEAN;
    className : STRING;
    
    FUNCTION ResolveFillIndex(indx : LONGINT): STRING;
        BEGIN
            CASE indx OF
            0 : ResolveFillIndex := 'none';
            1 : ResolveFillIndex := 'solid';
            OTHERWISE
                ResolveFillIndex := Index2Name(-indx);
            END;
        END;
    
BEGIN
    sty := GetObject('sty');
    { a wall style named 'sty' with some components }
    { some have a fill by class, some don't }
    
    IF GetNumberOfComponents(sty, numComponents) THEN
        FOR i:=1 TO numComponents DO BEGIN
            useClassFillStyleForFill := FALSE; { init }
            
            { check if it's by class }
            IF GetCompUseClassFill(sty, i, useClassFillStyleForFill) THEN
                IF useClassFillStyleForFill THEN 
                    IF GetComponentClass(sty, i, resIndx) THEN BEGIN
                        className := Index2Name(resIndx);
                        
                        AlrtDialog(Concat(
                            'Component ', i, chr(13),
                            'Has fill by class. Class name: ', chr(13),
                            className, chr(13),
                            'Fill: ', ResolveFillIndex(GetClFPat(className))
                        ));
                        
                        { the underlying fill, without the by class }
                        IF GetComponentFill(sty, i, resIndx) THEN
                            AlrtDialog(Concat(
                                'Component ', i, chr(13),
                                'UNDERLYING Fill, if it wasn''t by class: ', chr(13),
                                ResolveFillIndex(resIndx)
                            ));
                    END;
            
            IF (useClassFillStyleForFill = FALSE) & GetComponentFill(sty, i, resIndx) THEN
                    AlrtDialog(Concat(
                        'Component ', i, chr(13),
                        'Fill indx not by class: ', chr(13),
                        ResolveFillIndex(resIndx)
                    ));   
                    { index 1: solid fill }
                    { index negative: vectorial fill: hatch, tile, img, gradient }
        END;
END;
RUN(TEST);

 

 

 

Edited by _c_
Img too large
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...