Forum Replies Created
-
AuthorPosts
-
Csilla MaiKeymaster
Hi,
The User image files can be requested by an application query . The value list of “gs_picture_name” and “gs_picture_name_2D” parameters are defined in a Library Master file by the returned data of this application query:
! ==============================================================================
! Custom picture file request
! ==============================================================================
dim stCustomPicFiles[]
bCustomPicFileExist = APPLICATION_QUERY (“LIBRARY_MANAGER”, “USER_IMAGE_FILES”, stCustomPicFiles)
if bCustomPicFileExist then
values “gs_picture_name” stCustomPicFiles, CUSTOM
values “gs_picture_name_2D” stCustomPicFiles, CUSTOM
endifCsilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi,
If you would like to use the same value list for the same parameter in more library parts, you can create a library part under Library Master subtype. This library part’s every value list definition applies to all the parameters with the same name in the loaded library. If you write the value list definition for “gs_picture_name” parameter in the parameter script of the library part with the Library Master subtype, as the example:
values "gs_picture_name" "1.png", "2.png", "3.png", "4.png", CUSTOM
then every string parameter with the name “gs_picture_name” will get this value list automatically.
If you want to use the same value list in one library part more times, it is recommended to store the list in an array, and use the array as a value list for the differently named parameters.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Kristian,
Please add some more information about this mirroring problem.
The problem only appears in hotlinked modules? If you mirror a room with the labeled wall within a .pln file, do you get the expected result?
Could you send a picture of the Label, which behavior would you like to follow in case of mirrored hotlink? And could you please send a picture of your label’s current behavior?Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi James,
I hope this short script will help you with the alignment problem:
! fontType and fontSize are parameters define style{2} "NormalStyle" fontType, fontSize, 0 style "NormalStyle" if sgn(LABEL_POSITION[2][1]) = -1 then _iAlign = 3 else _iAlign = 1 endif paragraph "paragraphName" _iAlign, 0, 0, 0, 1 style "NormalStyle" "sample Text of Label" endparagraph _textblockWidth = 7 ! Just for example textblock "stTextblockName" _textblockWidth, 1, 0, 1, 1, 0, "paragraphName" richtext2 0, 0, "stTextblockName"
It results the behaviour you can see on the attached picture. If it does not solve your problem, please upload the 2D script or the object which you are working on.
Attachments:
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi James,
If the Pointer is drawn by ARCHICAD (the LABEL_CUSTOM_ARROW global is 0), the LABEL_POSITION[2][1] global gives back the Pointer’s horizontal width depending on the actual connection side with the Label symbol. You can use this value with the SGN() function to define the text alignment in the paragraph and textblock commands by the sign of the width value.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Derek,
The REQUEST(“Calc_area_unit”) command is only supported in 2D script, and it returns a format which can be used for string conversions. For scheduling the Realnum parameter itself, the setting at Options/Project Preferences/Working Units/Angle & Font Size Decimals in Dialog Boxes: takes effect on the number of the decimals.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Derek,
In your script a form of STR function is used, which is the first form in the GDL Guide:
STR (numeric_expression, length, fractions)
The fractions gives the number of characters after the floating point. If you would like the user to control the number of the decimals, then you can create a new parameter, for example “iDecimals” and rewrite the masterscript:
str_area_m2 = AreaM2Text + str(num_area_m2,8,iDecimals) + ' sq m' str_area_ft2 = AreaFt2Text + str(num_area_ft2,8,iDecimals) + ' sq ft' str_area_acre = AcreText + str(num_area_acre,8,iDecimals) + ' acres' str_area_hect = HectText + str(num_area_hect,8,iDecimals) + ' hectares'
To format the values according to the Project Preferences setting, see the How to display values with units set in Project Preferences? post.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Daniel,
The surface indices of the ARCHICAD elements are available through the Global Variables. To get the name of the material you can use the “Name_of_material” request. For example displaying the material names of a slab element in a label object in 2D:
_matTop = "" _matBottom = "" _matEdge = "" r = request ("Name_of_material", SLAB_MAT_TOP, _matTop) r = request ("Name_of_material", SLAB_MAT_BOTT, _matBottom) r = request ("Name_of_material", SLAB_MAT_EDGE, _matEdge) text2 0, -1, _matTop text2 0, 0, _matBottom text2 0, 1, _matEdge
Is this solution the one that you need? Could you please explain that what would you like to use the material names for?
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Kristian,
A new post has been created about the XML Extension in the Tips And Tricks section: How to use the GDL XML Add-On?. It contains a basic example about listing the parameter descriptions and values of an xml file. If you would like to see a more complex example then please send your request to gdlcenter@graphisoft.com. We will check it before long and may release a new post about it.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Tonio,
Apologies for the previous attachment (for version 20).
In this new attachment you can find two kinds of solutions in the Array_inCallerObject folder and Array_inMacro file. In the latter case you do not have to set the material list arrays in all of your objects, but the parameter would disappear if the user sets the Material parameter in the caller object to 1. Therefore the ‘All parameter’ list should not be hidden, because it could make the parameter invisible for the user, once its value is set to 1. The other solution would not hide the parameter from the user by setting its value to 1, but the materials have to be listed in the caller object.Attachments:
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Tonio,
You can display the parameters in the macro dynamically. I created three test objects with a macro based on your attached image, please check the zip file attached to this post.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Tonio,
If the Surface parameters are handled as strings in an array, it is not possible to check their values. Neither is possible to check whether they are hidden in the caller object.
Instead I would recommend the following solution:
Create the Param and Titre arrays as a dynamic array parameter in the macro. Also all the string and material parameters you would like to handle in your macro.
When you call the macro from an object create the arrays in the User Interface script with the DIM command and fill them up with the surface parameters you would like to display. In the macro, loop through the array, until its dimension. The dimension should be given by the caller object.MACRO:
! Loop through the array until the actual array dimension given by the caller objectfor i = 1 to vardim1(Param) UI_OUTFIELD Titre[i], 15, i * 25, 120, 20 UI_INFIELD{4} Param[i], 140,i * 25, 240, 20 next i
CALLER OBJECT:
! Arrays in the caller object for the macro, filled with the parameters used by the caller object
! The actual dimension of these arrays is given by the caller object (below)dim Param[4] Param[1] = "MaterialAttribute_1" Param[2] = "MaterialAttribute_2" Param[3] = "MaterialAttribute_4" Param[4] = "MaterialAttribute_5" dim Titre[4] Titre[1] = title1 Titre[2] = title2 Titre[3] = title4 Titre[4] = title5 call "ui_surface_macro" parameters all Param = Param, Titre = Titre
Attachments:
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Tonio,
On what kind of condition would you like to display the infield-outfield pairs?
Would you like to display the parameters on every condition, and instead lock the parameter which does not take effect? (As on the attached image)Attachments:
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi Frank,
I have made some changes in the text handling examples, but we are not planning to reduce the complexity of the examples. The text handling examples in the Tips & Tricks category are based on the 15. Text handling learning tutorial, the How to display values with units set in Project Preferences? is based on the 16. Advanced Text Handling learning tutorial. I hope that reading these tutorials will make it easier to understand the Tips & Tricks sections.
Csilla Mai
Library Developer, Library Team
GRAPHISOFT SECsilla MaiKeymasterHi,
At the moment all these sections are available from the Information from the environment tutorial.
A separate chapter will be created soon in GDL Reference Guide for accessing global and system values.Csilla Mai
Library Developer, Library Team
GRAPHISOFT SE -
AuthorPosts