Code snippet : Différence entre versions

De Wiki-Cadlink
Sauter à la navigation Sauter à la recherche
(Déplacements)
(Script interface)
 
(5 révisions intermédiaires par le même utilisateur non affichées)
Ligne 76 : Ligne 76 :
  
 
== Gestion de l'affichage ==
 
== Gestion de l'affichage ==
=== Affichage sur étage supérieur ===
+
=== Affichage différent en fonction de l'étage d'implantation ===
 
* L'objet placé doit être paramétré en "Visible sur tous les étages"
 
* L'objet placé doit être paramétré en "Visible sur tous les étages"
 
<pre>
 
<pre>
zz = REQUEST ("Story", "", index1, story_name)
+
zz = REQUEST ("Story", "", index1, story_name) ! Étage affiché
zz = REQUEST ("Home_story", "", index2, home_story_name)
+
zz = REQUEST ("Home_story", "", index2, home_story_name) ! Étage d'implantation de l'objet
 
 
IF index1 >= index2 THEN
 
 
 
!Symbole 2D
 
  
 +
IF index1 > index2 THEN
 +
!Symbole 2D affiché au dessus de l'étage d'implantation
 +
ENDIF
 +
IF index1 = index2 THEN
 +
!Symbole 2D affiché sur l'étage d'implantation
 +
ENDIF
 +
IF index1 < index2 THEN
 +
!Symbole 2D affiché en dessous de l'étage d'implantation
 
ENDIF
 
ENDIF
 
</pre>
 
</pre>
Ligne 110 : Ligne 114 :
 
==== Lisible ====
 
==== Lisible ====
 
<pre>
 
<pre>
if (_totalRotate > (90 + EPS) & _totalRotate < (270 + EPS)) then
+
IF (_totalRotate > (90 + 90*SYMB_MIRRORED + EPS) & _totalRotate < (270 + 90*SYMB_MIRRORED + EPS)) THEN
     rot2 180
+
     ROT2 180
 
     _nTrans = _nTrans + 1
 
     _nTrans = _nTrans + 1
endif
+
ENDIF
 
</pre>
 
</pre>
 +
 
== Script interface ==
 
== Script interface ==
 
<pre>
 
<pre>
Ligne 136 : Ligne 141 :
 
0, 0, 1, "", fontnames
 
0, 0, 1, "", fontnames
 
</pre>
 
</pre>
 +
On peut aussi récupérer la liste directement en utilisant ces noms de paramètres (type texte) :
 +
* fontType
 +
* fontType2
 +
* fontType3
 +
=== Liste des images chargées en bibliothèques ===
 +
En utilisant ces noms de paramètres (type texte) :
 +
* gs_picture_name
 +
* gs_picture_name_2D
 +
=== Icones mise en forme de texte ===
 +
Pour avoir les icônes Gras, Italique, Souligné et Barré qui gère automatiquement la valeur du code pour mettre en forme un texte dans un style :
 +
<pre>ui_textstyle_infield "styleTexte", 1+2+4+128, x, y, buttonWidth, buttonHeight, buttonOffsetX</pre>
 +
("styleTexte" est un paramètre de type entier)
 +
<pre>define style name fontType, size, anchor, styleTexte</pre>
 +
 
== Macros ==
 
== Macros ==
 
=== Suis-je une macro ? ===
 
=== Suis-je une macro ? ===

Version actuelle datée du 22 janvier 2024 à 14:27

HOTSPOT

2D

Boite englobante

HOTSPOT2 0, 0
HOTSPOT2 a, 0
HOTSPOT2 0, b
HOTSPOT2 a, b
HOTSPOT2 -a/2, -b/2
HOTSPOT2 a/2, -b/2
HOTSPOT2 -a/2, b/2
HOTSPOT2 a/2, b/2

Déplacements

Sur l'axe X
HOTSPOT2  0, 0, unID, a, 1+128	: unID=unID+1
HOTSPOT2 -1, 0, unID, a, 3		: unID=unID+1
HOTSPOT2  a, 0, unID, a, 2		: unID=unID+1
Sur l'axe Y
HOTSPOT2 0,  0, unID, b, 1+128	: unID=unID+1
HOTSPOT2 0,	-1, unID, b, 3		: unID=unID+1
HOTSPOT2 0,  b, unID, b, 2		: unID=unID+1
Sur les deux axes en même temps
HOTSPOT2  0,  b, unID, a, 1+128	: unID=unID+1
HOTSPOT2 -1,  b, unID, a, 3		: unID=unID+1
HOTSPOT2  a,  b, unID, a, 2		: unID=unID+1
HOTSPOT2  a,  0, unID, b, 1+128	: unID=unID+1
HOTSPOT2  a, -1, unID, b, 3		: unID=unID+1
HOTSPOT2  a,  b, unID, b, 2		: unID=unID+1
Rotation
HOTSPOT2  0, 0, unID, angle, 6							: unID=unID+1
HOTSPOT2  A, 0, unID, angle, 4+128						: unID=unID+1
HOTSPOT2  A*COS(angle), A*SIN(angle), unID, angle, 5	: unID=unID+1

3D

Déplacements

Sur l'axe X
HOTSPOT  0, 0, 0, unID, a, 1+128	: unID=unID+1
HOTSPOT -1, 0, 0, unID, a, 3		: unID=unID+1
HOTSPOT  a, 0, 0, unID, a, 2		: unID=unID+1
Sur l'axe Y
HOTSPOT 0,  0,	0, unID, b, 1+128	: unID=unID+1
HOTSPOT 0,	-1,	0, unID, b, 3		: unID=unID+1
HOTSPOT 0,  b,	0, unID, b, 2		: unID=unID+1
Sur l'axe Z
HOTSPOT 0, 0,  0, unID, ZZYZX, 1+128	: unID=unID+1
HOTSPOT 0, 0,	-1, unID, ZZYZX, 3		: unID=unID+1
HOTSPOT 0, 0,  ZZYZX, unID, ZZYZX, 2	: unID=unID+1

HOTLINE

Boite englobante

HOTLINE2 0, 0, a, 0
HOTLINE2 a, 0, a, b
HOTLINE2 0, b, a, b
HOTLINE2 0, 0, 0, b

Gestion de l'affichage

Affichage différent en fonction de l'étage d'implantation

  • L'objet placé doit être paramétré en "Visible sur tous les étages"
zz = REQUEST ("Story", "", index1, story_name) ! Étage affiché
zz = REQUEST ("Home_story", "", index2, home_story_name) ! Étage d'implantation de l'objet

IF index1 > index2 THEN
	!Symbole 2D affiché au dessus de l'étage d'implantation
ENDIF
IF index1 = index2 THEN
	!Symbole 2D affiché sur l'étage d'implantation
ENDIF
IF index1 < index2 THEN
	!Symbole 2D affiché en dessous de l'étage d'implantation
ENDIF

Orientation 2D

MUL2 1 - 2 * SYMB_MIRRORED, 1
r = request ("View_Rotangle", "", _angleViewRot)

! Actual rotation of the 2D symbol:	
_totalRotate	= (SYMB_ROTANGLE + _angleViewRot) MOD 360

! Count the number of transformations of the 
! coordinate system in different cases
_nTrans = 0

Toujours horizontal

rot2 _totalRotate * (SYMB_MIRRORED - not(SYMB_MIRRORED))
_nTrans = _nTrans + 1

Lisible

IF (_totalRotate > (90 + 90*SYMB_MIRRORED + EPS) & _totalRotate < (270 + 90*SYMB_MIRRORED + EPS)) THEN
    ROT2 180
    _nTrans = _nTrans + 1
ENDIF

Script interface

ui_dialog `Paramètres personnalisés`,444,266

Checkbox (texte cliquable)

ui_infield{3} "bool-parameter", 240, 30, 110, 15,
7, "",
2,
1, 20, 20, 20, 20,
0, "Texte", 0,
1, "Texte", 1

Liste de polices

dim fontnames[]
n = REQUEST ("FONTNAMES_LIST", "", fontnames)
ui_outfield `Police`,		10, 14, 100, 15 
ui_custom_popup_infield "sampleName", 	115, 10, 150, 20,
	0, 0, 1, "", fontnames

On peut aussi récupérer la liste directement en utilisant ces noms de paramètres (type texte) :

  • fontType
  • fontType2
  • fontType3

Liste des images chargées en bibliothèques

En utilisant ces noms de paramètres (type texte) :

  • gs_picture_name
  • gs_picture_name_2D

Icones mise en forme de texte

Pour avoir les icônes Gras, Italique, Souligné et Barré qui gère automatiquement la valeur du code pour mettre en forme un texte dans un style :

ui_textstyle_infield "styleTexte", 1+2+4+128, x, y, buttonWidth, buttonHeight, buttonOffsetX

("styleTexte" est un paramètre de type entier)

define style name fontType, size, anchor, styleTexte

Macros

Suis-je une macro ?

nameM=""
sts=REQUEST("name_of_main","",nameM)
IF NOT(nameM="") THEN
  PRINT nameM+" is CALLing me!"
ELSE
  PRINT "I am free!"
ENDIF

Mathématiques

Comparaisons

ABS( A - B )>EPS   ! A<>B
ABS( A - B )<EPS   ! A=B
A - B < EPS        ! A<=B
A - B < -EPS       ! A<B
B - A > EPS        ! A<B
B - A < EPS        ! A>=B
B - A < -EPS       ! A>B
A - B > EPS        ! A>B

Trucs & astuces divers

Transformer POLY_B{5} en PRISM_ à l'aide d'une recherche REGEX

Dans un éditeur de texte supportant les recherches REGEX (Regular Expression) :

Chercher : (?-s)^\t*poly2_b\{5\} *([0-9]+),(?s).*? 0, $

Remplacer par : PRISM_ \1, b,